威纶通官方论坛

威纶屏内置CRC函数问题

[复制链接]
发表于 2014-7-16 01:16:13 | 显示全部楼层 |阅读模式
本帖最后由 pigno5e 于 2014-7-16 01:23 编辑

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

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

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

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

先谢谢啦~~

补充一个例子 大家可以试

02 03 04 00 0a 00 0b 屏内宏指令返回 0xf6a8 而单片机函数计算返回 0xf5a8 ...
发表于 2014-8-11 22:25:23 | 显示全部楼层
本帖最后由 cao1fg 于 2014-8-11 22:32 编辑

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

short number
short change[30],change1[30],CRC_value1,CRC_value2,CRC_value3,return_value
int  output[10],i
char sentwg[30],responsewg[30],sentcs[30],responsecs[30]
//读取重量//
sentwg[0] = 0x02//地址
sentwg[1] = 0x03//功能码
sentwg[2] = 0x00//寄存器地址高位
sentwg[3] = 0x28//寄存器地址低位
sentwg[4] = 0x00//数据个数高位
sentwg[5] = 0x02//数据个数低位
CRC(sentwg[0], CRC_value1, 6)
LOBYTE(CRC_value1, sentwg[6])//关键部分
HIBYTE(CRC_value1, sentwg[7])//关键部分

//数据显示
SetData(sentwg[0], "Local HMI", LW, 0, 1)
SetData(sentwg[1], "Local HMI", LW, 1, 1)
SetData(sentwg[2], "Local HMI", LW, 2, 1)
SetData(sentwg[3], "Local HMI", LW, 3, 1)
SetData(sentwg[4], "Local HMI", LW, 4, 1)
SetData(sentwg[5], "Local HMI", LW, 5, 1)
SetData(sentwg[6], "Local HMI", LW, 6, 1)
SetData(sentwg[7], "Local HMI", LW, 7, 1)
//
OUTPORT(sentwg[0], "Free Protocol", 8)
DELAY(10)
INPORT(responsewg[0], "Free Protocol", 9, return_value)
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2025-5-13 11:16

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

快速回复 返回顶部 返回列表