pigno5e 发表于 2014-7-16 01:16:13

威纶屏内置CRC函数问题

本帖最后由 pigno5e 于 2014-7-16 01:23 编辑

今天发现威纶屏内置CRC函数 有的时候CRC计算值会和单片机计算值不符(单片机计算值要小256)

但有时两者计算值又相等 与不同的输入值有关

尝试各类计算方法(查表,直接计算等) 该问题一直都存在

不知道 有没有大侠遇到过 @@

先谢谢啦~~

补充一个例子 大家可以试

02 03 04 00 0a 00 0b 屏内宏指令返回 0xf6a8 而单片机函数计算返回 0xf5a8 ...

cao1fg 发表于 2014-8-11 22:25:23

本帖最后由 cao1fg 于 2014-8-11 22:32 编辑

威纶的计算你要定义为char运算的时候LW里的要把高地位分为2个char运算结果会一样的

short number
short change,change1,CRC_value1,CRC_value2,CRC_value3,return_value
intoutput,i
char sentwg,responsewg,sentcs,responsecs
//读取重量//
sentwg = 0x02//地址
sentwg = 0x03//功能码
sentwg = 0x00//寄存器地址高位
sentwg = 0x28//寄存器地址低位
sentwg = 0x00//数据个数高位
sentwg = 0x02//数据个数低位
CRC(sentwg, CRC_value1, 6)
LOBYTE(CRC_value1, sentwg)//关键部分
HIBYTE(CRC_value1, sentwg)//关键部分
//数据显示
SetData(sentwg, "Local HMI", LW, 0, 1)
SetData(sentwg, "Local HMI", LW, 1, 1)
SetData(sentwg, "Local HMI", LW, 2, 1)
SetData(sentwg, "Local HMI", LW, 3, 1)
SetData(sentwg, "Local HMI", LW, 4, 1)
SetData(sentwg, "Local HMI", LW, 5, 1)
SetData(sentwg, "Local HMI", LW, 6, 1)
SetData(sentwg, "Local HMI", LW, 7, 1)
//
OUTPORT(sentwg, "Free Protocol", 8)
DELAY(10)
INPORT(responsewg, "Free Protocol", 9, return_value)
页: [1]
查看完整版本: 威纶屏内置CRC函数问题