Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341537
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:06:25

第1个参数: Baud Rate 是波特率, 每秒传输的位(bit)数
第2个参数: 校验方式(Parity), m:Mark,校验位始终为1, s:Space,校验位始终为0, n:No Parity, 无校验位, e:Even(偶), o:Odd(奇)
第3个参数: 数据位数(Byte Size), 每次传输的位(bit)数, 以这些位数为单位传输数据, 一般为 8 位 (一个字节)
第4个参数: 停止位(Stop Bits), 每个数据单位(Byte Size) 之后需要有1到2个停止位标识这个 Byte 传输结束
这些参数都是由硬件完成的,只要参数设置正确就可以了,软件上不需要做什么额外的处理。

CRC 校验码有几种,按位数分8位、16位、32位等,又分标准的和CCITT的算法,都可以在本站的串口控件的 yb_base.h 里面找到

以本站的串口控件为例:

try
 {
   YbCommDevice1->Baud     = TYbCommDevice::br57600;      //波特率为 57600 bps
   //YbCommDevice1->CommPort->Baud = 57600;               //也可以这么设波特率
   YbCommDevice1->Parity   = TYbCommDevice::ptMarkParity; //设校验为 Mark Parity
   YbCommDevice1->StopBits = TYbCommDevice::sbOneStopBit; //设停止位为 1 (One Stop Bit)
   YbCommDevice1->Active   = true;                        //打开串口

   char Addr[2] = {0x01,0x02};    //假设地址的数据为 01H, 02H
   YbCommDevice1->Write(Addr, 2); //发送 Addr 的数据, 2 个字节

   YbCommDevice1->Parity   = TYbCommDevice::ptSpaceParity; //设校验为 Space Parity
   YbCommDevice1->Active   = true;                         //打开串口

   char Data[5] = {0xaa,0xab,0x56,0x78,0x99}; //假设数据是这5个字节
   YbCommDevice1->Write(Data, 5); //发送 Data 的数据, 5 个字节
 }
catch(Exception &e)
 {
   ShowMessage(e.Message); //错误信息
 }


接收数据可以用 YbCommDevice->Read 方法

--------------------next---------------------
using namespace TBinFileFuncs;


char Data[DataSize]; //数据, DataSize 个字节的数据需要做 CRC 校验


unsigned char MyCRC8 = 0; //计算 CRC 校验码之前需要赋初始值, 根据实际情况需要, 可能是 0 ,可能是 -1 (0xff)
_Crc8(MyCRC8, Data, DataSize); //计算 CRC8 的值
现在 MyCRC8 就是计算的 CRC8 值
如果初始值为 -1, ~CRC8 是CRC8 值

unsigned short MyCRC16 = -1; //计算 CRC 校验码之前需要赋初始值, 根据实际情况需要, 可能是 0 ,可能是 -1 (0xffff)
_CrcCcitt16(MyCRC16, Data, DataSize); //计算 CRC16 的值
由于初始值是 -1, ~MyCRC16 是 CRC16 的值,注意前面有个 “~”
如果初始值是 0, MyCRC16 直接就是计算的值

由于初始值的不同,计算的结果也不同,所以计算 CRC 除了有前面说的标准之外,还有初始值的说法,不同的初始值,计算的结果不同
一般初始值使用 0, 但有些情况用 -1, 并且结果取反。

--------------------next---------------------

阅读(1120) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~