论多串口通信架构(方便多编程语言和不同硬件之间移植)

本文探讨了多串口通信架构,旨在实现方便的多编程语言和硬件之间的移植。通过文件层面的组织、数据流动的图解、程序流程图和代码模板,阐述了一个适用于不同场景的通用架构,特别强调了使用队列增强通信的可靠性和指令识别。
摘要由CSDN通过智能技术生成

论多串口通信架构(方便多编程语言和不同硬件之间移植)

标签(空格分隔): 多串口 队列 多语言移植


写此文的目的有二:
  1、方便自己,觉得在以后的工程中,总是避不过多串口的问题,不像单串口时那么简单,考虑到可靠性,要使用队列,而且指令有首尾标志位时,也需要识别。如果只用一种语言写,在用另外一种语言或者另外一种硬件时,又要重新想结构。希望能写出一个架构,每次套用即可。

  2、也是把经验分享给新手,节省时间。

下面以C语言为例来说明架构

1、文件层面上

UART_QUEUE.h UART_QUEUE.c
变量定义:队列结构体、接收完整指令数组
函数声明:.c文件里的函数
1、初始化 :
Uart_Init(UARTX) 初始化UARTX的寄存器,设置波特率,定义这个口的队列,接收\发送完整指令数组,还有所有串口初始化的公用部分。
2、队列初始化:
Uart_Queue_Init(UARTX_queue) 将队列的队首队尾初始化
3、存入队列 :
Uart_Queue_pushAchar(UARTX_queue,data)
将data存入UARTX_queue的队尾
4、取出队列:
Uart_Queue_popAchar(UARTX_queue) 返回值是从队首取出的一个数据
5、计算队列长度:
Uart_Queue_size(UARTX_queue) 若队列中没有数则不进行取数。
6、取出一条完整的指令 :
Uart_Queue_getAcmd(&cmd_bufferX_R[],UARTX_queue)  返回值是指令的长度,若是没有读取到完整的指令则返回0
7、发送一个字节 :
Uart_sendAchar(UARTX,data)
8、发送一个字符串
Uart_sendAcmd(UARTX,data)

2、图解数据的流动


队列初始状态
此处输入图片的描述
队首在队尾后
此处输入图片的描述
队首在队尾前
此处输入图片的描述

3、程序流程图

Created with Raphaël 2.1.0 https://www.zybuluo.com Start
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值