У меня есть чип FT232RL. Я использую его для преобразования usb в протокол RS232, который мне нужно преобразовать данные и использовать его дальше.Управление потоком по FT232RL
«Набор данных» (устройство с другой стороны, как модем, в моем случае MAX485 IC), который я использую, не может быть настроен. Все, что я могу дать, это сигнал управления для чтения или записи. Так что это не очень полезно.
Мое приложение требует, чтобы я мог установить его в «режим записи», когда я отправляю данные, а затем, КАК Я ПРОСИЛ ОТПРАВИТЬ, мне нужно установить его в режим «читать», чтобы получить который он генерирует.
Примечание: Сигнал управления является простым высокая или низкая Данные могут быть несколько байт
Я думаю, что один из способов сделать это, чтобы быть в состоянии прочитать, сколько данных есть в буфере передачи RS232 , Как только это становится «0», то все данные будут переданы, и я могу установить штифт управления в «режиме чтения»
Другой способ сделать это использует управление потоком
Я хочу объяснить свое понимание контроля потока перед тем, высказав свою проблему для ясности цели:
(1) Я отправить данные с помощью Python на FTDI через USB
(2) FTDI потребности написать ВЫСОКОЕ на линии DTR
(3) При получении HIGH на линии DSR, он должен начать передачу (это если я отключили параметры управления RTS/CTS потока)
(4) После того, как это делается передачи, он должен написать низко на DTR линии, обозначающей конец передачи
проблема заключается в том, что я не могу получить линию DTR для включения и выключения, как ожидается STEP (2) не происходит
import serial
ser = serial.Serial("com1") # initialised port as ser
ser.dsrdtr = True # set dsrdtr mode
ser.write("blah blah") # sent a command
Я даже попробовал следующее:
ser.setDTR(True) # write a HIGH on DTR
ser.setDTR(False) # write a LOW on DTR
Это все еще не решает мою полную проблему.
Пожалуйста, советы
EDIT: Я должен упомянуть, что FT232RL я использую на прорыве доске по NEX-робототехники и шпилек, которые я имею доступ к являются: 3.3V, 5V, CD, RXD , TXD, DTR, GND, DSR, RTS, CTS и RI и, конечно же, порт USB для подключения к моему ноутбуку
EDIT2: Могу ли я использовать Mprog 3.5 или аналогичное программное обеспечение для запуска EEPROM, который может поддерживать то, что я хочу делать? Если да, то как?
сер = serial.Serial («com1») # так сказать? без скорости? – dsgdfg
да, он инициализирует скорость передачи до 9600 по умолчанию –
rs232 ** управление потоком ** устанавливает dtr = 1 активным (напряжение низкое) все время, пока входной сигнал fifo не будет таким полным, он больше не хочет, когда водитель очистит dtr , Этот сигнал не используется, чтобы говорить, что есть или нет данные на выходе fifo. (вы можете сделать что-то подобное с полудуплексным rs422/rs485). Ваша программа должна переключать сам dtr – meuh