开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1235|回复: 3
收起左侧

[已解决] 求一套易语言写的CRC-16/XMODEM X16+X12+X5+1的源码

 关闭 [复制链接]
结帖率:87% (20/23)
发表于 2020-3-21 18:18:55 | 显示全部楼层 |阅读模式   辽宁省大连市
100精币
求一套易语言写的CRC-16/XMODEM X16+X12+X5+1的源码,,越简单越好,新手,,感谢各位大神.

最佳答案

查看完整内容

下面是CRC的表格 [e=1].版本 2 CRCH = { 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 1 ...

求助知识:请将问题描述清楚,最好把你有问题的源码打包上传上来,这样更方便大家帮助你。
友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 3点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。

结帖率:100% (4/4)
发表于 2020-3-21 18:18:56 | 显示全部楼层   四川省宜宾市
下面是CRC的表格
  
CRCH = { 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64, 0, 193, 129, 64, 1, 192, 128, 65, 0, 193, 129, 64, 1, 192, 128, 65, 1, 192, 128, 65, 0, 193, 129, 64 }
CRCL = { 0, 192, 193, 1, 195, 3, 2, 194, 198, 6, 7, 199, 5, 197, 196, 4, 204, 12, 13, 205, 15, 207, 206, 14, 10, 202, 203, 11, 201, 9, 8, 200, 216, 24, 25, 217, 27, 219, 218, 26, 30, 222, 223, 31, 221, 29, 28, 220, 20, 212, 213, 21, 215, 23, 22, 214, 210, 18, 19, 211, 17, 209, 208, 16, 240, 48, 49, 241, 51, 243, 242, 50, 54, 246, 247, 55, 245, 53, 52, 244, 60, 252, 253, 61, 255, 63, 62, 254, 250, 58, 59, 251, 57, 249, 248, 56, 40, 232, 233, 41, 235, 43, 42, 234, 238, 46, 47, 239, 45, 237, 236, 44, 228, 36, 37, 229, 39, 231, 230, 38, 34, 226, 227, 35, 225, 33, 32, 224, 160, 96, 97, 161, 99, 163, 162, 98, 102, 166, 167, 103, 165, 101, 100, 164, 108, 172, 173, 109, 175, 111, 110, 174, 170, 106, 107, 171, 105, 169, 168, 104, 120, 184, 185, 121, 187, 123, 122, 186, 190, 126, 127, 191, 125, 189, 188, 124, 180, 116, 117, 181, 119, 183, 182, 118, 114, 178, 179, 115, 177, 113, 112, 176, 80, 144, 145, 81, 147, 83, 82, 146, 150, 86, 87, 151, 85, 149, 148, 84, 156, 92, 93, 157, 95, 159, 158, 94, 90, 154, 155, 91, 153, 89, 88, 152, 136, 72, 73, 137, 75, 139, 138, 74, 78, 142, 143, 79, 141, 77, 76, 140, 68, 132, 133, 69, 135, 71, 70, 134, 130, 66, 67, 131, 65, 129, 128, 64 }

下面是CRC查表算法
  
子程序名返回值类型公开备 注
CRC校验文本型 
参数名类 型参考可空数组备 注
校验内容整数型
变量名类 型静态数组备 注
CRCHi整数型 
CRCLo整数型 
i整数型 
索引整数型 
临时CRC文本型 
CRC整数型 
CRCHi = 255
CRCLo = 255
计次循环首 (取数组成员数 (校验内容), i)
索引 = 位异或 (CRCHi, 校验内容 )
CRCHi = 位异或 (CRCLo, CRCH [索引 + 1])
CRCLo = CRCL [索引 + 1]
计次循环尾 ()
CRC = 位或 (左移 (CRCHi, 8), CRCLo)
临时CRC = 十到十六 (到长整数 (CRC))
如果真 (取文本长度 (临时CRC) = 1)
临时CRC = “000” + 临时CRC
如果真 (取文本长度 (临时CRC) = 2)
临时CRC = “00” + 临时CRC
如果真 (取文本长度 (临时CRC) = 3)
临时CRC = “0” + 临时CRC
返回 (临时CRC)
  
子程序名返回值类型公开备 注
CRC16_MODBUS整数型 CRC16_MODBUS查表算法
参数名类 型参考可空数组备 注
欲校验的整数字节集
变量名类 型静态数组备 注
crc整数型 
table整数型256
i整数型 
' Name:    CRC-16/MODBUS  X16+X15+X2+1
' Poly:    0x8005
' lnit:    0xFFFF
' Refin:   Ture
' Refout:  Ture
' Xorout:  0x0000
' Note:
' —————————————————输入、输出反转、结果不异或————————————————————
变量循环首 (0, 255, 1, i)
crc = i
变量循环首 (1, 8, 1, )
如果 (位与 (crc, 1) ≠ 0)
crc = 位异或 (右移 (crc, 1), 40961)  ' // 多项式 “0xA001”= Reverse “0x8005”
crc = 右移 (crc, 1)

变量循环尾 ()
table [i + 1] = crc
变量循环尾 ()
crc = 65535  ' // 初始值“0xFFFF”)
变量循环首 (1, 取字节集长度 (欲校验的整数), 1, i)
crc = 位异或 (右移 (crc, 8), table [位异或 (欲校验的整数 [i], 位与 (crc, 255)) + 1])
变量循环尾 ()
返回 (crc)

评分

参与人数 1荣誉 +3 收起 理由
笨潴 + 3 热心帮助他人,荣誉+3,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (4/4)
发表于 2020-3-21 18:27:17 | 显示全部楼层   四川省宜宾市
http://bbs.eyuyan.com/read.php?tid=388029
了解一下
回复

使用道具 举报

结帖率:100% (4/4)
发表于 2020-3-24 08:49:14 | 显示全部楼层   四川省宜宾市
可参考:"CRC16_MODBUS"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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