Название: И снова QSerialPort Отправлено: Eugene1911 от Сентябрь 03, 2014, 14:17 Здравствуйте :)
При написании программы для общения с платой через COM порт возникла следующая проблема: serialport шлет на плату данные типа char, а мне надо отправить байты со значением от 0 до 255, т.е. unsigned char. Подскажите, пожалуйста, как заставить qserialport слать данные в формате unsigned char? Название: Re: И снова QSerialPort Отправлено: Bepec от Сентябрь 03, 2014, 14:32 serialPort шлёт байты. И ничто иное. Видимо вы неправильно отправляете данные.
Название: Re: И снова QSerialPort Отправлено: Eugene1911 от Сентябрь 03, 2014, 14:38 Прошу прощения, протупил))
Байты я отправляю так: Код: void MainWindow::on_sendButton_clicked()//отправка данных Название: Re: И снова QSerialPort Отправлено: Bepec от Сентябрь 03, 2014, 14:52 Я не понимаю вашей проблемы. Точнее у вас проблемы то и не написано.
Как вы поняли что посылаете не то? char это байты от 0 до 255. Так что всё нормально у вас должно отправляться. Название: Re: И снова QSerialPort Отправлено: Eugene1911 от Сентябрь 03, 2014, 15:02 В отладчике видно, что высылается не то.
В сообщении 5 байтов. 1-й байт равен 196, со второго по пятый значения байтов меньше 128. Отладчик показывает значения dat[0], dat[1] и т.д., а также показывает тип этих этих переменных - char. dat[1]=control_b2 dat[2]=control_b3 Здесь все нормально. А вот значение первого байта неверное: dat[0]=-60 Название: Re: И снова QSerialPort Отправлено: Bepec от Сентябрь 03, 2014, 15:12 Круто. Верить отладчику надо, только не в этом случае.
Отладчик берёт число 192 и считает его signed. Потому 1й (или 8й) бит считается знаковым и интерпретирует число как -60. А на деле это 196 и всегда им останется :D PS вы заметьте, что байт занимает 2 знака (FF/AA/0A). А отладчик вам показывает значение что то типа 0xFFFFFFC4. Но Char хранит только 1 байт. C4. Название: Re: И снова QSerialPort Отправлено: Eugene1911 от Сентябрь 03, 2014, 15:13 Все понял, спасибо ;D
|