看大家这么积极,再发一点关于协议的部分初稿:
1.所有主控都是0,mst.0
a)默认主地址: 0x00, ‘M’,’S’,’T’,0x00;
b)主控端显示每个子模块已联入多少个还可联入多少个。单模块最多六个地址。
c)当主控发送信息时,会切换到发送模式,一旦发完后就回到接收模式。
d)一般可以考虑双模块,一个收一个发。并且主机采用ARM硬件平台。采用多线处理。
e)主控设备还要负责智能平衡检测。不能一个模块下太多子,另一个模块却很少。由主控发指令调节。
2.所有子模块都有两套地址 0,slv.0 并且最多六个子地址,一主,五副。与主失联,则与从父告诉之。
a)初始从地址:0x00,’S’,’L’,0xFF,0xFF; // 设备有没有真实地址依赖它内部的变量。
模块有两个从地址:
1. 一个为主地址,高两位字节可变唯一地址。这个为网络中唯一接收地址。自有地址
2. 另一个从地址:为0x00,’S’,0x00,0x00,0x00;所有模块初始值被置为这个值。这个地址留给其它模块做验证用的。如果是已联入模块,则直接发验证命令。如果是没有联入网络,在向主机发送失败后
可以向这个地址发。
当模块搜索信号时,会先后向两个地址发信号,一是发给主控,当主控件打开接收时。一个是发给从桥模块。先发主,如果没有打开,则发给桥。主不打开则收不到回信则再发给从桥。
3.初始子模块地址为默认可连接地址。每次上电进行检查IP有没有被赋值。如果有,则不进行地址申请,如果没有则进行两次地址申请,一是向Master申请地址。二是向slave申请地址然后由slave向master转发申请。
a)每次上电都会检查,如果地址为空则会指示“红灯”表该模块未接入网络。接入后为“绿灯”。
b)没有时可通过特定外部按键来激发地址查找功能。
c)如果是从桥接入,第一次返回接入信息提示。第二次接收本模块地址。然后返回成功指示信息。
4.连接握手心跳每五秒检查一次。 |