2855|3

79

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于一个串口类定义两个子串口类对象,和两个通信协议的问题. [复制链接]

问题描述:
一个串口类,采用线程,然后定义两个类对象,分别用于两个通信协议,
RS485的MODBUS通信协议(假设为A协议)和用于GPRS上的通信协议(假设为B协议),
那么我原本是在串口类中采用回调函数来处理接收到的数据,
但是由于,底层的驱动是是每接收到8个字节的数据就往应用层发送,
那么如果一串数据是20个,那么就要调用多次回调函数,
而我原先是在回调函数进行数据接收,校验错误,然后直接回发数据的.

(1)那么,我就想在串口类里,直接将20个数据接收完,然后传给全局变量,再调用回调函数处理,接收到的数据,
但是这样就引起了数据交叉问题.

(2)或者,我将两个协议处理成两个类,然后(A协议类和B协议类,在串口类中作为子类)
串口类中有数据的时候,就调用A,B两个协议类,的接收处理数据方法来处理接收到的数据.

请问,这个问题应该如何处理巧妙一些.

最新回复

你说的协议标识符是要协议有标识符,那到可以, 就是一个协议的头字节来判断吧,或者协议的长度来判断,这样是吧。 不过,我用串口类,构造两个子串口类对象,因为,不同的串口,硬件串口接的通信设备不一样。 然后哪个串口的数据过来,就调用哪个子串口类的回调函数处理,、 问题是,它底层接到8个字节数据,就调用一次回调函数, 现在我把回调函数进行处理?明天再调试下,看能搞定GPRS和上位机正常通信吗? 哎,国庆都快到了,我要赶紧搞啊,不然,国庆没得玩了,哎。  详情 回复 发表于 2009-9-25 23:36
点赞 关注

回复
举报

86

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
两个协议无非就是对同一数据的两种不同处理方式,串口接收到完整数据后,直接在回调函数中根据协议标识分开处理不就可以了?
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
就是在串口类中定义一个协议标识变量,标识为0就调用a协议,1就调用b协议
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
你说的协议标识符是要协议有标识符,那到可以,
就是一个协议的头字节来判断吧,或者协议的长度来判断,这样是吧。
不过,我用串口类,构造两个子串口类对象,因为,不同的串口,硬件串口接的通信设备不一样。
然后哪个串口的数据过来,就调用哪个子串口类的回调函数处理,、
问题是,它底层接到8个字节数据,就调用一次回调函数,
现在我把回调函数进行处理?明天再调试下,看能搞定GPRS和上位机正常通信吗?
哎,国庆都快到了,我要赶紧搞啊,不然,国庆没得玩了,哎。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表