组态王读取串口扫码枪数据方法:
1、新增串口扫码枪设备
2、设置扫码枪串口参数
3、定义扫码枪接收数据变量RHDATA,变量类型为I/O字符串
4、增加RHDATA数据改变时执行数据处理的操作。
数据处理代码如下,主要是将扫码枪接收到的ASCII码转换为正常数据。
LONG Z1=32;LONG Z2=32;LONG Z3=32;LONG Z4=32;
LONG Z5=32;LONG Z6=32;LONG Z7=32;LONG Z8=32;
LONG Z9=32;LONG Z10=32;
STRING SMSJ;
IF (STRLEN(RHDATA)>=2) Z1=StrToInt(StrMid(RHDATA,1,1))*16+StrToInt(StrMid(RHDATA,2,1));
IF (STRLEN(RHDATA)>=4) Z2=StrToInt(StrMid(RHDATA,3,1))*16+StrToInt(StrMid(RHDATA,4,1));
IF (STRLEN(RHDATA)>=6) Z3=StrToInt(StrMid(RHDATA,5,1))*16+StrToInt(StrMid(RHDATA,6,1));
IF (STRLEN(RHDATA)>=8) Z4=StrToInt(StrMid(RHDATA,7,1))*16+StrToInt(StrMid(RHDATA,8,1));
IF (STRLEN(RHDATA)>=10) Z5=StrToInt(StrMid(RHDATA,9,1))*16+StrToInt(StrMid(RHDATA,10,1));
IF (STRLEN(RHDATA)>=12) Z6=StrToInt(StrMid(RHDATA,11,1))*16+StrToInt(StrMid(RHDATA,12,1));
IF (STRLEN(RHDATA)>=14) Z7=StrToInt(StrMid(RHDATA,13,1))*16+StrToInt(StrMid(RHDATA,14,1));
IF (STRLEN(RHDATA)>=16) Z8=StrToInt(StrMid(RHDATA,15,1))*16+StrToInt(StrMid(RHDATA,16,1));
IF (STRLEN(RHDATA)>=18) Z9=StrToInt(StrMid(RHDATA,17,1))*16+StrToInt(StrMid(RHDATA,18,1));
IF (STRLEN(RHDATA)>=20) Z10=StrToInt(StrMid(RHDATA,19,1))*16+StrToInt(StrMid(RHDATA,20,1));
SMSJ=STRCHAR(Z1)+STRCHAR(Z2)+STRCHAR(Z3)+STRCHAR(Z4)+STRCHAR(Z5)+STRCHAR(Z6)+STRCHAR(Z7);
cxbh=SMSJ;