Qt串口能收不能发,是什么原因?
把串口的2、3反接模拟。一个串口在自己写的程序中代开,另一个用串口调试助手打开。
相关代码如下:
myCom = new QextSerialPort;
timer = new QTimer;
connect(timer,SIGNAL(timeout()),this,SLOT(readCom()));
myCom->setPortName("com1");
myCom->setBaudRate(BAUD9600);
myCom->setDataBits(DATA_8);
myCom->setStopBits(STOP_1);
myCom->setParity(PAR_NONE);
myCom->setFlowControl(FLOW_OFF);
myCom->setTimeout(20);
myCom->setQueryMode(QextSerialPort::Polling);
if(myCom->open(QIODevice::ReadWrite))
{
timer->start(20);
}else
{
qDebug()<<"COM1 open error!";
}
void UPS_Com::readCom()
{
if(myCom->bytesAvailable()>0)
{
QByteArray data = myCom->read(1);
if(*data.data()>='0'&&*data.data()<='6')
{
qDebug()<<"has read"<<data;
*data.data() = 0xcc;
myCom->write(data);
}
}
}
运行结果是
能收不能发。myCOm->write(data);没有结果。
但是两个串口都用串口调试助手打开,就没有一点问题,说明还是我的程序有问题。求指点///
[解决办法]
将2.3引脚短接了,是否有信号?没有的话,可能就有问题了