Qt串⼝通信-linux下qextserialport与qserialport踩过的坑
【1】qextserialport
(1)⾸先进⾏配置,确保你在linux下调⽤的是对应的头⽂件posix_qextserialport.h与posix_qextserialport.cpp
(2)在linux下按照⽹上的说明配置好qextserialport(版本:qextserialport-1.2win-alpha)后,⾸先是提⽰setTimeout()延迟函数报错,按照⽹上的说法,将该函数的第⼀个形参删除即可
(3)我踩坑是,我在windows下使⽤的setTimeout(50)延迟了50ms,可以正常接收到数据,但是在linux下数据接收始终是有问题的,⼀直是空
(4)经过反复调试,反复校验后才发现,setTimeout()在linux下应该是失灵了,延迟没有效果,所以导致接收的数据是有问题的,这个时候⾃⼰加⼀个延时即可
(5)延迟⽅法:
void millisleep(unsigned long ms)
{
if(ms>0)
{
QThread::msleep(ms);
}
}
(6)⽤millisleep(50)替换掉setTimeout(50)即可linux下的sleep函数
真的好坑
【2】qserialport
对于qserialport,⼀定要确认你的输⼊是对的,如果是输⼊的不是⼗六进制,那么直接write即可
QString sendstr = “01 02 03”;
QByteArray bytes;
bytes = Latin1();
serial.write(writeData);
如果是⼗六进制,则需要QByteArray::fromHex()转换
QString sendstr = “DE 01 83”;
QByteArray bytes;
bytes = QByteArray::Latin1());
serial.write(writeData);
⼤坑⼩坑,⼀起踩坑
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论