找回密码
 立即注册
收起左侧

Qt串口给设备发送数据

5
回复
8062
查看
[复制链接]
累计签到:5 天
连续签到:1 天
来源: 2017-1-6 15:34:52 显示全部楼层 |阅读模式
2Qter豆
Qt串口给设备发送数据之后,设备会回复一个ok。我这边在发送数据之后该如何等待接收“ok”呢?直接在程序里面顺序执行
(write;
   read;)可以吗?
我这边该如何判断设备发送ok过来了呢?
该怎么实现这个功能?

回复

使用道具 举报

累计签到:618 天
连续签到:1 天
2017-1-6 16:51:58 显示全部楼层
串口收数据是另外的消息触发,只需要将串口收到的消息保存到数组中,在串口发送数据后,利用定时函数查询串口收到的数据是否有需要的数据即可。
回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-1-6 16:58:42 显示全部楼层
liuchangyin 发表于 2017-1-6 16:51
串口收数据是另外的消息触发,只需要将串口收到的消息保存到数组中,在串口发送数据后,利用定时函数查询串 ...

void wss::Read_data()
{
    QByteArray state_return = wsscomm.readAll();
    qDebug()<<state_return;
    if(state_return == "OK")
    {
        printf("Wss is ok");
    }
}

void wss:n_State_wss_clicked()
{
    wsscomm.write("sus?");
    connect(&wsscomm,SIGNAL(readyRead()),this,SLOT(Read_data()));

}


这样可以吗
回复

使用道具 举报

累计签到:618 天
连续签到:1 天
2017-1-6 17:04:55 显示全部楼层
aizhanglua12 发表于 2017-1-6 16:58
void wss::Read_data()
{
    QByteArray state_return = wsscomm.readAll();

这是手动去读串口吧?应该是自动读取串口数据,否则可能会丢数据,串口的操作可以看本社区的作品Wincom和Lincom更新升级之作——QCom跨平台串口调试助手
QCom跨平台串口调试助手 « Qt开源社区–致力于Qt普及工作!
http://www.qter.org/?page_id=203

回复

使用道具 举报

累计签到:5 天
连续签到:1 天
2017-1-6 17:19:41 显示全部楼层
liuchangyin 发表于 2017-1-6 17:04
这是手动去读串口吧?应该是自动读取串口数据,否则可能会丢数据,串口的操作可以看本社区的作品Wincom和 ...

我只有发送了sus之后,设备才会给我回复ok。我在write之后,等待readyRead()信号,当串口接收到数据之后会触发这个信号,这个时候我只要在对应的槽函数去把数据读取出来就可以了。。。我是这样理解的。。
回复

使用道具 举报

累计签到:618 天
连续签到:1 天
2017-1-6 17:26:15 显示全部楼层
aizhanglua12 发表于 2017-1-6 17:19
我只有发送了sus之后,设备才会给我回复ok。我在write之后,等待readyRead()信号,当串口接收到数据之后 ...

正常是有一个线程不断地读取串口,将串口数据保存到串口数组,发送串口命令前可以清空数组,发送命令后等待一定时间去查看串口数组是否有需要收到的数据。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了