ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
12 июля
408837
PijikovAD (13.05.2013 01:59, просмотров: 896)
Недавно мне было нужно управлять одним изделием, во внутреннюю структуру которого я не могу лезть и менять, по RS-485 с компьютера на скорости 115200. Я использовал преобразователь на FT232RQ и MAX485, т.е. подключал к USB и отсылал данные через виртуальный COM-порт. Устройство принимало 9-битные посылки (9бит=1 для адреса и 9бит=0 для данных). Я написал программу используя QT и библиотеку qextserialport-1.2 . Не найдя в сети внятного ответа как слать честные 9бит, я стал использовать бит четности как 9 бит, т.е. устанавливал его как parity MARK при отсылки адреса и parity SPACE для данных. При переконфигурации порта с MARK на SPACE возникала задержка. На осцилографе было видно что данные отсылаются примерно через 1мс после адресного слова. Но устройство не реагировало на такое промедление и переконфигурация происходила без проблем. Теперь же я работаю с похожим устройством и мне нужно еще и прочесть ответ на мою посылку, который также состоит из 9-битного адреса и 9-битных данных. Я не могу нормально принять данные, поскольку мне нужно после приема первого адресного байта резко переключить настройки четности. Как реализовать чтение 9битных посылок, в которых заранее известно что лишь первое слово с 9битом=1, а остальные с 9 битом =0? Или же какой то общий способ чтения честных 9-бит на QT. Было бы просто супер если это было возможно сделать на QT, ибо я раньше особо не писал на с++ и вообще ничего для компьютера, только AVR,MSP430,STM32,SHARC.