导航:首页 > 数据处理 > 单片机如何解析json串口数据

单片机如何解析json串口数据

发布时间:2023-07-29 12:04:12

⑴ 单片机串口数据处理框架

    串口通信具有广泛的应用,一方面串口配置简单,仅需3根线(tx、rx、gnd)即可实现通信,另一方面串口具备全双工通信的能力。因此串口开发是单片机开发中一个重要的能力。
    串口通信的难点在于,每条通信命令的长度可能不一致,何时判断数据包是否接收完整,每包数据如何校验,在单片机开发中均占用很大的工作量。

    由于单片机往往同时对接多个串口通信,可以将所有的通信统一处理,收到一包数据后再通知相应的线程进行处理。

     writeptr readptr 分别记录串口缓冲区内数据写入和读取的指针(标号)。一般将缓冲区构建为环形缓冲, *writeptr==*readptr 认为缓冲区空, *writeptr==*readptr + 1 认为缓冲区满。 ctrl 字段用来控制是否开始计时数据接收超时,在超时时间内没接收到一个字节的数据,重新累计数据包超时时间, timeout 字段则是具体的超时时间。 discart 字段用来丢弃不完整的数据包,如果数据包在规定的时间内均没有收到完整数据,则将该数据包丢弃。
系统初始化时,对每个字段进行赋值:

    串口数据的接收既可以采用中断的方式,也可以采用DMA的方式。尽管中断方式会影响CPU使用效率,但从实际使用效果上来看,一般不是时间要求非常高的应用,中断的影响非常小。

    每收到一包数据,将 timeout 置零,并将 ctrl 置一,开始计算数据包是否超时。由于缓冲区是环形的, UartCtrl[UART_VIDEO].writeptr 字段增加时需要注意对边界的处理。
    通过定时器中不断检测相应的字段,来决定是否通知线程处理收到的数据包,或者丢弃不完整的数据包。

    串口数据包往往具有比较简单数据结构,如包头、包尾、长度、校验等字段,通过对每包数据相应字段的检验,判断数据包是否完整及合法。不同的传感器的通信格式一般都比较类似,因此可以采用以下的流程进行检验。最后既可以将合格的数据包复制到另外的缓存进行处理,也可以在该函数中直接处理以节省空间。

    处理完一包数据以后,若发现剩余长度大于0,认为环形缓存中还有待处理的数据包,重新进入该函数进行处理。

    串口数据的处理在单片机开发中占有很大比重的工作量,通过上述数据结构和相应处理函数,可以将不同的传感器的数据用同样的方式处理,有效提高开发效率。其他总线的数据处理,也可以采用类似的方式进行。

阅读全文

与单片机如何解析json串口数据相关的资料

热点内容
小程序如何写头部刘海 浏览:907
做捕鱼代理有什么技能 浏览:128
文华财经美黄金交易保证金多少 浏览:981
数字货币交易所点卡用来做什么 浏览:100
附近哪里有劳务市场吕梁 浏览:652
微信小程序代码托管在哪里 浏览:695
产品分类台是用的什么电机 浏览:546
开发商为什么找房产代理 浏览:386
代理记账要怎么学 浏览:794
金蝶k3基础信息如何共享 浏览:477
丽水狗狗市场在哪里 浏览:315
潍坊相关产品有哪些 浏览:195
海鲜批发市场哪些最正宗 浏览:861
c程序必须包含什么 浏览:980
大智慧交易怎么登录 浏览:781
教培从业人员学什么技术好 浏览:496
电脑键盘怎么关闭应用程序 浏览:663
专业店和综合店哪个技术好 浏览:207
为什么显示没有数据总览 浏览:553
ok交易所怎么找到法币 浏览:836