搜索
bottom↓
回复: 18
打印 上一主题 下一主题

多功能矩阵按键如何采用485通信方式(多机通信)

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2017-2-9 11:11:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想编写一个一主机多从机的485通信程序(暂定modbus协议,目前还没有写)。方式是:从机的按键为2列5行,共10个按键;其中有单击和长按,采用马潮老师状态机按键的路子实现了,但是问题就是出现在实现后的情况。我做的处理1()是长按(按下串口发送一个数据,松开发送一个数据),单击就是(按下发送一个数据)。如果我这么处理主机能不能识别出从机是长按还是单击???
另外一种策略(2)是长按的时候从机不断的向主机发送数据,单击的时候从机向主机发送一个数据。但是主机如果我采用串口中断的方式,那么从机长按时,会影响主机工作效率。

处理(1)的做法我又担心串口通信会丢包。这样我在主机中作判断,就会出错。策略(2)不断的发不用担心丢包,但是主机会不断中断,影响效率。

我是个新手,特请教老师!

出0入0汤圆

2
发表于 2017-2-9 11:50:45 | 只看该作者
按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!

出0入0汤圆

3
发表于 2017-2-9 11:51:03 | 只看该作者
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题

出0入0汤圆

4
 楼主| 发表于 2017-2-9 13:25:05 | 只看该作者
Percychiu 发表于 2017-2-9 11:50
按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!

不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。

出0入0汤圆

5
 楼主| 发表于 2017-2-9 13:28:55 | 只看该作者
dzymushi 发表于 2017-2-9 11:51
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题

有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很清楚。我不知道从机(按键板)长按时,从机是一直发送数据给主机还是通过按下松开发送两个数据给主机。除了这两种方式,还有没有更好的解决办法。

出0入0汤圆

6
发表于 2017-2-9 14:06:47 | 只看该作者
pillar2060 发表于 2017-2-9 13:28
有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很 ...

我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低

出0入0汤圆

7
发表于 2017-2-9 14:30:30 | 只看该作者
pillar2060 发表于 2017-2-9 13:25
不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。 ...

那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。

出0入4汤圆

8
发表于 2017-2-9 14:32:54 | 只看该作者
上can总线吧...

楼主能介绍一下使用环境,大家也可以帮忙出主意呀

出0入0汤圆

9
 楼主| 发表于 2017-2-9 16:15:27 | 只看该作者
dzymushi 发表于 2017-2-9 14:06
我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低 ...

按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是,主机如何实时了解从机(按键板的按键状态)。

出0入0汤圆

10
 楼主| 发表于 2017-2-9 16:21:28 | 只看该作者
laujc 发表于 2017-2-9 14:32
上can总线吧...

楼主能介绍一下使用环境,大家也可以帮忙出主意呀

谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。
主要遇到的问题是:主机如何实时监控从机按键板的按键的状态。(说通俗点:就相当于所有按键都在主机上一样。)。
前辈可以给点建议。

出0入0汤圆

11
 楼主| 发表于 2017-2-9 16:25:01 | 只看该作者
Percychiu 发表于 2017-2-9 14:30
那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。 ...

从机可以判断长短按,如果设置了标志位,从机长按的时候,从机会有时间延时,长按标志位置位,此时主机并没有任何操作,这样会让使用者有滞后感。
我的问题是:主机要尽可能的实时了解从机的按键状态(就相当于按键在主机上的效果一样)。

出0入4汤圆

12
发表于 2017-2-9 16:47:57 | 只看该作者
pillar2060 发表于 2017-2-9 16:21
谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。 ...

我怎么感觉每个按键都直接连接到主控芯片上更简单呢?
通信的东西,一个是有一定延时,另一个是有时会不稳定。

出0入0汤圆

13
 楼主| 发表于 2017-2-10 08:31:19 | 只看该作者
laujc 发表于 2017-2-9 16:47
我怎么感觉每个按键都直接连接到主控芯片上更简单呢?
通信的东西,一个是有一定延时,另一个是有时会不 ...

但是按键不在主机上。

出0入4汤圆

14
发表于 2017-2-10 08:49:23 | 只看该作者
pillar2060 发表于 2017-2-10 08:31
但是按键不在主机上。

我的意思是能不能一根线引到主机上去?

出0入0汤圆

15
发表于 2017-2-10 10:05:35 | 只看该作者
楼主混乱了,按键长按短按对于485来说只是接收的数据不同。

出0入0汤圆

16
 楼主| 发表于 2017-2-10 10:25:03 | 只看该作者
李贝 发表于 2017-2-10 10:05
楼主混乱了,按键长按短按对于485来说只是接收的数据不同。

能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如I/O操作)。
您方便给我解释一下吗?谢谢

出0入0汤圆

17
 楼主| 发表于 2017-2-10 10:25:44 | 只看该作者
laujc 发表于 2017-2-10 08:49
我的意思是能不能一根线引到主机上去?

不可以。必须485通信的方式

出0入0汤圆

18
发表于 2017-2-10 10:32:07 | 只看该作者
pillar2060 发表于 2017-2-10 10:25
能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如 ...

从机开个内存存键值,当轮询到当前从机时发送数据,主机根据接收到的数据不同执行相应的动作

出0入0汤圆

19
发表于 2017-2-10 12:11:13 | 只看该作者
pillar2060 发表于 2017-2-9 16:15
按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是, ...

如果可以做AD的话,联线不能太长。从机长短按键可以调小一点时间,如时间200MS就判断长键。等待时间就不会太长
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 04:38

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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