威纶通官方论坛

关于宏命令unsigned问题和CRC校验问题

[复制链接]
发表于 2012-4-17 11:41:22 | 显示全部楼层 |阅读模式
在使用宏命令进行变量定义的时候发现技术手册上给的unsigned char和unsigned int都不能使用,编译时提示“C1 ,此项多了或少了一个符号”不知道是什么原因,请教版主啊
   在使用CRC校验的时候发现CRC的校验码和单片机机的检验码不一致,不能使用,而使用RTU设备直接控制单片机的时候就能通信,请问版主8000里的CRC是CRC CCITT还是CRC_16?能不能贴出相应的程序呢?(单片机的CRC校验采用的查表法)

附程序:
uint crc16(uchar *puchMsg,uchar usDataLen) // puchMsg message to calculate CRC upon        {
        // usDataLen quantity of bytes in message
        uchar uchCRCHi = 0xFF ; // high byte of CRC initialized
        uchar uchCRCLo = 0xFF ; // low byte of CRC initialized
        uint uIndex ;           // will index into CRC lookup table
        while (usDataLen--)     // Pass through message buffer
        {
                uIndex = uchCRCHi ^ *puchMsg++ ; // calculate the CRC
                uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex] ;  
                uchCRCLo = auchCRCLo[uIndex] ;
        }
        return (((uint)(uchCRCLo) << 8) | uchCRCHi) ;                 
}(表略)
发表于 2012-4-18 14:09:54 | 显示全部楼层
1、定义变量的时候,不能省略简写,uint crc16应写unsigned int CRC16;其他变量类似;
2、CRC采用16-bit CRC计算。
发表于 2012-4-18 14:41:54 | 显示全部楼层
是使用CRC_16,宏指令没有指针。
宏指令是自带CRC函数的,可以直接用。
您需要登录后才可以发帖 登录 | 注册

本版积分规则

回复帖子

Archiver|小黑屋|威纶通官网 ( 粤ICP备06054553号 )

GMT+8, 2024-5-16 13:03

Powered by Discuz! X3.4

© 2001-2023 Comsenz Inc.

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