用QextSerialPort第三方串口时,发出去的数据正常(转换为Byte都是正常的),可到了接收方面,接收的数据不是0X80就是0X00,很不解
QextSerialPort 下载的是 qextserialport-1.2win-alpha.zip
如图:发送显示正常
源码如下:
QextserialportDEMO::QextserialportDEMO(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
QObject::connect(ui.pbtnSetting, SIGNAL(clicked()), this, SLOT(OnpbtnSetting()));
QObject::connect(ui.pbtnSend, SIGNAL(clicked()), this, SLOT(OnpbtnSend()));
serialName = "COM5";
myCom = new Win_QextSerialPort(serialName, Win_QextSerialPort::EventDriven);
connect(myCom, SIGNAL(readyRead()), this, SLOT(Receive()));
}
QextserialportDEMO::~QextserialportDEMO()
{
}
void QextserialportDEMO::OnpbtnSetting()
{
Open();
}
void QextserialportDEMO::OnpbtnSend()
{
Send(QStringLiteral("123"));
//Send(QStringLiteral("中国"));
}
//打开串口
bool QextserialportDEMO::Open()
{
if (!myCom->isOpen())
{
myCom->setBaudRate(BAUD9600); //设置波特率
myCom->setDataBits(DATA_8); //设置数据位
myCom->setParity(PAR_NONE);
myCom->setStopBits(STOP_1);
myCom->setFlowControl(FLOW_OFF); //设置数据流控制
myCom->setTimeout(TIME_OUT); //设置延时
QString info;
if (myCom->open(QIODevice::ReadWrite))
{
info = QString(QStringLiteral("成功打开串口 Serial NO:%1 BaudRate=%2 DataBits=%3 Paritys=%4 StopBits=%5")
.arg(myCom->portName())
.arg(myCom->baudRate())
.arg(myCom->dataBits())
.arg(myCom->parity())
.arg(myCom->stopBits()));
}
else
{
myCom->close();
}
}
return true;
qDebug("打开串口成功");
}
//关闭串口
void QextserialportDEMO::Close()
{
if (myCom != NULL)
{
myCom->close();
delete myCom;
myCom = NULL;
}
}
BOOL QextserialportDEMO::IsOpen()
{
return myCom->isOpen();
}
//接收数据
void QextserialportDEMO::Receive()
{
QThread::msleep(100);
QString strData;
QByteArray temp = myCom->readAll();
tempData = temp; //将数据存起来
if (!temp.isEmpty())
{
strData = temp;
}
}
QByteArray QextserialportDEMO::ReadData()
{
return tempData;
}
//发送数据
void QextserialportDEMO::Send(QString str)
{
QByteArray buf;
buf = str.toUtf8();
try
{
//发送数据
myCom->write(buf);
}
catch (QString msg)
{
throw (__FUNCTION__ + msg);
}
}
求知情者帮忙,烦劳告知,在下感激不尽