Я знаю, что этот вопрос не нов, и для Google можно использовать код кода/класс для обмена сообщениями rs232. Однако теперь я уже использую класс. Но это работает иногда, но очень часто нет. Связь просто прекращается. . Мне потребуется много времени, чтобы прочитать все концепции последовательной связи и отладить этот код.Связь rs232 часто создает ошибку
Могу ли я получить некоторую помощь от SO?
Спасибо,
PS: кстати, в моем проекте, мне нужно часто послать строку (массив символов) на другой rs232 терминал непрерывно или в некоторых определенных случаях. Может ли ошибка быть вызвана не закрытием, повторным открытием RS232/COM-дескриптора вместе с каждым сообщением?
Пожалуйста, я включил мой код
RS232.cpp RS232.hpp RS232_client
Edit01:
RS232_client является код, написанный на другой стороне. Моя сторона - это компьютер с использованием win7, проект скомпилирован с MSVS2008
Об ошибке в моем коде иногда бывает, когда я называю «int RS232 :: Write (double * joints)», он вызывает ошибку, и передача останавливается , не показывая ничего на стороне ПК
Edit02:
Как следует Stratton @ Крис, моя проблема может быть от плохого письменного класса rs232 без необходимой проверки. Поэтому я тестировал свой проект с другим классом, загруженным из CodeProject CSerial. Я поставил код здесь для справки
И это, как я адаптировать этот класс для моего кода:
Таким образом, процесс со стороны ПК это то же самое, т.е. отправить строку, ждать, чтобы прочитать 's' или 'S', и отправить «q \ r» для выхода.
за 3 шага выше с новым кодом, я могу сделать шаг 1 OK, но на шаге 2, он висит там, как будто нет (чтение) событие вызывается
// Wait for an event
lLastError = serialPort.WaitEvent(); // it waits here forever!!!!
if (lLastError != ERROR_SUCCESS)
ShowError(serialPort.GetLastError(), _T("Unable to wait for a COM-port event."));
Поскольку у меня нет большой концепции в работе. Я не могу определить, в чем проблема. –
FYI, использующий 'GetCommState', почти всегда ошибается. Вы не хотите наследовать настройки из последней программы для использования порта, вы хотите изменить их все.Единственное, что подходит для GetCommState, - это проверка конфигурации для устранения неполадок, а не при подключении. –
Я тестировал оба случая, закрывал и открывал порт при каждом соединении (что похоже на то, что вы сказали - GetCommState во время связи), и только один раз открывается, и оба не работают –