OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3741|回复: 9

串口协议问题,自己创新一个,该怎么按照一下要求写出

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-3-7
在线时间
4 小时
发表于 2020-4-15 20:20:27 | 显示全部楼层 |阅读模式
1金钱
自己设计一个协议程序,已开头首个字符作为有效数据段的判断依据,
首个字符设定为0x02,第2字符设置为发送字符长度,
该字符长度值为 从第3个数据开始,
到数据结束为止(例如 0x270312fe8,该串数据有效,第一位是2,
第2位7表示有效数据长度为7,有效数据为后面7位:0312fe8)。
即要求单片机当收到,首个字符是0x02的数据时,则判断为有效数据,
则依据第2个字符的数据len,读取随后有效数据字符,
将其储存到设定的字符数组中。 如果首个字符不是0x02,则数据并非有效,
重新开始读取。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2020-3-7
在线时间
4 小时
 楼主| 发表于 2020-4-15 21:03:43 | 显示全部楼层
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-4-15 23:34:06 | 显示全部楼层
用2容易出问题 用[] ()这样扩主数据处理接收都简单
回复

使用道具 举报

11

主题

99

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5568
金钱
5568
注册时间
2015-11-5
在线时间
712 小时
发表于 2020-4-15 23:47:15 | 显示全部楼层
你的描述有点问题,0x270312fe8这啥玩意儿。。不应该是u8类型的字节流吗,“第一位是2”应该是指第一字节是0x02吧。大致能懂你的意图,你写个状态机就好了,就是一个switch case语句,比如第一个状态叫find_head,这个状态下就一直遍历数据查找0x02,找到后就跳到下一个状态机,比如叫get_len,然后在加上get_data,data_check等状态机。最好加上解析超时机制。另外还要考虑连续的2个0x02的情况。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2020-4-16 00:58:43 | 显示全部楼层
自己努力
回复

使用道具 举报

4

主题

380

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3088
金钱
3088
注册时间
2015-10-17
在线时间
320 小时
发表于 2020-4-16 08:34:44 | 显示全部楼层
单片机机速度够快,在串口中断直接处理,参考原子的例子。不够快就中断时存到数组,弄个标志,在主程序处理。
回复

使用道具 举报

32

主题

236

帖子

0

精华

高级会员

Rank: 4

积分
993
金钱
993
注册时间
2017-8-11
在线时间
137 小时
发表于 2020-4-16 11:37:39 | 显示全部楼层
这个根本不用自己创新设计,modbus,dlt645等等协议,很多都可以参考,资料还很多。无非就是帧头帧尾,crc校验,长度,控制码,数据
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2020-4-16 15:42:27 | 显示全部楼层
无非就是收发的处理,发的时候是自己循环发还是利用中断标志位和中断来发。接收的时候是根据帧头长度帧尾来接收一帧数据还是利用超时。等等。协议这种玩意随便你咋定,无非就是你怎么定比较科学而已。当然如果你为的只是讨一个串口程序,当我没说反正你也听不懂
猪猪熊呢?
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2020-4-16 16:18:41 来自手机 | 显示全部楼层
楼主外包,我给你做
回复

使用道具 举报

10

主题

271

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1236
金钱
1236
注册时间
2015-5-14
在线时间
352 小时
发表于 2020-4-18 08:07:12 来自手机 | 显示全部楼层
建议:1、加上校验码;2、如果没有校验码加上通信间隔设置;3、如果以上都没有,则解析按着不支持乱码解析切不支持连续帧
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-25 14:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表