摘要: CRC32太大了,CRC8觉得强度不够,折中选择CRC16校验. 线性编码理论。在发送端传送的K位二进制数据,以一定规则产生一个校验监督码(或者叫监督矩阵)r位,并负载信息后,构成一个新的二进制码序列共(K+R)位。最后发送出去。在接收端根据信息吗和CRC码禁言,是否出错。 CRC16监督式(美国标准):G(X)=X^16+X^15+X2+1CRC16监督式(欧洲标准):G(X)=X16+X12+X5+1一般多数采用CCITT推荐的欧标格式:10001000000100001 16位的CRC码产生的规则是先把要发送的信息元左移16位(乘以2^16),再除以监督式,最后得到的是CRC码。再把C. 阅读全文
posted @ 2010-04-23 13:56 deepwishly 阅读(817) 评论(0) 推荐(0) 编辑
摘要: /// </summary>/// CRCTAB 表 /// </summary> private static ushort[] crctab = new ushort[256]{ 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x93 阅读全文
posted @ 2010-04-23 13:46 deepwishly 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 说明:CRC循环冗余错误校验计算方法 CRC—16(循环冗余错误校验)生成CRC—16校验字节的步骤如下: (1)装入一个16位寄存器,所有数位均为1。 (2)该16位寄存器的高位字节与开始8位字节进行“异或”运算。运算结果放入这个16位寄存器。 (3)把这个16位寄存器向右移1位。 (4a)若向右(标记位)移出的数位是1,则生成多项式1010000000000001和这个寄存器进行“异或”运算。 (4b)若向右移出的数位是0,则返回(3)。 (5)重复(3)和(4),直至移出8位。 (6)另外8位与该16位寄存器进行“异或”运算。 (7)重复(3)—(6),直... 阅读全文
posted @ 2010-04-23 13:45 deepwishly 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 1、基本概念MS在 .NET FrameWork2.0中对串口通讯进行了封装,我们可以在.net2.0及以上版本开发时直接使用SerialPort类对串口进行读写操作。SerialPort类的属性主要包括:串口名称(PortName)波特率(BaudRate)数据位 DataBits停止位 StopBits奇偶校验 Parity握手协议 HandshakeSerialPort类的事件主要包括:DataReceived:用于异步接收串口数据SerialPort类的方法主要包括:Open();Close();Read();Write()等。相关内容可以参考MSDN或者博文http://www.cn 阅读全文
posted @ 2010-04-23 10:00 deepwishly 阅读(588) 评论(0) 推荐(0) 编辑
摘要: 在进行串口编程时,经常会涉及到进制转换、计算协议校验码以及数据格式化的操作,本文整理了在实际项目中可能会用到的公共方法,分享给需要的朋友。一、以下包含了三部分的内容:1、进制转换:主要包括了串口通讯中比较常用的16进制、byte、压缩BCD码、long、ASCII、Float等之间的转换方法。ConvertHelper.cs 进制转换Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*----------------------------- 阅读全文
posted @ 2010-04-23 09:56 deepwishly 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 十进制转二进制,整数部分按除2取余,小数部分按乘2取整.例:50/2 ........ 余025/2 ........ 余112/2 ........ 余06/2 ........ 余03/2 ........ 余1150的二进制就是 110010小数0.25*2 ........ 0.5 整数 00.5*2 ........ 1.0 整数 10.25的二进制数就是 0.01二进制转十进制10111 这是二进制数10111=1*2的4次方+0*2的3次方+1*2的2次方+1*2的1次方+1*2的0次方=16+0+4+2+1=23小数二进制 转十进制整数部分从低位至高位1,2,4,8,16,3. 阅读全文
posted @ 2010-04-23 09:27 deepwishly 阅读(1768) 评论(0) 推荐(0) 编辑
摘要: //十进制转二进制Console.WriteLine(Convert.ToString(69, 2));//十进制转八进制Console.WriteLine(Convert.ToString(69, 8));//十进制转十六进制Console.WriteLine(Convert.ToString(69, 16));//二进制转十进制Console.WriteLine(Convert.ToInt32(”100111101″, 2));//八进制转十进制Console.WriteLine(Convert.ToInt32(”76″, 8));//十六进制转十进制Console.WriteLine(C 阅读全文
posted @ 2010-04-23 09:12 deepwishly 阅读(181) 评论(0) 推荐(0) 编辑