zHz00 Untitled

четверг, 24 августа 2017
23:54 Вызывает Хьюстон
Есть два измерительных устройства. Они выполняют одну функцию, поэтому мы подключаем к установке только одно из них. Смотря что есть. Одно работает через виртуальный COM-порт. Другое -- USB.

Включили USB-вариант. На старом компьютере работает, на новом не работает. На это раз, в отличие от предыдущего случая, и компы, и ПО полностью одинаковые.

По логам выходит, что устройство всё-таки включено, но показометр почему-то не показывает. Идущее в коплекте с устройством тестовое ПО результат показывает, т.е. устройство исправно, а дело в нашем ПО.

В процессе отладки выясняется, что хотя логи и показывают, что устройство включено, фактически данные с него не считываются. А конкретно -- не запускается поток считывания данных. Но на другом компе поток запускается. Почему же?

Потому что я лох.

Я сделал в своё время автоматическое определение, включено устройство или нет. Делалось оно так:
1. Попробовать открыть COM-порт с фиксированным номером (жёстко зашито в код). Номер тринадцать, если что.
2. Если удалось, то включено устройство первого типа.
3. Если не удалось, поискать USB-устройство.
4. Если USB-устройство обнаружено, то включено устройство второго типа.
5. Если ничего нет -- устройства отсутствуют, работаем так (это факультативный модуль).

Обратите внимание на второй пункт. Проверяется только возможность открытия порта. Кто там висит -- никого не волнует. Кроме того, имеется любопытное последствие -- если порт открылся, проверка USB-устройства уже не производится.

В наших компьютерах и без этого устройства много устройств, которые видны как COM-порты. И винда их распределяет случайным образом. И вот на втором компе по случайности 13-й порт существовал (хотя к нему ничего не было подключено). И программа думала, что установлено устройство первого типа. И запускала поток считывания данных для устройства первого типа. Он слал запросы... в космос.

@темы: Борьба с техникой

URL
Вообше, раньше Корея была гораздо более гармоничным место...
Дело было в Славянске, в ноябре месяце... В кабинет зах...
Вэсна прышоль - лубит приньос! Всем девушкам гарнизо...
И снова здравствуйте! [изображение] Я вернулась! Надеюс...
Вычитала сегодня: Называться будет "Lyrics of love&...
Случайно наступил на ухо медведю. Зверь выглядел вяло и д...

25.08.2017 в 01:30

25.08.2017 в 01:30
Это да, виртуальные ком-порты имеют хз какие номера...
URL

25.08.2017 в 01:50

25.08.2017 в 01:50
Реальные тоже.
URL

25.08.2017 в 02:01

25.08.2017 в 02:01
zHz00, реальные таки привязаны к железным адресам...
URL

25.08.2017 в 02:25

25.08.2017 в 02:25
Да, но как это связано с номерами?..
URL

25.08.2017 в 12:09

25.08.2017 в 12:09
zHz00, ну смотря про какие железные речь. USB-RS232 да, у них в принципе тоже вирутальный компорт получается. А вот именно родной, железный, там всё ясно: 0x3F8 в IO области - это COM1 и никак иначе.
URL

26.08.2017 в 23:34

26.08.2017 в 23:34
Есть два измерительных устройства.
Прочитал "омерзительных устройства". Прочитал ещё раз правильно. Подумал, что первое прочтение к тегу больше подходит.
URL

26.08.2017 в 23:49

26.08.2017 в 23:49
Stigravian Shaderstill, с устройствами-то всё нормально...
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail