Меню

Ошибка com порта завышено время последовательного вывода

Evgenyi_Timakoff

Новичок
Сообщения: 18
Зарегистрирован: 13 фев 2018, 08:57
Репутация: 0
Настоящее имя: Евгений Тимаков
Контактная информация:

CNC 3018. Ошибка последовательного порта 11

Люди, заранее извиняюсь если было уже,но я ничего не нашел. Станок CNC3018 . При работе периодически вылазит ошибка : Ошибка последовательного порта 11:Присоединённое к системе устройство не работает.
Станок останавливается , шпиндель крутит, программа тоже на месте стоит , но при этом кнопки все не активны. Приходится ждать кнопку на плате станка, втыкать и втыкать назад кабель, перезапускать программу, только тогда станок обнаруживается

Такое вылазит и под на WinXap и на Win7. поиск в сети и по форуму результатов не дал. Выручайте пожалуйста. Всем добра

Вложения
IMG_20180212_213609.jpg (9365 просмотров) <a class='original' href='./download/file.php?id=132310&sid=d09170037f4ac9d791e89aaeaac2bb7f&mode=view' target=_blank>Загрузить оригинал (5.25 МБ)</a>

Аватара пользователя

selenur

Почётный участник
Почётный участник
Сообщения: 4576
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1614
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

selenur » 13 фев 2018, 11:07

Теряется связь между контроллером и компьютером, причины обычно стандартные:
1) Длинный кабель
2) Наводки от шпинделя, если всё питается от одного БП
3) Плохой контакт, который от вибраций может отходить.

peratron

Мастер
Сообщения: 605
Зарегистрирован: 05 фев 2017, 07:43
Репутация: 36
Настоящее имя: Eugene
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

peratron » 13 фев 2018, 14:07

selenur писал(а):Теряется связь между контроллером и компьютером, причины обычно стандартные:
1) Длинный кабель
2) Наводки от шпинделя, если всё питается от одного БП
3) Плохой контакт, который от вибраций может отходить.

Я б поминял приоритеты:
Плохой контакт, который от вибраций может отходить. 90%
Наводки от шпинделя, если всё питается от одного 5%
ПЛОХОЙ кабель 5%

ma3ypuk

Новичок
Сообщения: 11
Зарегистрирован: 18 мар 2018, 12:52
Репутация: 0
Настоящее имя: Павел Александрович
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

ma3ypuk » 21 мар 2018, 00:33

Evgenyi_Timakoff писал(а):ma3ypuk, снял плату управления со станка и прикрутил ее на стену. чтоб вибрации вообще не было.

Благодарю Вас! День первый, полёт нормальный! Посмотрим, что дальше. Надеюсь всё теперь будет в порядке!

Selektor

Новичок
Сообщения: 14
Зарегистрирован: 02 фев 2018, 04:48
Репутация: 2
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Selektor » 21 мар 2018, 05:31

Всем привет. У меня подобная проблема.

Станок 1310
Плата benbox с контроллером клоном nano.

Стоит grbl 0.9j. Программа grblControl.
Проблема как и описано выше. Во время выполнения программы просто «зависает» станок. Сначало останавливается передвижение инструмента в программе, затем в строке состояния появляется надпись «Нет соединения». И через некоторое время станок останавливает выполнение, при том шпиндель продолжает вращаться. Восстанавливается связь между компьютером и станком только после того, как я вытащу и вставлю опять шнур USB в комп.

Что я уже попробовал:
— Поменять шнур — Пробовал и короткий и длинный и брендовых производителей и кустарщину.
— Открутил плату от станка, установил станок на мягкую подложку, дабы исключить вибрации, так же изолировал плату от вибрации.
— Увеличить и уменьшить время отклика.
— Менял обороты шпинделя (в программе от 1000 до 500) — были предположения, что не хватает напряжения, и шпиндель в какой то момент «перебирает» мощности и отжирает ее у платы (уж простите если совсем нубское предположение :-)

Хотелось бы спросить у понимающих и более опытных коллег, что же дальше попробовать?
Есть в голове еще вариант — купить ардуино нано и попробовать самостоятельно в нее прошить и настроить Grbl. Может ли быть в ней проблема? Или это бессмысленно?

Заказ пока еще не закрыт на али, еще общаюсь с продавцом.

Буду очень признателен за советы и мнения!

Последний раз редактировалось Selektor 21 мар 2018, 06:20, всего редактировалось 1 раз.

Аватара пользователя

Rom327

Почётный участник
Почётный участник
Сообщения: 2839
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 410
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Rom327 » 21 мар 2018, 05:59

Selektor писал(а):Всем привет. У меня подобная проблема.

Попробуй запустить выполнение прогаммы с выключенным шпинделем.
Проверь Windows на предмет энергосбережения, может usb «засыпает»

peratron

Мастер
Сообщения: 605
Зарегистрирован: 05 фев 2017, 07:43
Репутация: 36
Настоящее имя: Eugene
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

peratron » 21 мар 2018, 10:58

Selektor писал(а):Хотелось бы спросить у понимающих и более опытных коллег, что же дальше попробовать?

Источник зла — не кабель, а плохой контакт в разъёме!
Потому простейший вариант: притянуть фишку к разъёму пружиной (канцелярской резинкой).

Гораздо надёжней: применить другой разъём, припаявшись напрямую в обход УСБ.

ХИНТ: применение виброразвязки для платы не решает проблему контакта! Конструкция разъёма такова, что ошибки линии неизбежны…

Selektor

Новичок
Сообщения: 14
Зарегистрирован: 02 фев 2018, 04:48
Репутация: 2
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Selektor » 21 мар 2018, 18:12

Итак
— Установил запрет выключение портов в плане энергосбережения в системе
— Соединил общий провод с корпусом шпинделя
— Попробовал выполнение программы без подключенного к шилду шпинделя (и с подключенным конечно)

В итоге
— При включенном шпинделе программа обрывается в 100% случаев
— При выключенном шпинделе программа в 100% случаев выполняется успешно

Коллеги, подскажите, какие можно сделать выводы на основе результатов этих экспериментов? И куда двигаться дальше?

ПС: С перепайкой коннектора УСБ пока повременю. Нет паяльника, да и паять не умею ). Но если надо конечно научусь.
Кстати во время выполнения программы всячески (весьма настойчиво) пытался шевелить разъем с подключенным в него шнуром (на платке), программа не обрывалась, сбоев не было. Понимаю конечно, что возможно это совсем не показатель плохого контакта.

Что касается совета по поводу притянуть пружиной или концелярской резинкой контакт к плате. По направление к плате его притягивать. Т.е. чтобы разъем своими контактами (ножками) «плотнее к плате прилегал»?

peratron

Мастер
Сообщения: 605
Зарегистрирован: 05 фев 2017, 07:43
Репутация: 36
Настоящее имя: Eugene
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

peratron » 21 мар 2018, 18:23

Selektor писал(а):Коллеги, подскажите, какие можно сделать выводы на основе результатов этих экспериментов? И куда двигаться дальше?

Вывод назван выше — плохой контакт в усб-разъёмах!!!

Причём, не только на стороне станка, но и на стороне компа. Просто комп не вибрирует до такой степени, как шпиндель и потому вероятность сбоя с этой стороны существенно ниже — но всё равно она не нулевая: достаточно пошевелить кабель случайно и получить сбой.

Эксперимент предельно прост: зафиксируйте, как указано фишки резинками — и гоняйте, пока не устанете…

Selektor писал(а):По направление к плате его притягивать. Т.е. чтобы разъем своими контактами (ножками) «плотнее к плате прилегал»?

Ну, разумеется…

Niko1960

Новичок
Сообщения: 4
Зарегистрирован: 21 мар 2018, 06:29
Репутация: 1
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Niko1960 » 21 мар 2018, 19:05

Сегодня тоже продолжил эксперименты со своим станком. При увеличении оборотов до 800 произошел сбой (как у Вас). При 600-700 работает нормально. Ранее делал все как было описано. USB притянуть резинкой. Менял компьютер, шнуры, запитывал от разных источников, снимал плату управления со станка. Привод шпинделя запитал от отдельного БП. При исполнении программы когда шпиндель поднят все нормально, когда начинаеш резать, программа останавливается (потеря соединения). Снял двигатель шпинделя с станка, держу в руках (никакого механического воздействия) программа все равно останавливается. Посмотрел на коллектор двигателя ( где щетки) там искры как горошины, поэтому мех воздействие имеет место быть, но я считаю нужно копать по уменьшению искрения щеток. При уменьшении (увеличении) оборотов (двигатель коллекторный,обороты зависят от напряжения), а также при уменьшении (увеличении) нагрузки на валу двигателя соответственно увеличивается (уменьшается) искрение щеток коллектора. Я не исключаю остальных воздействий, но уменя пока так. Нужно или экранировать двигатель, кстате корпус висит в воздухе, или уменьшать напряжение, или может кто то посоветует что то другое. Буду очень благодарен за дельный совет.

Аватара пользователя

Rom327

Почётный участник
Почётный участник
Сообщения: 2839
Зарегистрирован: 03 апр 2015, 13:23
Репутация: 410
Настоящее имя: Роман
Откуда: Подольск
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Rom327 » 21 мар 2018, 21:20

Selektor писал(а):Коллеги, подскажите, какие можно сделать выводы на основе результатов этих экспериментов? И куда двигаться дальше?

Надо убирать помеху от искрения щеток. Попробуй провода, идущие к шпинделю намотать на ферритовое кольцо. Типа как тут, двумя проводами:

Фильтр.jpg
Фильтр.jpg (8.72 КБ) 9019 просмотров

Niko1960

Новичок
Сообщения: 4
Зарегистрирован: 21 мар 2018, 06:29
Репутация: 1
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

Niko1960 » 21 мар 2018, 21:33

Провода питания на двигатель шпинделя скручены в косичку и перед двигателем и установлено ферритовое кольцо подобным образом. Результат отрицательный. Все таки интересно докопаться до истины. Завтра на SDR приёмника попробую посмотреть уровень помех. Все таки что то дает помеху, что сбрасывает программу.

ktki

Опытный
Сообщения: 127
Зарегистрирован: 07 янв 2018, 22:06
Репутация: 19
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

ktki » 21 мар 2018, 21:57

По питанию шпинделя конденсатор блокировочный 0,1-1мкф и землю компа и контролера отсоедините от земли станка вообще без заземления попробуйте и главное проследите, чтобы по питанию сети у вас земли общей не было. После попробуйте и сам станок его железо от земли отсоединить.

Аватара пользователя

iMaks-RS

Мастер
Сообщения: 1681
Зарегистрирован: 10 июл 2017, 09:25
Репутация: 185
Настоящее имя: Maks
Откуда: От туда.
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

iMaks-RS » 21 мар 2018, 22:01

процессор питается от usb.. маломальский дребезг создаёт проблему.. может быть два диода + дс-дс понижайка + акб смогут решить проблему? Ну или хотя-бы электролит на 1000мкФ*10В по +5В usb..

Ещё с завода может быть печальная пайка.. мне пришлось пропаивать панельки под драйвера..

Аватара пользователя

moscow

Мастер
Сообщения: 554
Зарегистрирован: 27 фев 2018, 20:52
Репутация: 70
Настоящее имя: Олег Милантьев
Откуда: ПодКраснодар
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

moscow » 21 мар 2018, 22:13

iMaks-RS писал(а):процессор питается от usb..

Схему не видел, однако обычно питают от usb и линейного стаба. То есть по пропаданию usb питание проца идёт от 24В входа.

Другое дело, что драйвер ch340 без реконнекта, потери на uart меж atmega и ch340 при потери связи и т.п… всё это ведёт к необратимому сбою :(

peratron

Мастер
Сообщения: 605
Зарегистрирован: 05 фев 2017, 07:43
Репутация: 36
Настоящее имя: Eugene
Контактная информация:

Re: CNC 3018. Ошибка последовательного порта 11

Сообщение

peratron » 21 мар 2018, 23:53

moscow писал(а):Схему не видел, однако обычно питают от usb и линейного стаба. То есть по пропаданию usb питание проца идёт от 24В входа.

Схема дятла тут уже пробегала.

ХИНТ: грабле для обнаружения девайса достаточно только усб — 24/12 идёт на шпиндель/лазер/вентилятор и проц прекрасно обходится без них.
И скорей всего сбой обусловлен именно пропаданием питания на проце из-за плохого контакта усб-питателя…

Alexxx9691

Alexxx9691

Регистрация
04.02.2020
Сообщения
40
Реакции
16
Баллы
28
Город
Краснодар

  • #1

Сег.первый,раз (после получения)запустил станок в работу.Столкнулся с такой проблемой-Ошибка последовательного порта 11.Прога виснет мотор работает.Отключение питания и выдергивание кабеля,помогало завести софт.Перепробовав несколько вариантов решения проблемы,помогло навешивание ферритовых фильтров на провода питания мотора шпинделя.Проб.,решена.Может,кому поможет….

  • 20200210_131553.jpg

    20200210_131553.jpg

    158.4 KB · Просмотры: 80

demyuri

demyuri

Регистрация
31.10.2019
Сообщения
9 042
Реакции
8 014
Баллы
200
Возраст
48
Адрес
РОССИЯ
Веб-сайт
youtu.be
Город
Барнаул
Имя
Юрий
Станок
3018 ПРО, доработанный
Плата
Дятел 3.4
Прошивка
1.1f

  • #2

На долго ли? (n)

Alexxx9691

Alexxx9691

Регистрация
04.02.2020
Сообщения
40
Реакции
16
Баллы
28
Город
Краснодар

  • #3

весь цикл проходит,без зависаний…

demyuri

demyuri

Регистрация
31.10.2019
Сообщения
9 042
Реакции
8 014
Баллы
200
Возраст
48
Адрес
РОССИЯ
Веб-сайт
youtu.be
Город
Барнаул
Имя
Юрий
Станок
3018 ПРО, доработанный
Плата
Дятел 3.4
Прошивка
1.1f

  • #4

Дай бог! (y)
При увеличении нагрузки, величина помех возрастет. Может не хватить колечек.
Ну это я так, брюзжу потихоньку. :)

Alexxx9691

Alexxx9691

Регистрация
04.02.2020
Сообщения
40
Реакции
16
Баллы
28
Город
Краснодар

  • #5

To demyuri
с 8-ми.утра,не выключался.Фрезеровка,сверление,обрезка(довольно сложные задачи ему ставил).Все работает,без проблем.

ЗАКЛЮЧИТЕЛЬНОЕ ОБНОВЛЕНИЕ
Это была наша прошивка все время. Смущаю до некоторой степени, но я счастлив, что мы можем двигаться вперед, и я могу учить изучение Java еще на один день. Мой ответ ниже.

UPDATE
Поэтому я более или менее отказался от этого. Я думаю, что это ошибка, которая сводится к API, но у меня нет ни времени, ни ресурсов, ни навыков, чтобы добраться до сути. Я думаю, что существует некоторое аппаратное обеспечение, которому Windows просто дает средний палец. Я загрузил Eclipse, переключился на Java и попытаюсь посмотреть, работает ли это. Если нет, ты увидишь меня здесь. Тем не менее, я был бы очень рад решить эту проблему, и если у кого есть время или желание углубиться в это, я бы с удовольствием посмотрел, что вы придумали. Очевидно, я буду периодически проверять это время. Пожалуйста, убедитесь, что вы «@» меня в своих комментариях, поэтому меня предупреждают.


ОРИГИНАЛЬНАЯ ПОЧТА

Я знаю, что есть несколько других людей, которые занимаются этой проблемой, но я надеялся, что кто-то сможет мне помочь. Я пытаюсь подключиться к COM-порту, но я получаю исключение IO, когда пытаюсь использовать команду serialport.Open():

System.IO.IOException: The parameter is incorrect.

   at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
   at System.IO.Ports.InternalResources.WinIOError()
   at System.IO.Ports.SerialStream.InitializeDCB(Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Boolean discardNull)
   at System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeout, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNull, Byte parityReplace)
   at System.IO.Ports.SerialPort.Open()
   at *programtitlehere.cs*:line 90

Я использую Stellaris LM4F232 для эмуляции COM-порта. Я могу открыть, получить доступ и получить хорошие результаты с помощью Termite (терминальной программы), но всякий раз, когда я пытаюсь работать с Visual Studio, он даже не подключается, и я получаю эту ошибку. Теперь я даже не знаю, что означает эта ошибка, и я, несмотря на попытки читать в другом месте, все еще чувствую себя потерянным.

Может кто-нибудь объяснить мне, что здесь происходит, и, может быть, я начну пытаться понять это? Я могу добавить больше кода, но, честно говоря, там не так много; все свойства устройства serialport являются нормальными, и это происходит только с этим устройством (я могу использовать MSP430 без проблем с теми же деталями).

Мой код показан ниже для людей, которые хотели бы его увидеть (обратите внимание, что это всего лишь «песочница», а не фактическая программа, но симптомы идентичны):

  try
        {
            serialPort1.PortName = "COM5";
            serialPort1.Open();
            if (serialPort1.IsOpen == true)
            {
                textBox1.Text = "CONNECTED";
            }
            else
            {
                textBox1.Text = "NOT CONNECTED";
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error: " + ex.ToString(), "ERROR");
        }

а остальные настройки выполняются с помощью диспетчера свойств (только разница в бодах равна 230400, все остальные по умолчанию).
Я могу открыть COM4 с этим (MSP430), который для всех целей и задач является идентичным устройством. Я могу открыть COM5 с Termite, поэтому я знаю, что соединение хорошее). И нет, я не пытаюсь открыть их одновременно. Если вам нужна дополнительная информация, дайте мне знать, и я могу опубликовать больше.

Спасибо!

EDIT: я на третий день пытаюсь понять это и до сих пор не повезло. Я не понимаю, почему я могу получить доступ к этому COM через терминальную программу, а не по своему усмотрению, когда я вижу, что нет абсолютно никакой разницы. Кто-нибудь знает о программе, которая может «исследовать» COM-порт, чтобы увидеть его свойства (помимо диспетчера Windows, я имею в виду)? Я становлюсь довольно расстроенным и вроде как стоять в моем проекте, пока не узнаю об этом…

EDIT2: Я нашел очевидное обходное решение, но мне еще нужно заставить его работать здесь. Теперь я получаю несколько разных ошибок ввода-вывода, но по крайней мере это движение (не уверен, что это прогресс). Я также узнал, что это ошибка .NET, которая существует с 2.0. Я все равно буду любить любую помощь, но если я это выясню, я отчитаю. Код Zach (обходной путь, связанный выше) показан ниже:

using System;
using System.IO;
using System.IO.Ports;
using System.Runtime.InteropServices;
using System.Text;
using Microsoft.Win32.SafeHandles;

namespace SerialPortTester
{
public class SerialPortFixer : IDisposable
{
    public static void Execute(string portName)
    {
        using (new SerialPortFixer(portName))
        {
        }
    }
    #region IDisposable Members

    public void Dispose()
    {
        if (m_Handle != null)
        {
            m_Handle.Close();
            m_Handle = null;
        }
    }

    #endregion

    #region Implementation

    private const int DcbFlagAbortOnError = 14;
    private const int CommStateRetries = 10;
    private SafeFileHandle m_Handle;

    private SerialPortFixer(string portName)
    {
        const int dwFlagsAndAttributes = 0x40000000;
        const int dwAccess = unchecked((int) 0xC0000000); 

        if ((portName == null) || !portName.StartsWith("COM", StringComparison.OrdinalIgnoreCase))
        {
            throw new ArgumentException("Invalid Serial Port", "portName");
        }
        SafeFileHandle hFile = CreateFile(@"\." + portName, dwAccess, 0, IntPtr.Zero, 3, dwFlagsAndAttributes,
                                          IntPtr.Zero);
        if (hFile.IsInvalid)
        {
            WinIoError();
        }
        try
        {
            int fileType = GetFileType(hFile);
            if ((fileType != 2) && (fileType != 0))
            {
                 throw new ArgumentException("Invalid Serial Port", "portName");
            }
            m_Handle = hFile;
            InitializeDcb();
        }
        catch
        {
            hFile.Close();
            m_Handle = null;
            throw;
        }
    }

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern int FormatMessage(int dwFlags, HandleRef lpSource, int dwMessageId, int dwLanguageId,
                                            StringBuilder lpBuffer, int nSize, IntPtr arguments);

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern bool GetCommState(SafeFileHandle hFile, ref Dcb lpDcb);

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern bool SetCommState(SafeFileHandle hFile, ref Dcb lpDcb);

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern bool ClearCommError(SafeFileHandle hFile, ref int lpErrors, ref Comstat lpStat);

    [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
    private static extern SafeFileHandle CreateFile(string lpFileName, int dwDesiredAccess, int dwShareMode,
                                                    IntPtr securityAttrs, int dwCreationDisposition,
                                                    int dwFlagsAndAttributes, IntPtr hTemplateFile);

    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern int GetFileType(SafeFileHandle hFile);

    private void InitializeDcb()
    {
        Dcb dcb = new Dcb();
        GetCommStateNative(ref dcb);
        dcb.Flags &= ~(1u << DcbFlagAbortOnError);
        SetCommStateNative(ref dcb);
    }

    private static string GetMessage(int errorCode)
    {
        StringBuilder lpBuffer = new StringBuilder(0x200);
        if (
            FormatMessage(0x3200, new HandleRef(null, IntPtr.Zero), errorCode, 0, lpBuffer, lpBuffer.Capacity,
                          IntPtr.Zero) != 0)
        {
            return lpBuffer.ToString();
        }
        return "Unknown Error";
    }

    private static int MakeHrFromErrorCode(int errorCode)
    {
        return (int) (0x80070000 | (uint) errorCode);
    }

    private static void WinIoError()
    {
        int errorCode = Marshal.GetLastWin32Error();
        throw new IOException(GetMessage(errorCode), MakeHrFromErrorCode(errorCode));
    }

    private void GetCommStateNative(ref Dcb lpDcb)
    {
        int commErrors = 0;
        Comstat comStat = new Comstat();

        for (int i = 0; i < CommStateRetries; i++)
        {
            if (!ClearCommError(m_Handle, ref commErrors, ref comStat))
            {
                 WinIoError();
            }
            if (GetCommState(m_Handle, ref lpDcb))
            {
                 break;
            }
            if (i == CommStateRetries - 1)
            {
                 WinIoError();
            }
        }
    } 

    private void SetCommStateNative(ref Dcb lpDcb)
    {
        int commErrors = 0;
        Comstat comStat = new Comstat(); 

        for (int i = 0; i < CommStateRetries; i++)
        {
             if (!ClearCommError(m_Handle, ref commErrors, ref comStat))
             {
                 WinIoError();
             }
             if (SetCommState(m_Handle, ref lpDcb))
             {
                 break;
             }
             if (i == CommStateRetries - 1)
             {
                 WinIoError();
             }
        }
    }

    #region Nested type: COMSTAT

    [StructLayout(LayoutKind.Sequential)]
    private struct Comstat
    {
        public readonly uint Flags;
        public readonly uint cbInQue;
        public readonly uint cbOutQue;
    }

    #endregion

    #region Nested type: DCB

    [StructLayout(LayoutKind.Sequential)]
    private struct Dcb
    {
        public readonly uint DCBlength;
        public readonly uint BaudRate;
        public uint Flags;
        public readonly ushort wReserved;
        public readonly ushort XonLim;
        public readonly ushort XoffLim;
        public readonly byte ByteSize;
        public readonly byte Parity;
        public readonly byte StopBits;
        public readonly byte XonChar;
        public readonly byte XoffChar;
        public readonly byte ErrorChar;
        public readonly byte EofChar;
        public readonly byte EvtChar;
        public readonly ushort wReserved1;
    }

    #endregion

    #endregion
}

internal class Program
{
    private static void Main(string[] args)
    {
        SerialPortFixer.Execute("COM1");
        using (SerialPort port = new SerialPort("COM1"))
        {
            port.Write("test");
        }
    }
}
} 

EDIT3: День 6: Я все еще отключаюсь. Мой водный рацион низкий, но я все еще боюсь. Я чувствую, что помощь должна быть на горизонте. Тот, кто находит этот журнал, возвращает мои останки в Канаду и находит Николь. Скажи ей, что я люблю ее.

Но серьезно, я понятия не имею, что вызывает эту проблему. Мне интересно, чисто ли это на встроенной стороне; возможно, потому что это USB-to-go, или потому, что устройство также может быть хостом. Кто-нибудь сталкивался с этой проблемой? Это не объясняет, почему я могу использовать Termite (терминальная программа, для тех, кто просто присоединяется к нам). Я пытался найти терминальную программу с открытым исходным кодом, которая: а) работает и б) видит а). Как обычно, я отчитаю, если я открою здесь эту проблему, так как теперь я нашел бесчисленные форумы, на которых звучит эта проблема, относящаяся к 2006 году.

EDIT4: Так, в соответствии с приведенным советом, я загрузил приложение для мониторинга портов (я получил Eltima Serial Port Monitor), и он выглядит как проблема с бодом:

Изображение 31111

но, как ни странно, какой бы бод я ни устанавливал, он все еще терпит неудачу. А также может кто-нибудь объяснить, что означает «вверх-вниз»? Я пробовал искать его, но ключевые слова слишком общие. Как обычно, я буду сообщать о любых изменениях.

Кроме того, для записи я могу подключиться с помощью Eltima при бодах 115200 (так же, как Termite). К сожалению, это не работает в Visual Studio.

EDIT5: Наш сюжет имеет неожиданное завихрение. Я отслеживал, что происходит, когда Termite подключается к рассматриваемому COM-порту и BLAM! Термиты выдают ту же ошибку, что и моя программа, но игнорируют ее. Гений, да? Sloppy, но он работает. Теперь мне нужно научиться игнорировать IOExceptions. Я отчитаю, когда выясню, как это сделать.

EDIT6: Итак, как выясняется, это проблема скорости в бодах, но она идет глубже. Я использую программное обеспечение для мониторинга последовательного порта Eltima, и он очень интуитивно понятен и прост в использовании. Я бы рекомендовал его. После некоторых исследований я узнал, что вы не можете игнорировать это исключение и все еще подключаться к последовательному порту с использованием библиотеки .NET. Поэтому я должен углубиться в API Win32 и написать свой собственный. Я нашел несколько страниц, которые касаются этого, но, честно говоря, я никогда не делал ничего подобного раньше, так что может быть какое-то время, пока я не отчитаюсь, но я обязательно это рассмотрю и вернусь к каждому. Есть слишком много людей, которые страдают от этой проблемы. Я нашел довольно много форумов и веб-сайтов, где я могу видеть те же самые симптомы, но никто на самом деле ничего не сделал, кроме того, сказал: «Да,.NET сосет». Я планирую писать полный статический класс библиотеки, а затем публиковать либо на своем веб-сайте, и здесь, и где бы я мог. Надеемся, что .NET заметит (эта ошибка существует с версии 2.0). Я отчитаю, когда это будет сделано!

EDIT7: Это намного сложнее, чем я думал.

EDIT8: Я не знаю, если кто-то следит за этим или нет, но я хотел сказать, что я все еще нахожусь, но я выхожу из города на неделю в командировке. Я все еще рад услышать предложения и альтернативные идеи, хотя!

I’ve got an idea. Your board isn’t being recognized. Try unplugging the arduino and see if Com 1 is still there. Sometimes it can recognize mice and other devices as Com 1 or 2 instead of your arduino.

On some of my development machines after everything settled out my devices will show up on Com 4 and 5 when I am working on two at a time.

If this is not the case go into the device manager and see if you can see the board listed.

I would also wonder if you have your sensor hooked to digital pins 0 and 1. These pins are used for your serial line on usb. So if you have anything such as a sensor hooked to them it may be generating data keeping the line busy instead of it being able to negotiate.

I had this happen when setting up hc-05 for the first time. I realized I had to keep the chip off while flashing or I would end up with errors or Com busy.

Please provide your pinout and basic information about the Com ports available on the ide. Also consider that you will need to specify the correct board as it will default to an uno.

Programmer not in sync issues generally occur because the board is recognized but cannot be written to for one reason or another.

  • the board has something plugged into digital 1 and 0 which are serial i/o pins
  • the board programmer is busy running your last batch of code
  • usb error

So

  • try a different cord
  • try unplugging potential wiring issues and see if it can be written to without anything on it
  • try holding down reset on the board until the board when you try to write to it until just after it finishes compiling to clear any potential programing issues

In my experience mega have a tendency to suffer from the last one.

I’ve got an idea. Your board isn’t being recognized. Try unplugging the arduino and see if Com 1 is still there. Sometimes it can recognize mice and other devices as Com 1 or 2 instead of your arduino.

On some of my development machines after everything settled out my devices will show up on Com 4 and 5 when I am working on two at a time.

If this is not the case go into the device manager and see if you can see the board listed.

I would also wonder if you have your sensor hooked to digital pins 0 and 1. These pins are used for your serial line on usb. So if you have anything such as a sensor hooked to them it may be generating data keeping the line busy instead of it being able to negotiate.

I had this happen when setting up hc-05 for the first time. I realized I had to keep the chip off while flashing or I would end up with errors or Com busy.

Please provide your pinout and basic information about the Com ports available on the ide. Also consider that you will need to specify the correct board as it will default to an uno.

Programmer not in sync issues generally occur because the board is recognized but cannot be written to for one reason or another.

  • the board has something plugged into digital 1 and 0 which are serial i/o pins
  • the board programmer is busy running your last batch of code
  • usb error

So

  • try a different cord
  • try unplugging potential wiring issues and see if it can be written to without anything on it
  • try holding down reset on the board until the board when you try to write to it until just after it finishes compiling to clear any potential programing issues

In my experience mega have a tendency to suffer from the last one.

На чтение 6 мин. Просмотров 6.3k. Опубликовано 03.09.2019

Последовательный порт может быть полезен, но некоторые пользователи сообщают, что Невозможно открыть последовательный порт на своем ПК. Это может быть большой проблемой, и в сегодняшней статье мы покажем вам, как исправить эту ошибку.

Проблемы с последовательным портом могут быть довольно раздражающими, особенно если вы склонны часто использовать последовательный порт. Говоря о таких проблемах, вот некоторые связанные с ними проблемы, о которых сообщили пользователи:

  • Невозможно открыть соединение с com1 Windows 10, com3 . Эта проблема может иногда возникать, если у вас нет необходимых драйверов. Чтобы исправить это, обязательно обновите драйвер последовательного порта и проверьте, решает ли это вашу проблему.
  • Замазка не может открыть последовательный порт Windows 10 . Иногда эта проблема может возникать из-за определенных служб Windows. Это не главная проблема, и вы можете исправить ее, отключив эти службы.
  • Невозможно открыть последовательный порт. Доступ к com1 запрещен . Эта проблема может возникать из-за глюков с последовательным портом. Чтобы устранить проблему, временно отключите последовательный порт и проверьте, помогает ли это.
  • Невозможно открыть com-win win code code 5, 123, 32 . Это некоторые распространенные проблемы, которые могут возникнуть с последовательным портом, но большинство из них можно исправить с помощью одного из наших решений.

Содержание

  1. Не удается открыть сообщение последовательного порта в Windows 10, как это исправить?
  2. Решение 1. Убедитесь, что у вас есть необходимые драйверы
  3. Решение 2. Убедитесь, что порт не открыт/отсоедините кабель
  4. Решение 3. Остановите службу факсов и сканирования Windows
  5. Решение 4. Отключите последовательный порт в диспетчере устройств
  6. Решение 5. Попробуйте использовать другой кабель
  7. Решение 6 – Перезагрузите устройство
  8. Решение 7. Переустановите драйвер последовательного порта
  9. Решение 8. Убедитесь, что система обновлена

Не удается открыть сообщение последовательного порта в Windows 10, как это исправить?

  1. Убедитесь, что у вас есть необходимые драйверы
  2. Убедитесь, что порт не открыт/отсоедините кабель
  3. Остановите службу факсов и сканирования Windows .
  4. Отключите последовательный порт в диспетчере устройств
  5. Попробуйте использовать другой кабель
  6. Перезагрузите устройство
  7. Переустановите драйвер последовательного порта
  8. Убедитесь, что система обновлена ​​

Решение 1. Убедитесь, что у вас есть необходимые драйверы

Если вы получаете сообщение Невозможно открыть последовательный порт , возможно, проблема связана с вашими драйверами. Чтобы устранить эту проблему, рекомендуется обновить драйвер последовательного порта. Для этого посетите веб-сайт производителя вашей материнской платы и загрузите последние версии драйверов.

Если вы находите этот процесс утомительным или сложным, вы всегда можете использовать сторонние инструменты, такие как TweakBit Driver Updater , для автоматического обновления всех ваших драйверов всего за пару кликов. Это защитит ваш компьютер от загрузки и установки неправильной версии драйвера, что может привести к серьезным неисправностям.

  • Загрузите программу обновления драйверов Tweakbit

Отказ от ответственности: некоторые функции этого инструмента не бесплатны

  • ЧИТАЙТЕ ТАКЖЕ: Порт используется, пожалуйста, подождите. Вот как вы можете исправить эту ошибку

Решение 2. Убедитесь, что порт не открыт/отсоедините кабель

Иногда сообщение Невозможно открыть последовательный порт может появляться, если порт уже открыт. Чтобы решить эту проблему, пользователи предлагают отсоединить кабель от другого устройства и попытаться подключиться снова.

Это простой обходной путь, но несколько пользователей сообщили, что он работает для них, поэтому не стесняйтесь попробовать.

Решение 3. Остановите службу факсов и сканирования Windows

Несколько пользователей сообщили, что Невозможно открыть последовательный порт при попытке использовать последовательный порт. Оказывается, проблема заключалась в службе факса и сканирования Windows. Чтобы решить эту проблему, вам просто нужно остановить службу факсов и сканирования Windows. Для этого просто выполните следующие действия:

  1. Нажмите Windows Key + R , чтобы открыть диалоговое окно Выполнить . Введите services.msc и нажмите Enter или нажмите ОК .
  2. Когда откроется окно Службы , найдите службу Windows Fax and Scan и дважды щелкните ее, чтобы открыть ее свойства. Если эта служба недоступна, попробуйте изменить настройки службы Факс .
  3. Установите для Тип запуска значение Вручную и нажмите кнопку Стоп , чтобы остановить службу. Теперь нажмите Применить и ОК , чтобы сохранить изменения.

После этого убедитесь, что проблема все еще существует. Помните, что это всего лишь обходной путь, поэтому вам, возможно, придется повторять его каждый раз, когда вы хотите использовать последовательный порт на вашем ПК.

Решение 4. Отключите последовательный порт в диспетчере устройств

Если вы продолжаете получать сообщение Невозможно открыть последовательный порт на вашем ПК, проблема может быть связана с драйвером последовательного порта. Обычно это происходит из-за временного сбоя, и для решения проблемы рекомендуется временно отключить последовательный порт.Это довольно просто, и вы можете сделать это, выполнив следующие действия:

  1. Нажмите Windows Key + X и выберите Диспетчер устройств из списка.
  2. Когда откроется Диспетчер устройств , найдите последовательный порт, щелкните его правой кнопкой мыши и выберите в меню Отключить устройство . Когда появится диалоговое окно подтверждения, нажмите Да .
  3. Подождите пару секунд, а затем включите последовательный порт.

После этого проверьте, решена ли проблема. Если это решение работает для вас, имейте в виду, что вам придется повторять его каждый раз, когда вы хотите использовать свой последовательный порт.

  • ЧИТАЙТЕ ТАКЖЕ: что делать, если служба отчетов об ошибках продолжает перезапускаться

Решение 5. Попробуйте использовать другой кабель

Иногда ошибка Невозможно открыть последовательный порт может появиться, если ваш кабель не работает. Обязательно проверьте, правильно ли подключен кабель. Кроме того, проверьте на наличие видимых повреждений. Если ваш кабель кажется исправным, попробуйте заменить его и проверьте, не возникает ли проблема с другим кабелем.

Решение 6 – Перезагрузите устройство

Если Невозможно открыть последовательный порт продолжает появляться, возможно, вы можете решить проблему, перезапустив свои устройства. Просто перезагрузите устройство, к которому вы пытаетесь подключиться, и проверьте, решает ли это проблему. Кроме того, вы можете перезагрузить компьютер и посмотреть, решит ли это проблему.

Решение 7. Переустановите драйвер последовательного порта

Как мы уже упоминали, иногда проблемы с вашим последовательным портом могут быть вызваны вашими драйверами. Если вы продолжаете получать сообщение Невозможно открыть последовательный порт , вы можете решить проблему, просто переустановив драйвер последовательного порта. Это довольно просто сделать, и вы можете сделать это, выполнив следующие действия:

  1. Откройте Диспетчер устройств .
  2. Найдите свой последовательный порт, щелкните его правой кнопкой мыши и выберите Удалить устройство .
  3. Теперь нажмите Удалить , чтобы подтвердить.
  4. После удаления устройства перезагрузите компьютер.

После перезагрузки компьютера Windows должна установить драйвер по умолчанию, и проблема с ним будет полностью решена.

Решение 8. Убедитесь, что система обновлена

В некоторых случаях может появиться сообщение Невозможно открыть последовательный порт , если ваша система не устарела. Устаревшая система может привести к различным проблемам совместимости, и лучший способ избежать этих проблем – обновить вашу систему.

Этот процесс довольно прост в Windows 10, и по большей части Windows устанавливает обновления самостоятельно. Однако вы всегда можете проверить наличие обновлений самостоятельно, выполнив следующие действия:

  1. Откройте приложение Настройки и перейдите в раздел Обновление и безопасность .
  2. Теперь нажмите кнопку Проверить обновления на правой панели.

Если доступны какие-либо обновления, они будут автоматически загружены в фоновом режиме и установлены, как только вы перезагрузите компьютер. Как только ваша система обновится, убедитесь, что проблема все еще существует.

Невозможно открыть сообщение последовательного порта может быть проблемой для многих пользователей, которые часто используют последовательный порт, но вы должны быть в состоянии решить эту проблему, используя одно из наших решений.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка converter timeout на elektronikon
  • Ошибка com surrogate что это