用qserialport类进行串口通信,读不到写入串口的数据

cdcc1111 2013-11-06 10:16:34
能够正确打开串口,设置参数,也能够写入,在writebuffer里能够查看到,但是读不了写入的数据。
程序如下

/***************************************************************************************************
* \brief ouvrir_port_com()
* ouvrir le port de com chosir, faire le setting de ce port
* \param
**************************************************************************************************/
void Widget::ouvrir_port_com()
{
myCom= new QSerialPort(this);
myCom->setPortName("COM1");

bool ouvert=myCom ->open(QIODevice::ReadWrite);
if(ouvert)
{
myCom->setBaudRate(QSerialPort::Baud57600);
myCom->setDataBits( QSerialPort::Data8);
myCom->setParity(QSerialPort::NoParity);
myCom->setStopBits(QSerialPort::OneStop);
myCom->setFlowControl(QSerialPort::NoFlowControl);
myCom->setRequestToSend(true);
myCom->setDataTerminalReady(true);
}else
{
QMessageBox::critical(this, tr("Echec de l'ouverture"), tr("Ce port de com ne peut pas être ouvrire ") + port_com + tr("\n Ce port de com n'est pas dipnible"), QMessageBox::Ok);
return;
}

connect(myCom,SIGNAL(readyRead()),this,SLOT(readCom()));

send_command();
}
void Widget::send_command()
{
QString x="OK?";
myCom->write(x.toLatin1());
}

void Widget::readCom()
{
QByteArray temp = myCom->readAll();

ui->textBrowser->insertPlainText(temp);
}


...全文
1320 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
kelly8082 2015-11-10
  • 打赏
  • 举报
回复
试一下用waitForReadyRead 和waitForBytesWritten这两个函数
  • 打赏
  • 举报
回复
请问楼主解决这个问题了吗??我也接收不到数据。但是能发送数据。我的QQ291614948,求帮助
从森林里来 2014-01-06
  • 打赏
  • 举报
回复
bytesavailable()读的都是 -1
从森林里来 2014-01-06
  • 打赏
  • 举报
回复
我能发出去,但是收不到,不过如果通过pc将板子程序启动的话就可以,哎不知道怎么回事
Nestler 2013-12-13
  • 打赏
  • 举报
回复
2 3脚直连,我的也收不到数据。。。
努力的草根 2013-12-10
  • 打赏
  • 举报
回复
请问楼主问题解决了吗
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
你这需要把串口上的2、3脚连起来,也就是发送和接收脚连起来
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
引用 12 楼 LazyDreamHunter 的回复:
你是想通过串口发送出去,又通过串口接收你刚刚发送的数据吗
是的哈
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
你是想通过串口发送出去,又通过串口接收你刚刚发送的数据吗
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
引用 10 楼 LazyDreamHunter 的回复:
能接收数据不,
用realterm是能接受发送的数据的
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
能接收数据不,
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
引用 8 楼 LazyDreamHunter 的回复:
还有一种情况,你昨天是在debug模式下成功的还是在release下成功的,这两种情况下编译器优化会不同,
都是debug,没有用过release
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
还有一种情况,你昨天是在debug模式下成功的还是在release下成功的,这两种情况下编译器优化会不同,
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
引用 6 楼 LazyDreamHunter 的回复:
把断点设到发送去,单步跟踪下,看看有没有发出去,另外串口有没有打开失败,这些都要检查下,如果这些都确认无误,就找硬件原因了, 重点看通信线故障,
怎么样确定有没有发送出去呢?我用realterm试了一下,应该没有 硬件故障,可以正常响应。我很确定串口已经成功打开了
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
把断点设到发送去,单步跟踪下,看看有没有发出去,另外串口有没有打开失败,这些都要检查下,如果这些都确认无误,就找硬件原因了, 重点看通信线故障,
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
是不是通信线的问题,那就找找是不是硬件故障
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
引用 1 楼 LazyDreamHunter 的回复:
重点检查一下两边的波特率对不对,位数对不对,
波特率是给定的,我试着用了一下realterm同样的波特率,位数,没有问题,最关键,我前天都能用。昨天就用不了了。完全不知道为什么
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
大家帮帮忙啊
cdcc1111 2013-11-07
  • 打赏
  • 举报
回复
怎么没有人回复啊,自己顶一下
RabinSong 2013-11-07
  • 打赏
  • 举报
回复
重点检查一下两边的波特率对不对,位数对不对,

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧