pillar2060 发表于 2017-2-9 11:11:07

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

想编写一个一主机多从机的485通信程序(暂定modbus协议,目前还没有写)。方式是:从机的按键为2列5行,共10个按键;其中有单击和长按,采用马潮老师状态机按键的路子实现了,但是问题就是出现在实现后的情况。我做的处理1()是长按(按下串口发送一个数据,松开发送一个数据),单击就是(按下发送一个数据)。如果我这么处理主机能不能识别出从机是长按还是单击???
另外一种策略(2)是长按的时候从机不断的向主机发送数据,单击的时候从机向主机发送一个数据。但是主机如果我采用串口中断的方式,那么从机长按时,会影响主机工作效率。

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

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

Percychiu 发表于 2017-2-9 11:50:45

按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!

dzymushi 发表于 2017-2-9 11:51:03

主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题

pillar2060 发表于 2017-2-9 13:25:05

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

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

pillar2060 发表于 2017-2-9 13:28:55

dzymushi 发表于 2017-2-9 11:51
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题

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

dzymushi 发表于 2017-2-9 14:06:47

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

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

Percychiu 发表于 2017-2-9 14:30:30

pillar2060 发表于 2017-2-9 13:25
不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。 ...

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

laujc 发表于 2017-2-9 14:32:54

上can总线吧...

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

pillar2060 发表于 2017-2-9 16:15:27

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

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

pillar2060 发表于 2017-2-9 16:21:28

laujc 发表于 2017-2-9 14:32
上can总线吧...

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

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

pillar2060 发表于 2017-2-9 16:25:01

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

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

laujc 发表于 2017-2-9 16:47:57

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

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

pillar2060 发表于 2017-2-10 08:31:19

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

但是按键不在主机上。

laujc 发表于 2017-2-10 08:49:23

pillar2060 发表于 2017-2-10 08:31
但是按键不在主机上。

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

李贝 发表于 2017-2-10 10:05:35

楼主混乱了,按键长按短按对于485来说只是接收的数据不同。

pillar2060 发表于 2017-2-10 10:25:03

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

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

pillar2060 发表于 2017-2-10 10:25:44

laujc 发表于 2017-2-10 08:49
我的意思是能不能一根线引到主机上去?

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

李贝 发表于 2017-2-10 10:32:07

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

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

Percychiu 发表于 2017-2-10 12:11:13

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

如果可以做AD的话,联线不能太长。从机长短按键可以调小一点时间,如时间200MS就判断长键。等待时间就不会太长
页: [1]
查看完整版本: 多功能矩阵按键如何采用485通信方式(多机通信)