windows下第一次打开QextSerialPort串口无法读写问题?

时间:2021-01-22 16:57:23
本人写了个程序,运行与windows。当刚开电脑时,运行程序并打开串口,串口打开成功,但是无法读写。如果先用串口调试助手打开串口后,再运行程序并打开串口,串口打开成功并可读写。究竟是什么回事呢?部分代码如下

void SystemSet::OpenCom()
{
char temp[16];
//打开串口
if(!(serialPort->isOpen()))
{
//设置串口名
serialPort->setPortName("COM1");
//设置mode
serialPort->setQueryMode(QextSerialPort::EventDriven);
//设置波特率
serialPort->setBaudRate(BAUD57600);
//设置控制
serialPort->setFlowControl(FLOW_OFF);
//设置校验位
serialPort->setParity(PAR_EVEN);
//设置数据位
serialPort->setDataBits(DATA_8);
//设置停止位
serialPort->setStopBits(STOP_1);
//设置读写性
serialPort->open(QIODevice::ReadWrite);
if(serialPort->isOpen()) 
{
serialPort->flush();
uiSystemSet.serialButton->setText("关闭串口");
connect(serialPort, SIGNAL(readyRead()), SLOT(serialRead()));
}

}
else
{
serialPort->close();
if(!(serialPort->isOpen()))
{
uiSystemSet.serialButton->setText("打开串口"); 
serialPort->disconnect();
}
}
}

7 个解决方案

#1


饿。是不是因为没设置超时?

#2


监视一下都操作了什么

see link below:

下载地址:
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol

感觉好别忘了给个review(评论),谢谢!

#3


我也碰到同样的问题,我用的是QextSerialPort-1.2 win7 环境下,求解?

#4


引用 3 楼 hanteryubw 的回复:
我也碰到同样的问题,我用的是QextSerialPort-1.2 win7 环境下,求解?


我也遇到过,先设置好串口信息,再打开串口。

#5


我也是一样的问题,请教一下楼主,后来你有没有解决了啊?

#6


引用 5 楼  的回复:
我也是一样的问题,请教一下楼主,后来你有没有解决了啊?

去QextSerialPort仓库中下载最新的源码即可,或者你等 QextSerialPort-1.2RC 源码包

#7


我也遇到过,在serialPort->open(QIODevice::ReadWrite);之后在设置端口就好了。
void SystemSet::OpenCom()
{
char temp[16];
//打开串口
if(!(serialPort->isOpen()))
{
//设置串口名
serialPort->setPortName("COM1");
//设置读写性
serialPort->open(QIODevice::ReadWrite);
//设置mode
serialPort->setQueryMode(QextSerialPort::EventDriven);
//设置波特率
serialPort->setBaudRate(BAUD57600);
//设置控制
serialPort->setFlowControl(FLOW_OFF);
//设置校验位
serialPort->setParity(PAR_EVEN);
//设置数据位
serialPort->setDataBits(DATA_8);
//设置停止位
serialPort->setStopBits(STOP_1);

if(serialPort->isOpen()) 
{
serialPort->flush();
uiSystemSet.serialButton->setText("关闭串口");
connect(serialPort, SIGNAL(readyRead()), SLOT(serialRead()));
}

}
else
{
serialPort->close();
if(!(serialPort->isOpen()))
{
uiSystemSet.serialButton->setText("打开串口"); 
serialPort->disconnect();
}
}
}

#1


饿。是不是因为没设置超时?

#2


监视一下都操作了什么

see link below:

下载地址:
http://download.cnet.com/ComTrace/3000-2218_4-75156892.html?tag=mncol

感觉好别忘了给个review(评论),谢谢!

#3


我也碰到同样的问题,我用的是QextSerialPort-1.2 win7 环境下,求解?

#4


引用 3 楼 hanteryubw 的回复:
我也碰到同样的问题,我用的是QextSerialPort-1.2 win7 环境下,求解?


我也遇到过,先设置好串口信息,再打开串口。

#5


我也是一样的问题,请教一下楼主,后来你有没有解决了啊?

#6


引用 5 楼  的回复:
我也是一样的问题,请教一下楼主,后来你有没有解决了啊?

去QextSerialPort仓库中下载最新的源码即可,或者你等 QextSerialPort-1.2RC 源码包

#7


我也遇到过,在serialPort->open(QIODevice::ReadWrite);之后在设置端口就好了。
void SystemSet::OpenCom()
{
char temp[16];
//打开串口
if(!(serialPort->isOpen()))
{
//设置串口名
serialPort->setPortName("COM1");
//设置读写性
serialPort->open(QIODevice::ReadWrite);
//设置mode
serialPort->setQueryMode(QextSerialPort::EventDriven);
//设置波特率
serialPort->setBaudRate(BAUD57600);
//设置控制
serialPort->setFlowControl(FLOW_OFF);
//设置校验位
serialPort->setParity(PAR_EVEN);
//设置数据位
serialPort->setDataBits(DATA_8);
//设置停止位
serialPort->setStopBits(STOP_1);

if(serialPort->isOpen()) 
{
serialPort->flush();
uiSystemSet.serialButton->setText("关闭串口");
connect(serialPort, SIGNAL(readyRead()), SLOT(serialRead()));
}

}
else
{
serialPort->close();
if(!(serialPort->isOpen()))
{
uiSystemSet.serialButton->setText("打开串口"); 
serialPort->disconnect();
}
}
}