Russian Qt Forum

Qt => Вопросы новичков => Тема начата: lks от Июнь 28, 2015, 11:05



Название: QSerialPort Unknown Error
Отправлено: lks от Июнь 28, 2015, 11:05
Чем можно объяснить появление ошибки "Unknown Error" (11).
Появляется в среднем раз в 5 минут при частоте приёма 10гц. пакетов длиной 700б.
Работа с портом RS422. Параллельно передача пакета 20б. в этот же порт с частотой 1 гц.
Вся работа с портом идёт в отдельном потоке.
Работа организована как в примере к QSerialPort terminal.
Результат ошибки - пропуск 2-3 байт.


Название: Re: QSerialPort Unknown Error
Отправлено: kuzulis от Июнь 28, 2015, 14:24
Тут только самому отлаживать и смотреть.

Кроме того, хотелось бы поподробнее узнать обо всем окружении:

1. Какой чип используется в качестве девайса?
2. Какая версия QtSerialPort и Qt?
3. Какая ОС?
4. Хотелось бы иметь минимальный и самый упрощенный пример который воспроизводит проблему. Например loopback тест, в котором Tx/Rx соединены вместе. Тогда можно попытаться воспроизвести проблему.

UPD: "Unknown Error" - это такое значение кода, которое еще не обрабатывается внутри decodeSystemError() (оно не знает как обработать код ошибки). Нужно привести код этой системной ошибки и тогда, может быть, что-то прояснится.


Название: Re: QSerialPort Unknown Error
Отправлено: mezmay от Июнь 28, 2015, 21:54
Возможен случай когда порт ещё не принял стоповый бит при приёме, а уже пытается что то отправить. На физическом rs485 бывало такое.


Название: Re: QSerialPort Unknown Error
Отправлено: lks от Июнь 29, 2015, 06:57
Qt5.4.1 Windows7 порты с обеих сторон RS422.
Проблема возникает только при работе с определённым ПК (вывод в порт из программы под ДОС).
Приём идёт на ноутбук Гранат.
Ставлю вместо ПК с ДОСом обыный ПК с Windows7 и тестовой программой и связью через RS232 <-> RS232 - работает нормально.
В самой программе под ДОС уверенности нет, но сомневаюсь, что некооректность её работы может создать такую ситуацию на приёме.
Подозрение на корректность работы самих портов, связи между ними.
Возможен ли вариант неправильной настройки или особенностей работы портов RS422 ?
Для начала и хотелось выяснить возможные причины по выдаваемой QSerialPort ошибки Unknown Error (11).
Буду пытаться сужать источник причины.


Название: Re: QSerialPort Unknown Error
Отправлено: kuzulis от Июнь 29, 2015, 10:40
Ну а что за RS422 девайс? USB преобразователь от Advantech, Moxa, или что?


Название: Re: QSerialPort Unknown Error
Отправлено: lks от Июнь 29, 2015, 11:23
Ну а что за RS422 девайс? USB преобразователь от Advantech, Moxa, или что?
МОХА USB Serial Port


Название: Re: QSerialPort Unknown Error
Отправлено: kuzulis от Июнь 29, 2015, 11:31
Попробуй дрова обновить.


Название: Re: QSerialPort Unknown Error
Отправлено: lks от Июнь 29, 2015, 11:56
Попробуй дрова обновить.
Проясняются некоторый факты. На ПК 2 канала RS422 соединены кабелем параллельно с 2-мя каналами RS422 на ноутбуке. Запускаю общение по одному каналу - всё нормально. Запускаю по 2-му - на ноутбуке ошибка Unknuwn Error 11 по обоим каналам. На ноутбуке оба канала на одном разъёме. Подозрение на взаимное влияние каналов. Пока жду логов тестовой программы. На ПК работает ДОС.


Название: Re: QSerialPort Unknown Error
Отправлено: lks от Июнь 30, 2015, 11:56
Причина. похоже, найдена. Кабель связи по 2-м каналам RS422 представляет из себя единый жгут, в котором происходят взаимные наводки каналов. При работе одного канала всё было нормально. При работе двух - в обоих появлялась ошибка QSerialPorta Unknown Error (11). Длина кабеля невелика, но, думаю > 5м. Зато скорость 115200 кб/с. Для 100%-й уверенностти надо посмотреть осциллографом (пока нет возможности), но других вариантов не вижу. Изначально надеялся на более подробную расшифровку Unknown Error (11), потому и задал вопрос. Спасибо всем за советы.


Название: Re: QSerialPort Unknown Error
Отправлено: kuzulis от Июнь 30, 2015, 12:36
Цитировать
подробную расшифровку Unknown Error (11)

Эмм.. Я же говорю, что нужно самому пересобрать QtSerialPort и втыкнуть qDebug() в decodeSystemError().

А что, QSerialPort::errorString() пустая?


Название: Re: QSerialPort Unknown Error
Отправлено: lks от Июнь 30, 2015, 12:57
Цитировать
подробную расшифровку Unknown Error (11)

Эмм.. Я же говорю, что нужно самому пересобрать QtSerialPort и втыкнуть qDebug() в decodeSystemError().

А что, QSerialPort::errorString() пустая?
errorString() = "Unknown Error". Я надеялся, что будет более полная расшифровка ошибки, но думаю это невозможно, или точнее, даже не нужно.
Если идут просто электрические помехи, возможно, перебиваются все служебные сигналы, какой смысл уточнять.


Название: Re: QSerialPort Unknown Error
Отправлено: kuzulis от Июнь 30, 2015, 14:51
Ах, я думал что UnknownError - это код ошибки, а не текст. Ок.