Пользовательская скорость передачи - PullRequest
6 голосов
/ 10 октября 2011

Я пытаюсь разговаривать с аппаратным устройством через виртуальный COM-порт.Хост-компьютер - это ПК с ОС Windows.Устройство работает со скоростью 921600 бод.Этот код работает:

DCB dcb;
...
dcb.BaudRate =  CBR_115200;
SetCommState(hPort, &dcb);

Как только я изменяю скорость передачи:

dcb.BaudRate =  921600;

SetCommState завершается с последней ошибкой 0x57 (параметр неверен).Означает ли это, что Windows API предотвращает любую скорость передачи, кроме предопределенных значений?Или, может быть, виртуальный COM-порт может быть настроен для разрешения этой скорости передачи?

Виртуальный COM-порт является частью подключения CameraLink.Я разговариваю с продавцом системной платы CameraLink.Но мне нужно знать, поддерживает ли API последовательной связи Windows пользовательские скорости передачи данных.

1 Ответ

6 голосов
/ 11 октября 2011

Iv'e только что ознакомился с документами MSDN для этого, и вот что сказано о свойстве BaudRate в структуре DCB.

BaudRate Скорость передачи, при которойустройство связи работает.Этот элемент может быть фактическим значением скорости передачи или одним из следующих индексов.CBR_110.CBR_300, CBR_600, CBR_1200, CBR_2400, CBR_4800, CBR_9600, CBR_14400, CBR_19200, CBR_38400, CBR_57600, CBR_115200, CBR_128000, CBR_256000

Так что у вас нет проблем с настройкой порта, если у вас есть проблемы, по крайней мере, если у вас есть проблемы, у вас, по крайней мере, не должно быть проблем.1007 *

Далее также говорится, что некоторые комбинации являются недопустимыми (в частности, при программировании последовательного чипа 8250)

Примечания Когда структура DCB используется дляПри настройке 8250 следующие ограничения применяются к значениям, указанным для членов ByteSize и StopBits: количество битов данных должно быть от 5 до 8 бит.Использование 5 битов данных с 2 стоп-битами является недопустимой комбинацией, как и 6, 7 или 8 битов данных с 1,5 стоп-битами.

Это заставляет меня задуматься, если проблема заключается в том, чтоопределенные комбинации - это то, что вызывает вещи, а не просто установка скорости передачи, например.

Может быть, ваша скорость передачи в порядке, но, выбрав эту скорость передачи, вы аннулируете число стоп-битов или длину четности, которая, когдаскорость передачи данных возвращается к стандартной настройке, затем снова становится действительной.

Я не знаю, с каким оборудованием вы работаете, поэтому я не могу сказать 100%, если это так, я знаю только программирование последовательного портав общем, но лично мой следующий шаг - установить скорость передачи данных на то, что мне нужно, и оставить все как есть, попробовать все различные комбинации других флагов в блоке.

Официальная страница MSDN для DCBструктуру можно найти здесь:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363214(v=vs.85).aspx

Вы также можете найти функцию BuildCommDCB для некоторой помощи:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363143(v=vs.85).aspx

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