OpenEdv-开源电子网

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

一个串口走两种通信协议,有什么好的办法么?

[复制链接]

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
发表于 2018-5-14 17:44:51 | 显示全部楼层 |阅读模式
1金钱
希望做过的大神指导下!!!

最佳答案

查看完整内容[请看2#楼]

还是没有处理好协议的顺序问题,把串口数据放到缓存池里,解包数据时,优先处理modbus协议的数据,不可能打架的,数据放在缓存池里又不会丢,看来是你用实时处理数据了,这样肯定会有冲突的,所以建个缓存池,才能治根,不然怎么弄都有问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

113

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3321
金钱
3321
注册时间
2017-12-14
在线时间
406 小时
发表于 2018-5-14 17:44:52 | 显示全部楼层
还是没有处理好协议的顺序问题,把串口数据放到缓存池里,解包数据时,优先处理modbus协议的数据,不可能打架的,数据放在缓存池里又不会丢,看来是你用实时处理数据了,这样肯定会有冲突的,所以建个缓存池,才能治根,不然怎么弄都有问题
回复

使用道具 举报

4

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2018-1-31
在线时间
46 小时
发表于 2018-5-14 17:49:54 | 显示全部楼层
什么叫两种协议?如果是指内容的协议,解析不就行了?
以前做过一个协议转发器,用STM32,4个串口,一个串口接PC,判断数据,通过其他3个串口转发。
不知道跟你说的是不是一样。
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-5-14 19:09:26 来自手机 | 显示全部楼层
协议定义的好,跑N种协议都没有问题
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-14 21:44:03 | 显示全部楼层
屋脊雀 发表于 2018-5-14 17:49
什么叫两种协议?如果是指内容的协议,解析不就行了?
以前做过一个协议转发器,用STM32,4个串口,一个串 ...

恩,这么说吧两种协议比如DL645和modbus,收发都只用一个串口。控制经常用DL645协议控制和读取外部信息,modbus只是偶尔把内部参数给PC端。现在用到的问题是,DL645的频繁导致MODBUS不能正常处理和回传。有好的办法么??
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-14 21:45:21 | 显示全部楼层
yklstudent 发表于 2018-5-14 19:09
协议定义的好,跑N种协议都没有问题

恩,协议都是成熟的,就是想找个好的处理机制避免打架。没有跑操作系统。大神有办法么?
回复

使用道具 举报

16

主题

189

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1296
金钱
1296
注册时间
2013-8-27
在线时间
503 小时
发表于 2018-5-15 09:11:22 | 显示全部楼层
那就设好串口中断优先级呗~一般频繁中断的优先级都会设低点,不是很频繁的设高点
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-15 09:15:52 | 显示全部楼层
潜龙探渊 发表于 2018-5-15 09:11
那就设好串口中断优先级呗~一般频繁中断的优先级都会设低点,不是很频繁的设高点

额,我就用一个串口的,想利用程序机制处理下,有好的方法么?
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-15 09:16:59 | 显示全部楼层
潜龙探渊 发表于 2018-5-15 09:11
那就设好串口中断优先级呗~一般频繁中断的优先级都会设低点,不是很频繁的设高点

额,我就用一个串口的,想利用程序机制处理下,有好的方法么?
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-15 09:18:51 | 显示全部楼层
目前让频繁的通信间隔时间长点,可以2种通信协议互不干扰。有没有大神做过更好的方法呢?
回复

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2018-5-15 10:22:43 来自手机 | 显示全部楼层
你现在是怎么处理两种通讯协议的?
回复

使用道具 举报

16

主题

189

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1296
金钱
1296
注册时间
2013-8-27
在线时间
503 小时
发表于 2018-5-15 10:34:17 | 显示全部楼层
wxY29qqFqL 发表于 2018-5-15 09:16
额,我就用一个串口的,想利用程序机制处理下,有好的方法么?

想办法把两种协议融合成一种协议呗
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-16 08:47:10 | 显示全部楼层
潜龙探渊 发表于 2018-5-15 10:34
想办法把两种协议融合成一种协议呗

这个可行是可行,但是要改变标准协议的通信内容,不易推广。还是按照标准的走比较好。
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-16 08:49:37 | 显示全部楼层
yklstudent 发表于 2018-5-15 10:22
你现在是怎么处理两种通讯协议的?

就是同一时间,串口接收到通信内容进行解析判断什么协议的通信然后做响应处理,但是问题就是随机性很大,影响通信的成功率。
回复

使用道具 举报

8

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
157
金钱
157
注册时间
2017-12-14
在线时间
30 小时
 楼主| 发表于 2018-5-16 09:37:35 | 显示全部楼层
feichangkunge 发表于 2018-5-16 09:15
还是没有处理好协议的顺序问题,把串口数据放到缓存池里,解包数据时,优先处理modbus协议的数据,不可能打 ...

非常感谢,我试试去。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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