怎么判断串口已发送完毕?(qt5, c++)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么判断串口已发送完毕?(qt5, c++)相关的知识,希望对你有一定的参考价值。
大概意思如下:
//以下代码只表示执行思路,望见谅
//----------------------------------------------------------------------
qCom = new QSerialPort();
string1[] = "123";
string2[] = "456";
qCom->open(QIODevice::writeOnly); //先以只写打开
qCom->writeData(string1, 2);
qCom->writeData(string2, 2);
while(???); //此处想等待第6个字符发送完毕
qCom->open(QIODevice::readOnly); //发送完毕后设置为只读模式
//----------------------------------------------------------------------
串口顺序发送了“1 2 3 4 5 6”六个字符,请问第六个字符“6”发送完毕的时刻怎么捕捉到呢?有木有更好的方法来实现?
求指点,谢谢!
判断写的数据 跟 真正写的数据 是不是相等
bool CComControl::Send(BYTE* pBuff,DWORD dwBytesSend)
if (!PortOpened()) return false;
BOOL wRes;
DWORD dwBytesW;
wRes = WriteFile(m_hCom,pBuff,dwBytesSend,&dwBytesW,&m_ovWrite);
if (!wRes)
if (GetLastError() == ERROR_IO_PENDING)
WaitForSingleObject(m_ovWrite.hEvent,1000);
wRes = GetOverlappedResult(m_hCom,&m_ovWrite,&dwBytesW,false);
if (!wRes || dwBytesW !=dwBytesSend)
ClearInOut();
return false;
else
ClearInOut();
return false;
return true;
本回答被提问者采纳
qt串口设置停止位出现
Qt串口设置停止位的出现是因为在串行通信中,停止位是用来终止数据传输的一个特定位。当发送端发送一个字节的数据时,接收端会接收到这个字节数据,然后会根据停止位来判断数据传输是否结束。所以在设置Qt串口时,一定要正确设置停止位,以保证数据传输的正确性。 参考技术A 符停止位是指在发送的数据中,最后一个字符后必须加上一个特殊的字符,以标识数据的结束。Qt串口设置停止位的默认值是100字符。
以上是关于怎么判断串口已发送完毕?(qt5, c++)的主要内容,如果未能解决你的问题,请参考以下文章