VB通信中CRC校验的问题---------- 请(暴风雨 v2.0)高手给看看,在线等!!!!!!!

jinhailv 2005-11-10 09:48:47
我在做与下位串口R232通讯的程序时,需要将含有6位十六进制数据的字符串(例:01 04 05 0f 0f 0f)通过CRC校验后生成两位CRC校验码(一位高字节X和一位低字节Y)后,组成一个8位十六进制数据的字符串(01 04 05 0f 0f 0f X Y)发送给下位通讯.请各位高手帮忙看看,谢谢!!!!!!!!!
附:我这里有一个下位用C编写的CRC校验程序
unsigned msrCRC(unsigned char *pcMess, unsigned wLen) //*pcMess 字符数组

{

long MSBInfo;
int i,j ;
unsigned nCRCData;

nCRCData = 0xffff;
for(i = 0; i < wLen;i++)
{
nCRCData = nCRCData ^ pcMess[i] ;
for(j= 0 ; j < 8 ;j ++)
{
MSBInfo = nCRCData & 0x0001;
nCRCData = nCRCData >> 1;
if(MSBInfo != 0 )
nCRCData = nCRCData ^ 0xa001;
}
}
return nCRCData;
}
请教在VB中上述程序如何实现.
...全文
234 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶帆 2005-11-19
  • 打赏
  • 举报
回复
记得要初始化数组:
'-------------------------------------------
'初始化CRC16校验值
Dim strCRCHTemp() As String
Dim strCRCLTemp() As String
Dim i As Integer
strCRCHTemp = Split(strCRC16H, ",")
strCRCLTemp = Split(strCRC16L, ",")
For i = 0 To 255
bytCRC16H(i) = Val("&h" & strCRCHTemp(i))
bytCRC16L(i) = Val("&h" & strCRCLTemp(i))
Next
叶帆 2005-11-19
  • 打赏
  • 举报
回复
'-------------------------------------------------------
'CRC16校验高位预存值
Public bytCRC16H(0 To 255) As Byte
Public Const strCRC16H As String = _
"00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0," & _
"80,41,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,00,C1,81,40,01,C0,80,41,01,C0,80,41," & _
"00,C1,81,40,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,00,C1,81,40,01,C0,80,41,01,C0," & _
"80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,01,C0,80,41,00,C1,81,40," & _
"00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,00,C1,81,40,01,C0," & _
"80,41,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,01,C0,80,41," & _
"00,C1,81,40,00,C1,81,40,01,C0,80,41,00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,01,C0," & _
"80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40,00,C1,81,40,01,C0,80,41," & _
"00,C1,81,40,01,C0,80,41,01,C0,80,41,00,C1,81,40"

'CRC16校验低位预存值
Public bytCRC16L(0 To 255) As Byte
Public Const strCRC16L As String = _
"00,C0,C1,01,C3,03,02,C2,C6,06,07,C7,05,C5,C4,04,CC,0C,0D,CD,0F,CF,CE,0E,0A,CA,CB,0B,C9,09," & _
"08,C8,D8,18,19,D9,1B,DB,DA,1A,1E,DE,DF,1F,DD,1D,1C,DC,14,D4,D5,15,D7,17,16,D6,D2,12,13,D3," & _
"11,D1,D0,10,F0,30,31,F1,33,F3,F2,32,36,F6,F7,37,F5,35,34,F4,3C,FC,FD,3D,FF,3F,3E,FE,FA,3A," & _
"3B,FB,39,F9,F8,38,28,E8,E9,29,EB,2B,2A,EA,EE,2E,2F,EF,2D,ED,EC,2C,E4,24,25,E5,27,E7,E6,26," & _
"22,E2,E3,23,E1,21,20,E0,A0,60,61,A1,63,A3,A2,62,66,A6,A7,67,A5,65,64,A4,6C,AC,AD,6D,AF,6F," & _
"6E,AE,AA,6A,6B,AB,69,A9,A8,68,78,B8,B9,79,BB,7B,7A,BA,BE,7E,7F,BF,7D,BD,BC,7C,B4,74,75,B5," & _
"77,B7,B6,76,72,B2,B3,73,B1,71,70,B0,50,90,91,51,93,53,52,92,96,56,57,97,55,95,94,54,9C,5C," & _
"5D,9D,5F,9F,9E,5E,5A,9A,9B,5B,99,59,58,98,88,48,49,89,4B,8B,8A,4A,4E,8E,8F,4F,8D,4D,4C,8C," & _
"44,84,85,45,87,47,46,86,82,42,43,83,41,81,80,40"

'*************************************************************************
'**函 数 名:CRC16
'**输 入:bytData()(Byte) - 要处理的消息数据(字节数组)
'** :intNum(Integer) - 消息的字节长度
'** :bytCRCH(Byte) - CRC高位字节
'** :bytCRCL(Byte) - CRC低位字节
'**输 出:CRC校验字
'**功能描述:计算消息的CRC校验字节
'**全局变量:
'**调用模块:
'**作 者:叶帆
'**日 期:2003年12月15日
'**修 改 人:
'**日 期:
'**版 本:V1.0
'*************************************************************************
Public Function CRC16(bytData() As Byte, intNum As Integer, Optional bytCRCH As Byte = 0, Optional bytCRCL As Byte = 0) As Long
Dim i As Integer
Dim bytCRCHi As Byte
Dim bytCRCLo As Byte
Dim bytIndex As Byte
bytCRCHi = &HFF
bytCRCLo = &HFF

For i = 0 To intNum - 1
bytIndex = bytCRCHi Xor bytData(i)
bytCRCHi = bytCRCLo Xor bytCRC16H(bytIndex)
bytCRCLo = bytCRC16L(bytIndex)
Next

bytCRCH = bytCRCHi
bytCRCL = bytCRCLo
CRC16 = bytCRCH
CRC16 = CRC16 * 256 + bytCRCL
End Function


rgbcy 2005-11-16
  • 打赏
  • 举报
回复
可以用查表法
laviewpbt 2005-11-15
  • 打赏
  • 举报
回复
http://www.eengineerarea.com/vbic/vb_1.htm
VB下的CRC验证程序!
shelanbor 2005-11-15
  • 打赏
  • 举报
回复
左移×2
右移/2
jinhailv 2005-11-11
  • 打赏
  • 举报
回复
顺便问一个问题:VB中怎么实现字符的左/右移?

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧