巨蚂蚁 2014-08-25 08:40
浏览 1268

VB 调用crc16校验 dll 返回值不正确

真诚求助,其实什么都写好了就是关键时候掉链子了
如下:
C语言写的CRC16 半字节查表 方式校验,dll cpp 程序如下:
unsigned short _stdcall CalCRC16(unsigned char *ptr, unsigned char len)

{

unsigned short crc;

unsigned char da;

unsigned short crc_ta[16]={

0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,

0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef

};

crc =0xFFFF;   
while(len--!=0)    
{   
    da = ((unsigned char)(crc/256))/16;          
    crc<<=4;                                     

crc^=crc_ta[da^(*ptr/16)];

da = ((unsigned char)(crc/256))/16;

crc<<=4;

crc^=crc_ta[da^(*ptr&0x0f)];

ptr++;

}

return(crc);

}

程序没有错误,单独调试OK,单独用函数 输入数组{0xAB,0x05,0x0A}也能返回正确的校验码DF4E

我用VB调用此dll
程序如下:
Private Declare Function CalCRC16 Lib "C:\CRC16.dll\crc16.dll" (ByRef buf() As Byte, ByVal nLen As Long) As Long
Private Sub Command1_Click()
Dim buf(0 To 2) As Byte
buf(0) = &HAB
buf(1) = &H5
buf(2) = &HA
lngCRC = CalCRC16(buf, 3)
Debug.Print Hex(lngCRC)
End Sub
编译OK,但返回值不正确,不知道那里错了,那位大神能告知,不胜感激

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
    • ¥15 求daily translation(DT)偏差订正方法的代码
    • ¥15 js调用html页面需要隐藏某个按钮