Изменить скорость передачи в C # без закрытия соединения - PullRequest
2 голосов
/ 09 августа 2011

У меня проблема, похожая на следующую ссылку. Как изменить скорость передачи без закрытия соединения? . Но я использую C # вместо Java. Я начинаю с скорости передачи 300. Затем, после рукопожатия, мне нужно изменить скорость передачи до 4800. Я посылаю команду на устройство, чтобы сделать это. И я изменяю скорость передачи моего серийного порта. После этого я никогда не смогу продолжить общение с устройством. (Если я остаюсь в 300 бодах и посылаю команду устройству для 300 бод, я могу продолжить связь)

У меня есть стороннее программное обеспечение, которое также читает с этого устройства. Я слушаю порт, когда это программное обеспечение работает. Он отправляет те же команды, которые я отправляю на устройство. Он посылает команду на установку 4800 бод на устройство и может получить ответ от устройства. Он не закрывает и не открывает порт во время смены бода. Я должен сделать то же самое. Но когда я посылаю команду для изменения на 4800 бод, я никогда не получаю ответа от устройства.

Я жду ваших ответов. Спасибо, Ферда

Это вывод программы мониторинга последовательного порта Порт, открытый процессом "ReadY.vshost.exe" (PID: 2608)

01 42 30 03 71 .B0.q

Ответ: 09.08.2011 10: 55: 40.81864 (+0,2656 секунды)

06.

Запрос: 09.08.2011 10: 55: 41.06864 (+1.2500 секунд)

2F 3F 31 31 39 39 39 30 30 34 21 0D 0A /? 11999004! ..

Ответ: 09.08.2011 10: 55: 41,58464 (+0,5156 секунды)

2F 53 54 52 34 5F 42 53 4D 31 33 31 0D 0A / STR4_BSM131 ..

Запрос: 09.08.2011 10: 55: 42.31864 (+0,2969 секунд)

06 30 34 31 0D 0A .041 ..

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

По моему опыту коммутаторы скорости передачи данных требуют закрытия и повторного открытия оборудования последовательного порта: я бы посоветовал попробовать это.Отправьте команду переключения скорости передачи, затем закройте порт, установите скорость передачи и снова откройте порт.Открытие / закрытие порта должно быть прозрачным для устройства на другой стороне (если вы не используете линии CTS / RTS / DTR / DSR).

1 голос
/ 27 декабря 2011

Чтобы изменить скорость передачи устройства, выполните следующие действия.Например: для запуска связи со скоростью 1200 бод.

  1. Отправьте команду данных для изменения скорости в бодах 1200.
  2. Получите подтверждение от устройства.
  3. Если ACK правильный, установите Port.BaudRate=1200.

Затем вы хотите изменить скорость в бодах на 4800, затем выполните следующие шаги

  1. Отправить команду данных дляизменив скорость передачи данных на 4800.
  2. Получите подтверждение от устройства.
  3. Если ACK правильный, установите Port.BaudRate=4800.

ПРИМЕЧАНИЕ. ИзменитьPort.BaudRate после получения ACK от устройства контроллера.Связь будет начата с ранее установленной BaudRate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...