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

求指点双机串口通信过程

5
回复
6781
查看
[复制链接]
累计签到:27 天
连续签到:1 天
来源: 2015-11-15 18:45:52 显示全部楼层 |阅读模式
1Qter豆
主机发送“0x55 0xaa”,设备返回"0x01"后确认连接。
“紧接着”主机发送“0x55 0x10”,请求设备返回0x10 (16)个参数。

目前的状况是,主机发送"0x55 0xaa"并正确接收了设备返回的"0x01",接收是在readyRead()触发的槽slot_readyRead()中处理的。问题来了,在slot_readyRead()中判断正确接收0x01之后顺便把"0x55 0x10"发送给设备了,结果是主机没有收到设备返回的16个参数。(通过另外一个串口监控通信过程发现:设备收到了0x55 0x10,并且正确返回了16个参数)。

以上的通信过程基本没有什么时间间隔,如下:
时间轴:---------------------------------------------------------------------------------------
主机发送:0x55 0xaa--------0x55 0x10--------------------------------------------------
设备返回:--------------0x01---------------0x00 0x01 0x02 ......0x0e 0x0f----------

伪代码如下:
slot_pushButton()
{
        flagRead = 0x01;
        MyCom->write(0x55, 0xaa);
}

slot_readyRead()
{
        QByteArray byte;
        byte = MyCom->readAll();
        /* 确认连接部分 */
        if(flagRead == 0x01)
        {
                if(byte == 0x01)
                {
                        flagRead = 0x02;
                        MyCom->write(0x55, 0x10);
                }
        }
        /* 参数读取部分 */
        if(flagRead == 0x02)
        {
                将读取到的数据输出到textEdit
        }
}


目前是参数返回后,主机错过了接收,我的想法是:在slot_readRead()中发送"读取参数"指令是不合适的,但是不知道该怎么处理,请大家帮忙出出主意,谢谢!


最佳答案

查看完整内容

你吧读到的数据放到一个专门的函数去处理?用一个变量装起来试试
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-11-15 18:45:53 显示全部楼层
你吧读到的数据放到一个专门的函数去处理?用一个变量装起来试试
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
2015-11-20 19:04:54 显示全部楼层
z55716368 发表于 2015-11-20 17:03
你吧读到的数据放到一个专门的函数去处理?用一个变量装起来试试

我还是没明白bytesWritten和readyRead的含义,最后用了阻塞的方式waitForBytesWritten实现了,先这么用了,等以后理解了再回头升级。

点评

我先在的项目就是用的这个,相当于设置了一下超时时间之类的  详情 回复 发表于 2015-11-21 20:20
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-11-21 20:20:55 显示全部楼层
tovax 发表于 2015-11-20 19:04
我还是没明白bytesWritten和readyRead的含义,最后用了阻塞的方式waitForBytesWritten实现了,先这么用了 ...

我先在的项目就是用的这个,相当于设置了一下超时时间之类的
回复

使用道具 举报

累计签到:27 天
连续签到:1 天
2015-11-22 09:24:03 显示全部楼层
z55716368 发表于 2015-11-21 20:20
我先在的项目就是用的这个,相当于设置了一下超时时间之类的

嗯嗯,处理方法完全一样,你也是做单片机的?

点评

上位机软件 你们Qt做单片机么?  详情 回复 发表于 2015-11-22 18:00
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-11-22 18:00:15 显示全部楼层
tovax 发表于 2015-11-22 09:24
嗯嗯,处理方法完全一样,你也是做单片机的?

上位机软件 你们Qt做单片机么?
回复

使用道具 举报

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

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