发送:
我发现发送单条消息给串口助手是正常的,如果一次发好几条数据,串口助手只能接收到最后一条消息,这是什么原因?
代码
int serialCommunication::sendSerialData(char *buffer, int length )
{
m_SerialPort->clear(QSerialPort::Input);
m_SerialPort->clear(QSerialPort::Output);
return m_SerialPort->write(buffer, length);
}
接收:
假如接收14个字节的数据,每来一个字节,接收函数都处理一次,会处理14次,前13次是无用的
代码
void serialCommunication::readSerialData()
{
//读取串口数据
//usleep(100000);
QByteArray readComData = m_SerialPort->readAll();
mData.append(readComData);
char *buf = NULL;
int len = mData.length();
qDebug()<<"mData length: "<<len <<endl;
buf = (char*)malloc(len * sizeof(char));
memcpy(buf, mData.data(), len);
unsigned short validDataLen = (uchar)buf[1];//len of data
unsigned char num;
for(int i =0; i<len; i++)
{
num = (unsigned char) buf[i];
qDebug() <<"num"<< num;
}
...
free(buf);
buf=NULL;
}
求指点