16,792
社区成员




用的是QSerialPort,在进行串口通信的时候可以打开和关闭串口,但是发数据发不出去,硬件用的是CC25530,串口通信的灯没有亮说明没有发数据。 用SSCOM可以正常通信,自己写的qt就不太行,是什么原因呢?
代码段如下
//led指令控制函数
/*/第一颗灯
void SerialLedCtr::on_btn_Led1_clicked()
{
QString strButFlag = ((QPushButton*)sender()) -> text();
//串口写函数
// QString strData = "R0#";
if(strButFlag == "开")
{
//qDebug()<<strButFlag;
ui -> btn_Led1 -> setText("关");
ui->lbl_Led1->setPixmap(QPixmap(":/new/img/redled.png"));
//判断串口数据
if(qSerPort.write("R1#") == -1){ //这里就发不出去了
ui->pT_MesageDis->setStyleSheet("color:red");
ui->pT_MesageDis->appendPlainText("发送失败,串口未发现!!!");
}
else {
ui->pT_MesageDis->setStyleSheet("color:green");
ui->pT_MesageDis->appendPlainText("发送: R1#");
qSerPort.write("R1#");
//qDebug() << arrayData ;
}
}
else
{
//qDebug()<<strButFlag;
ui -> btn_Led1 -> setText("开");
ui->lbl_Led1->setPixmap(QPixmap(":/new/img/blueled.png"));
//判断串口数据
if(qSerPort.write("R0#") == -1){
ui->pT_MesageDis->setStyleSheet("color:red");
ui->pT_MesageDis->appendPlainText("发送失败,串口未发现!!!");
}
else {
ui->pT_MesageDis->setStyleSheet("color:green");
ui->pT_MesageDis->appendPlainText("发送: R0#");
qSerPort.write("R0#");
//qDebug() << arrayData ;
}
}
}
是直接用的别的大佬的源代码,但我无法进行串口的数据发送。
首先你得确定串口通信是正常的,通过sscom发送后,你的下位机是否正确接收了,进而保证参数正确
其次需要确认你的串口初始化是否正确,各项参数是否正确设置了,
ps:去设备那里看一下你的串口号,或者串口被占用,或者之前有过直接打开串口直接拔掉又插上的操作
解决了xdm,串口打开的时候波特率设置了两遍……应该先设置再打开。
事实证明小白不要拿着别人的代码就运行,出问题找的方向都不对,自己老老实实看代码吧……
刚才才注意到按按钮的时候qt会输出QIODevice::write: device not open,这个如何解决。。小白一枚