void MyThreadSerial::ThreadopenMycom(QString port) { m_Com = new QSerialPort(this); m_Com->setPortName(port); m_Com->open(QIODevice::ReadWrite); if(!m_Com->isOpen()) { QMessageBox::about(NULL, "About", port+" Failed to open!"); return; } m_Com->setBaudRate(QSerialPort::Baud115200); m_Com->setDataBits(QSerialPort::Data8); m_Com->setParity(QSerialPort::NoParity); m_Com->setStopBits(QSerialPort::OneStop); m_Com->setFlowControl(QSerialPort::NoFlowControl); m_Com->setReadBufferSize(Pixels_ALL *2 +data_head + data_crc); if(m_Com->open(QIODevice::ReadWrite)) { m_Com->setDataTerminalReady(true); } m_Com->clear(); connect(m_Com,&QSerialPort::readyRead,this,&MyThreadSerial::readData); } void MyThreadSerial::writeMyCom(QByteArray senddata) { if(m_Com->isOpen()) { senddata[5] = senddata[1]^senddata[2]^senddata[3]^senddata[4]; { m_Com->write(senddata); } } } void MyThreadSerial::run() { } void MyThreadSerial::readData() { QByteArray data; data = m_Com->readAll(); if(!data.isEmpty())//如果读到的数据不为空 { emit ThreadMyCom(data); } }中文注释
时间: 2024-04-08 20:33:21 浏览: 102
QSerialPort串口通信代码
以下是对代码的中文注释:
```cpp
void MyThreadSerial::ThreadopenMycom(QString port)
{
m_Com = new QSerialPort(this); // 创建串口对象
m_Com->setPortName(port); // 设置串口名称
m_Com->open(QIODevice::ReadWrite); // 打开串口
if(!m_Com->isOpen()) // 判断串口是否打开成功
{
QMessageBox::about(NULL, "About", port+" Failed to open!"); // 弹出提示框显示打开失败信息
return;
}
m_Com->setBaudRate(QSerialPort::Baud115200); // 设置波特率为115200
m_Com->setDataBits(QSerialPort::Data8); // 设置数据位为8位
m_Com->setParity(QSerialPort::NoParity); // 设置校验位为无校验
m_Com->setStopBits(QSerialPort::OneStop); // 设置停止位为1位
m_Com->setFlowControl(QSerialPort::NoFlowControl); // 设置流控制为无流控制
m_Com->setReadBufferSize(Pixels_ALL *2 +data_head + data_crc); // 设置读取缓冲区大小
if(m_Com->open(QIODevice::ReadWrite)) // 再次判断串口是否打开成功
{
m_Com->setDataTerminalReady(true); // 设置数据终端就绪信号
}
m_Com->clear(); // 清空串口缓冲区
connect(m_Com,&QSerialPort::readyRead,this,&MyThreadSerial::readData); // 连接串口的readyRead信号和readData槽函数
}
void MyThreadSerial::writeMyCom(QByteArray senddata)
{
if(m_Com->isOpen()) // 判断串口是否打开
{
senddata[5] = senddata[1]^senddata[2]^senddata[3]^senddata[4]; // 计算并设置校验位
{
m_Com->write(senddata); // 向串口写入数据
}
}
}
void MyThreadSerial::run()
{
// 在这个函数中定义线程的执行逻辑
// 由于此处为空,因此线程将什么也不做,即空运行
}
void MyThreadSerial::readData()
{
QByteArray data;
data = m_Com->readAll(); // 读取串口数据
if(!data.isEmpty()) // 如果读到的数据不为空
{
emit ThreadMyCom(data); // 发送串口数据信号
}
}
```
以上是对代码的中文注释,希望能帮助到你!
阅读全文