MCGS串口驱动程序是为MCGS组态软件设计的专业接口模块,用于实现计算机与外部设备通过串行通信进行数据交换的功能。
在使用MCGS昆仑通态触摸屏编写脚本串口驱动程序时,需要定义一些变量来处理HEXE协议格式的命令收发帧:
- `strTmp`:临时字符变量。
- `strData`:用于存储发送和接收数据的字符串。
- `SendByteArr(0)`:存放待发送命令字节数组。
- `RecByteArr(0)`:存放接收到的数据字节数组。
- `DataByteArr(0)`:解析数据时使用的临时字节数组。
- `nReturn`:用于判断函数返回状态的标志变量。
- `nTmp`:开关型临时变量,用于逻辑操作。
- `数值数据`:单精度浮点数类型,存储从接收到的数据中解析出的具体值,并赋给相应的数值通道。
- `开关数据`:整型变量,表示解析出的开关状态信息并分配到对应的通道上。
同时定义了几个辅助计算和校验用的变量:
- `setFlag`:标志位用于控制某些操作或条件判断。
- `start` 和 `j`:作为循环计数器使用。
- `crc` 与 `nCrc` 及相关字符串处理变量(如 `cstrTmp`, `crcTmp`, 和 `csendTmp`)用来计算和验证数据的CRC校验值。
在脚本中,针对特定帧的数据发送接收逻辑如下:
当当前索引为0时,构造一个包含特殊字符序列的发送指令,并通过设备写入函数将其传送到目标地址。同时更新统计变量(如 `sendnum`)并设置通道66的数值以反映已发数据的数量。
具体代码实现:
```vb
if i=0 then
strSend = * + !$$$$$$$$$$$$$$$$$$$$$Y + #
!DevWriteStr(strSend)
sendnum=sendnum+1
!SetSingleChannelValueByNum(66,sendnum)
endif
```
这段代码用于初始化通信过程中的第一帧数据发送。