21,494
社区成员
发帖
与我相关
我的任务
分享m_serialPort = new QSerialPort(this);
//获取端口名称列表
m_portNameList = getPortNameList();
for (int i = 0; i < m_portNameList.length(); i++)
{
LogDebug(QString("匹配串口:%1").arg(i));
LogDebug(QString("串口名称:%1").arg(m_portNameList.at(i)));
//设置串口名字
m_serialPort->setPortName(m_portNameList.at(i));
//如果串口已经打开了 先给他关闭了
if (m_serialPort->isOpen())
{
m_serialPort->clear();
m_serialPort->close();
}
//用ReadWrite 的模式尝试打开串口
if (!m_serialPort->open(QIODevice::ReadOnly))
{
LogDebug("打开失败!");
b_QRCodeDeviceAvailable = false;
//ui.pb_QRcode->setEnabled(false);
}
//如果串口可以被打开
else
{
LogDebug("串口打开成功!");
//设置串口属性
m_serialPort->setBaudRate(QSerialPort::Baud115200, QSerialPort::AllDirections);//设置波特率和读写方向
m_serialPort->setDataBits(QSerialPort::Data8); //数据位为8位
m_serialPort->setFlowControl(QSerialPort::NoFlowControl);//无流控制
m_serialPort->setParity(QSerialPort::NoParity); //无校验位
m_serialPort->setStopBits(QSerialPort::OneStop); //一位停止位
m_serialPort->clearError();
m_serialPort->clear();
b_QRCodeDeviceAvailable = true;
//绑定读取数据的入口
connect(m_serialPort, SIGNAL(readyRead()), this, SLOT(slot_receiveQRcodeInfo()));
//m_serialPort->write(QString("0x1b,0x32").toLatin1());
} //读取二维码识别数据
m_serialPort->waitForReadyRead(100);
QByteArray info = m_serialPort->readAll();