PDA

Просмотр полной версии : AC4 и и эмуляция COM порта (сигнал DSR)



KarakurT
17.11.2015, 18:30
Доброго дня.
Возникла необходимость подружить AC4 и Qt. В Qt для доступа к порту пользую Qserialport.
Возникла проблема - при записи в порт данные пишутся без проблем.
Однако чтение данных из порта (любым способом) не читает ничего (как будто в порт ничего не слалось).
Причем программы типа COMPump работают с портом корректно. COMPump говорит, что в процессе работы на com порту служебные сигналы не активны.
Такая проблема с QT и COM портом уже была, решилась она перемычкой между 1-6-8 ногами порта (DSR - CTR - DCD). Похоже что Qt не умеет читать данные из порта, пока не придет сигнал DSR.
Но с AC4 перемычку я поставить не могу. И похоже что сигнал DSR драйвером генерируется не верно (или не генерируется).
Сейчас пробую решить проблему во стороны Qt, но может возможно что-то сделать со стороны драйвера?

Вольд
17.11.2015, 18:56
AC4 - это преобразователь USB/RS485. Какие там могут быть DSR - CTR - DCD ?

Scream
17.11.2015, 22:34
AC4 - это преобразователь USB/RS485. Какие там могут быть DSR - CTR - DCD ?

Может парень хочет новый промышленный протокол изобрести...

ASo
17.11.2015, 22:35
Вполне могут быть. Например - задавать направление передачи.

KarakurT
17.11.2015, 22:41
Все гораздо проще. Софт обращается к драйверу, который эмулирует com порт. Если вы подключите AC4 к компьютеру, то он определится именно как com порт. С этой точки зрения софту пофигу что там за драйвером - RS485, 232 или вообще заглушка, которая дальше драйвера ничего не имеет. Вопрос относился именно к этому виртуальному порту.

ASo
17.11.2015, 22:44
Для начала, смените в АС4 VID/PID на оригинальные и воспользуйтесь последней версией "родного" драйвера.

KarakurT
17.11.2015, 22:59
Для начала, смените в АС4 VID/PID на оригинальные и воспользуйтесь последней версией "родного" драйвера.
Вы имеете ввиду vid/pid и драйвера от https://www.silabs.com/ ?

ASo
17.11.2015, 23:29
Именно так. Если не подойдет - то никто ничего делать точно не будет.

KarakurT
18.11.2015, 00:44
ASo, поставил дрова от силабз. Результат тот-же - работает только на передачу. С айдишниками, признаюсь, ковыряться не стал, рассудив, что если б в них был косяк, то выражалось бы это по другому.
Почитал форум силабз, там техподдержка говорит что CP2102 хорошо работает с этими сигналами.
Посмотрел даташит на CP2102. Оказывается у этой микрухи для каждого сигнала (в том числе DSR и т.д.) есть свой вывод.
Вскрыл AC4 - похоже что эти линии просто висят в воздухе. Это на глаз. Точнее скажу завтра - сейчас под рукой нет ни тестера, ни осциллографа.
20874
Жаль что нет схемы AC4.
(фото взято с http://we.easyelectronics.ru/electro-and-pc/cp2102-preobrazovatel-usb-uart-za-45-rubley.html)

ASo
18.11.2015, 08:18
Так для RS-485 они и должны висеть в воздухе.

KarakurT
29.11.2015, 21:53
Разобрался в проблеме.
Микросхема CP2101 действительно имеет хорошую поддержку сигналов "DSR и ко". У микрухи на каждый такой сигнал имеется выход (вход). И если на вход подать активный сигнал, то драйвер корректно отработает и при чтении этого сигнала соответствующий COM порт в системе прочитает его верно.
К сожалению входа CP2101 в AC4 висят в воздухе и никак не участвуют в обмене данными. Теоретически в каких-то случаях это может вызвать трудности. Можно было бы для большей совместимости завести "DSR и ко" в МК. Хотя я с Тинькой не работал, даже не знаю есть ли там свободные выходы.
Это что касается работы AC4.
В моей же проблеме был виноват компилятор.

murdemon
29.11.2015, 22:31
DSR и ко - используются только в микрухах подобны MAX485 ... силабы и фттди сами знают что они хотят делать передавать или принимать (принимают всегда если не передают) и сами сигнал формируют.

melky
30.11.2015, 09:41
murdemon, не совсем так. Есть FTDI, которые могут управлять всеми сигналами программно, просто на рынке распространены часто дешевые преобразователи с урезанными чипами.

murdemon
30.11.2015, 13:44
Ты имеешь ввиду кетайский.... на которых еще дрова нормально не встают? просто зачем разводит DSR потом в программе писать поддержку переключения этого DSR при приеме и передачи, если сам чип FTDI все это делает сам ..

melky
30.11.2015, 14:16
murdemon у FTDI чипы РАЗНЫЕ, есть еще буковки после номера чипа и эти чипы умеют разные вещи.
Например почитай разницу между чипами, когда на хвосте есть буковки RL (если не ошибся). На данном чипе можно всякие PonyProg и тд программаторы подключать через USB порт при помощи конвертера. На обычном работать не будут, потому как правильно ты написал, чип сам все определяет и не дает управлять программно.