Russian Qt Forum
Ноябрь 23, 2024, 07:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSerialPort Unknown Error  (Прочитано 7378 раз)
lks
Новичок

Offline Offline

Сообщений: 19


Просмотр профиля
« : Июнь 28, 2015, 11:05 »

Чем можно объяснить появление ошибки "Unknown Error" (11).
Появляется в среднем раз в 5 минут при частоте приёма 10гц. пакетов длиной 700б.
Работа с портом RS422. Параллельно передача пакета 20б. в этот же порт с частотой 1 гц.
Вся работа с портом идёт в отдельном потоке.
Работа организована как в примере к QSerialPort terminal.
Результат ошибки - пропуск 2-3 байт.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Июнь 28, 2015, 14:24 »

Тут только самому отлаживать и смотреть.

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

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

UPD: "Unknown Error" - это такое значение кода, которое еще не обрабатывается внутри decodeSystemError() (оно не знает как обработать код ошибки). Нужно привести код этой системной ошибки и тогда, может быть, что-то прояснится.
« Последнее редактирование: Июнь 28, 2015, 14:30 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
mezmay
Гость
« Ответ #2 : Июнь 28, 2015, 21:54 »

Возможен случай когда порт ещё не принял стоповый бит при приёме, а уже пытается что то отправить. На физическом rs485 бывало такое.
Записан
lks
Новичок

Offline Offline

Сообщений: 19


Просмотр профиля
« Ответ #3 : Июнь 29, 2015, 06:57 »

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

Сообщений: 2812


Просмотр профиля
« Ответ #4 : Июнь 29, 2015, 10:40 »

Ну а что за RS422 девайс? USB преобразователь от Advantech, Moxa, или что?
Записан

ArchLinux x86_64 / Win10 64 bit
lks
Новичок

Offline Offline

Сообщений: 19


Просмотр профиля
« Ответ #5 : Июнь 29, 2015, 11:23 »

Ну а что за RS422 девайс? USB преобразователь от Advantech, Moxa, или что?
МОХА USB Serial Port
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Июнь 29, 2015, 11:31 »

Попробуй дрова обновить.
Записан

ArchLinux x86_64 / Win10 64 bit
lks
Новичок

Offline Offline

Сообщений: 19


Просмотр профиля
« Ответ #7 : Июнь 29, 2015, 11:56 »

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

Offline Offline

Сообщений: 19


Просмотр профиля
« Ответ #8 : Июнь 30, 2015, 11:56 »

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

Сообщений: 2812


Просмотр профиля
« Ответ #9 : Июнь 30, 2015, 12:36 »

Цитировать
подробную расшифровку Unknown Error (11)

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

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

ArchLinux x86_64 / Win10 64 bit
lks
Новичок

Offline Offline

Сообщений: 19


Просмотр профиля
« Ответ #10 : Июнь 30, 2015, 12:57 »

Цитировать
подробную расшифровку Unknown Error (11)

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

А что, QSerialPort::errorString() пустая?
errorString() = "Unknown Error". Я надеялся, что будет более полная расшифровка ошибки, но думаю это невозможно, или точнее, даже не нужно.
Если идут просто электрические помехи, возможно, перебиваются все служебные сигналы, какой смысл уточнять.
« Последнее редактирование: Июнь 30, 2015, 12:59 от lks » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #11 : Июнь 30, 2015, 14:51 »

Ах, я думал что UnknownError - это код ошибки, а не текст. Ок.
Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.08 секунд. Запросов: 23.