1.所谓协议,简单的讲就是上位机或者终端如何将得到的数据按照你定义的规则分解,比如一个接收语句可以按照:前导符(#1)+终端地址(0001)+当前的CID+当前的步骤+有效字符串长度+有效字符串+校验+结束符(#2),满足条件就表明该字符串是合法的,否则要么你继续接收并将后面接收的累加(可能接收字符串比较长),要么清空后重新接收;至于终端也类似,但是因为是底层,协议处理也比较复杂,需要你认真全面,不过如果是一般的通用终端就简单一点,因为可能不需要你编写终端程序
2.一般而言,管理软件和通讯软件是不应该合并的,对一个比较成熟的系统来说,最好包括:管理软件(一般客户或者高层管理人员使用),服务软件(界于管理软件和通讯软件之间,通讯软件得到计划需通过服务软件,当然一般简单的系统可以省略),通讯软件(即上位机软件,直接操作终端通讯,可以连接或者断开串口或者终端),终端软件等
3.如果是通过串口编程的话,建议一个串口创建一个线程(可能你会用上Moxa卡,即一种PCI卡,可以模拟多个串口),每个线程根据终端地址类轮巡(发送),可在Your线程.Execute中循环,先接收再发送,别忘记Sleep,接收时根据协议你就可以知道是谁给你发送的,并做相应处理
4.通讯逻辑处理:
RCID: INTEGER; //当前的CID
RSTEP: INTEGER;//当前的步骤
我们根据当前接收到的这两个变量知道你做了什么,然后根据同时得到的信息或者给变量赋值,或者直接跳转到下一步,每个终端类实例记录当前的步骤,发送时发送指定的下一步步骤
总之这是比较复杂的,你最好先从简单的做起
p.RCID := RCID; //接收到的CID
p.RSTEP := RSTEP; //接收到的STEP
p.SendCid := SendCid; //要发送的CID
p.SendStep := SendStep;//要发送的STEP
p.Descript := Descript;//功能描述