多功能矩阵按键如何采用485通信方式(多机通信)
想编写一个一主机多从机的485通信程序(暂定modbus协议,目前还没有写)。方式是:从机的按键为2列5行,共10个按键;其中有单击和长按,采用马潮老师状态机按键的路子实现了,但是问题就是出现在实现后的情况。我做的处理1()是长按(按下串口发送一个数据,松开发送一个数据),单击就是(按下发送一个数据)。如果我这么处理主机能不能识别出从机是长按还是单击???另外一种策略(2)是长按的时候从机不断的向主机发送数据,单击的时候从机向主机发送一个数据。但是主机如果我采用串口中断的方式,那么从机长按时,会影响主机工作效率。
处理(1)的做法我又担心串口通信会丢包。这样我在主机中作判断,就会出错。策略(2)不断的发不用担心丢包,但是主机会不断中断,影响效率。
我是个新手,特请教老师! 按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧! 主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题 Percychiu 发表于 2017-2-9 11:50
按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!
不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。 dzymushi 发表于 2017-2-9 11:51
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题
有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很清楚。我不知道从机(按键板)长按时,从机是一直发送数据给主机还是通过按下松开发送两个数据给主机。除了这两种方式,还有没有更好的解决办法。 pillar2060 发表于 2017-2-9 13:28
有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很 ...
我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低 pillar2060 发表于 2017-2-9 13:25
不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。 ...
那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。 上can总线吧...
楼主能介绍一下使用环境,大家也可以帮忙出主意呀 dzymushi 发表于 2017-2-9 14:06
我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低 ...
按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是,主机如何实时了解从机(按键板的按键状态)。 laujc 发表于 2017-2-9 14:32
上can总线吧...
楼主能介绍一下使用环境,大家也可以帮忙出主意呀
谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。
主要遇到的问题是:主机如何实时监控从机按键板的按键的状态。(说通俗点:就相当于所有按键都在主机上一样。)。
前辈可以给点建议。
Percychiu 发表于 2017-2-9 14:30
那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。 ...
从机可以判断长短按,如果设置了标志位,从机长按的时候,从机会有时间延时,长按标志位置位,此时主机并没有任何操作,这样会让使用者有滞后感。
我的问题是:主机要尽可能的实时了解从机的按键状态(就相当于按键在主机上的效果一样)。 pillar2060 发表于 2017-2-9 16:21
谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。 ...
我怎么感觉每个按键都直接连接到主控芯片上更简单呢?
通信的东西,一个是有一定延时,另一个是有时会不稳定。
laujc 发表于 2017-2-9 16:47
我怎么感觉每个按键都直接连接到主控芯片上更简单呢?
通信的东西,一个是有一定延时,另一个是有时会不 ...
但是按键不在主机上。 pillar2060 发表于 2017-2-10 08:31
但是按键不在主机上。
我的意思是能不能一根线引到主机上去? 楼主混乱了,按键长按短按对于485来说只是接收的数据不同。 李贝 发表于 2017-2-10 10:05
楼主混乱了,按键长按短按对于485来说只是接收的数据不同。
能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如I/O操作)。
您方便给我解释一下吗?谢谢 laujc 发表于 2017-2-10 08:49
我的意思是能不能一根线引到主机上去?
不可以。必须485通信的方式 pillar2060 发表于 2017-2-10 10:25
能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如 ...
从机开个内存存键值,当轮询到当前从机时发送数据,主机根据接收到的数据不同执行相应的动作 pillar2060 发表于 2017-2-9 16:15
按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是, ...
如果可以做AD的话,联线不能太长。从机长短按键可以调小一点时间,如时间200MS就判断长键。等待时间就不会太长
页:
[1]