VB中用RS232与仪器通信,校验码怎么写,看不懂了 100
11.3.4串口类通讯帧校验码通讯帧校验码的加入用于确保通讯的可靠性与正确性。控制器发送通讯指令帧校验码格式:一字节十六进制数,其值为:SCPI指令串中所有字符的累加|0...
11.3.4 串口类通讯帧校验码 通讯帧校验码的加入用于确保通讯的可靠性与正确性。
控制器发送通讯指令帧校验码格式:一字节十六进制数,其值为:SCPI指令串中所有字符的累加|0x80。
测试仪发送响应信息帧校验码格式:一字节十六进制数,其值为:响应信息串中所有字符的累加和|0x80
例子:
通讯指令:STEP: DCW: VOLT? (SCPI指令)0x92(校验码)CR+LF(结束码) 响应信息:0.050(响应信息)0xF3(校验码)CR+LF(结束码
我按照您的方式写了个函数,但算出来的值跟例子中不同,奇怪!
'///////////////////////////////////////////////
11.3.7 串口类通讯范例
通讯指令:STEP: DCW: VOLT? (SCPI指令)0x92(校验码)CR+LF(结束码) 响应信息:0.050(响应信息)0xF3(校验码)CR+LF(结束码)
通讯指令:COMM:SADD_1(SCPI指令)0x9D(校验码)CR+LF(结束码) 响应信息:+0,”No error”(响应信息)0xD2(校验码)CR+LF(结束码)
'/////////////////////////////////////////////// 展开
控制器发送通讯指令帧校验码格式:一字节十六进制数,其值为:SCPI指令串中所有字符的累加|0x80。
测试仪发送响应信息帧校验码格式:一字节十六进制数,其值为:响应信息串中所有字符的累加和|0x80
例子:
通讯指令:STEP: DCW: VOLT? (SCPI指令)0x92(校验码)CR+LF(结束码) 响应信息:0.050(响应信息)0xF3(校验码)CR+LF(结束码
我按照您的方式写了个函数,但算出来的值跟例子中不同,奇怪!
'///////////////////////////////////////////////
11.3.7 串口类通讯范例
通讯指令:STEP: DCW: VOLT? (SCPI指令)0x92(校验码)CR+LF(结束码) 响应信息:0.050(响应信息)0xF3(校验码)CR+LF(结束码)
通讯指令:COMM:SADD_1(SCPI指令)0x9D(校验码)CR+LF(结束码) 响应信息:+0,”No error”(响应信息)0xD2(校验码)CR+LF(结束码)
'/////////////////////////////////////////////// 展开
2个回答
展开全部
比如 0.050 这个字串中所有字符的ASCII码累加和是
48+46+48+53+48=243
243转为16进制是&HF3
&HF3 Or &H80 = &HF3
所以校验码就是&HF3(即0xF3)
+0,"No error"的累加和是&H3D2
(&H3D2 Or &H80) And &HFF = &HD2
48+46+48+53+48=243
243转为16进制是&HF3
&HF3 Or &H80 = &HF3
所以校验码就是&HF3(即0xF3)
+0,"No error"的累加和是&H3D2
(&H3D2 Or &H80) And &HFF = &HD2
追问
为什么还要AND &HFF呢?是统一都要加吗? OK明天去公司电脑上测试一下。
---------
可以了,但为什么要加 FF呢?
追答
And &HFF是让结果只保留一个字节。校验码不是要求一个字节吗?那如果大于255的数怎么办呢?Or &H80后的结果仍然是大于255的,这时候用And &HFF就可以让结果只保留一个字节,当然如果结果本身就是一个字节的,用了And &HFF则不变,所以你统一加上即可。看来你对位运算的知识很缺乏啊。
2014-01-02
展开全部
不难吧
SCPI指令串中所有字符的累加|0x80。ASCII码相加 与 0x80 逻辑 或
楼上 书生说的不错
SCPI指令串中所有字符的累加|0x80。ASCII码相加 与 0x80 逻辑 或
楼上 书生说的不错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询