amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 849|回复: 18

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

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

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

我是个新手,特请教老师!
发表于 2017-2-9 11:50:45 | 显示全部楼层
按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!
发表于 2017-2-9 11:51:03 | 显示全部楼层
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题
 楼主| 发表于 2017-2-9 13:25:05 | 显示全部楼层
Percychiu 发表于 2017-2-9 11:50
按你现在描述的不是多主机么一从机么?MODBUS是一主多从,主从问答式吧!

不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。
 楼主| 发表于 2017-2-9 13:28:55 | 显示全部楼层
dzymushi 发表于 2017-2-9 11:51
主从的方式让主机轮询比较好点,不然几个从机一起发送,会出问题

有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很清楚。我不知道从机(按键板)长按时,从机是一直发送数据给主机还是通过按下松开发送两个数据给主机。除了这两种方式,还有没有更好的解决办法。
发表于 2017-2-9 14:06:47 | 显示全部楼层
pillar2060 发表于 2017-2-9 13:28
有道理,我会采纳你的建议的。谢谢,但是问题还是在于,从机(按键板)和主机(控制板)通信过程我不是很 ...

我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低
发表于 2017-2-9 14:30:30 | 显示全部楼层
pillar2060 发表于 2017-2-9 13:25
不是的,是一主机多从机。说简单点就是从机都是按键,主机是控制核心。 ...

那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。
发表于 2017-2-9 14:32:54 | 显示全部楼层
上can总线吧...

楼主能介绍一下使用环境,大家也可以帮忙出主意呀
 楼主| 发表于 2017-2-9 16:15:27 | 显示全部楼层
dzymushi 发表于 2017-2-9 14:06
我选方案的话,我会直接用AD来采集。这样主机更容易控制,代码会少,成本也会低 ...

按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是,主机如何实时了解从机(按键板的按键状态)。
 楼主| 发表于 2017-2-9 16:21:28 | 显示全部楼层
laujc 发表于 2017-2-9 14:32
上can总线吧...

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

谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。
主要遇到的问题是:主机如何实时监控从机按键板的按键的状态。(说通俗点:就相当于所有按键都在主机上一样。)。
前辈可以给点建议。
 楼主| 发表于 2017-2-9 16:25:01 | 显示全部楼层
Percychiu 发表于 2017-2-9 14:30
那你在从机中判断并设置长短按键不同的位,供上位机读取就可以分出来了!读完后返回一个清除指令。 ...

从机可以判断长短按,如果设置了标志位,从机长按的时候,从机会有时间延时,长按标志位置位,此时主机并没有任何操作,这样会让使用者有滞后感。
我的问题是:主机要尽可能的实时了解从机的按键状态(就相当于按键在主机上的效果一样)。
发表于 2017-2-9 16:47:57 | 显示全部楼层
pillar2060 发表于 2017-2-9 16:21
谢谢!
使用环境是一个牙椅控制系统,按键板比较多。主机是控制核心。所有按键板都要与主机进行485通信。 ...

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

但是按键不在主机上。
发表于 2017-2-10 08:49:23 | 显示全部楼层
pillar2060 发表于 2017-2-10 08:31
但是按键不在主机上。

我的意思是能不能一根线引到主机上去?
发表于 2017-2-10 10:05:35 | 显示全部楼层
楼主混乱了,按键长按短按对于485来说只是接收的数据不同。
 楼主| 发表于 2017-2-10 10:25:03 | 显示全部楼层
李贝 发表于 2017-2-10 10:05
楼主混乱了,按键长按短按对于485来说只是接收的数据不同。

能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如I/O操作)。
您方便给我解释一下吗?谢谢
 楼主| 发表于 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
能说详细点吗?我的意思,主机要根据从机按键的长短按,执行长按动作(持续性的动作)或者短按动作(比如 ...

从机开个内存存键值,当轮询到当前从机时发送数据,主机根据接收到的数据不同执行相应的动作
发表于 2017-2-10 12:11:13 | 显示全部楼层
pillar2060 发表于 2017-2-9 16:15
按键如何用AD来采集?求赐教,再说按键板是2列*5行的矩阵按键(10按键),AD通道也不够。
主要的问题是, ...

如果可以做AD的话,联线不能太长。从机长短按键可以调小一点时间,如时间200MS就判断长键。等待时间就不会太长
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-11-18 00:13

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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