关于通信中数据接收的处理方法讨论

对于很多初学者, 尤其是刚接触通信行业的初学者而言, 通信中数据的接收如何才能做的比较妥善?


我们再写上位机程序时(指一般的上位机程序, 这个数据随便怎么处理都问题不大), 我们可以直接接受串口的READ函数中读取数据, 没读取时候, 操作系统会自动帮助缓存, 再比如网络也是同样的道理, 所有缓存是由操作系统来帮忙处理。 但是如果遇到像单片机, 或者直接要重新封装一个库的时候, 或者进行数据并发处理的时候。 这个时候就必须像处理原始数据那样, 因为已经没有操作系统的支持了, 所有的缓存得自己想办法处理。 


经过多年的编程经验, 在进行通信数据接收处理时, 首先考虑的是采用一种数据结构, 将读取的数据进行缓存(很多情况下, 是要连续接收完整个包数据后才能对数据进行分析的), 然后进行分析工作。 这里提供2中会遇到的情况:

1. 单接收情况:

所谓单接收, 是指点对点通信。 这种通信方式非常简单, 但是对于数据的完整性来说, 保证数据不会丢失, 比较好的做法是先缓冲, 然后分析。 一般采用循环队列(CircleQueue)进行数据的缓存, 启动一个任务一直负责这个缓存的数据分析, 最后交给一个任务去处理。 

2. 并发接收情况:

所谓并发, 指对点对1点, 或多点对多点的通信。 同样, 为了数据的完整性, 防止数据丢失。 采用循环队列进行各自任务的数据缓存(或统一缓存, 根据具体的情况), 并启动相应的任务进行缓存数据的分析, 最后交到相对应的任务进行数据的处理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值