HJT212 CRC16位校验

该标准上对于CRC16校验的描述如下:
在这里插入图片描述
在论坛上搜了很多代码实现,但是在测试的时候会出现偶尔校验码算错的情况,最终找到的C代码实现如下,亲测可用。需要注意的是,HJT212中的CRC16校验,和标准的CRC16校验不一样,也就是用网上那些在线校验工具算出的校验码都与HJT212中的不一致,所以在使用过程中不能以CRC16在线校验工具为判断对错的标准。
代码如下:

unsigned int HJT212_CRC16 ( unsigned char *msg, unsigned int msg_len ) 
{ 
    unsigned int i,j,crc,check; 
    crc= 0xFFFF; 
    for(i = 0; i < msg_len ; i++) 
    { 
        crc = (crc >> 8) ^ msg[i]; 
        for(j = 0; j < 8; j++) 
        { 
            check = crc & 0x0001; 
            crc >>= 1; 
            if(check == 0x0001) 
            { 
                crc ^= 0xA001; 
            } 
        } 
    } 
    return crc; 
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN技术文档大全(CHM) 构造函数与异常 这个话题在C++社区中经常会被提起,而在Delphi社区中似乎从来没有人注意过。也许由于语言的特性,使得Delphi程序员不必关心这个问题。但我想Delphi程序员也应该对该问题有所了解,知道语言为我们提供了什么而使得我们如此轻松,不必理会它。正所谓“身在福中须知福”。 我们知道,类的构造函数是没有返回值的,如果构造函数构造对象失败,不可能依靠返回错误代码。那么,在程序中如何标识构造函数的失败呢?最“标准”的方法就是:抛出一个异常。 构造函数失败,意味着对象的构造失败,那么抛出异常之后,这个“半死不活”的对象会被如何处理呢? 在此,我想读着有必要先对C++对这种情况的处理方式先有个了解。 在C++中,构造函数抛出异常后,析构函数不会被调用。这种做法是合理的,因为此时对象并没有被完整构造。 如果构造函数已经做了一些诸如分配内存、打开文件等操作的话,那么C++类需要有自己的成员来记住做过哪些动作。当然,这样做对于类的实现者来说非常麻烦,因此一般C++类的实现者都避免在构造函数中抛出异常(可以提供一个诸如Init和UnInit的成员函数,由构造函数或类的客户去调用它们,以处理初始化失败的情况)。而每一本C++的经典著作所提供的方案是使用智能指针(STL的标准类auto_ptr)。 在Object Pascal中,这个问题变得非常的简单,程序员不必为此大费周折。如果Object Pascal的类在构造函数中抛出异常,编译器会自动调用类的析构函数(由于析构函数不允许被重载,可以保证只有唯一一个析构函数,因此编译器不会迷惑于多个析构函数之中)。析构函数中一般会析构成员对象,而Free()方法保证了不会对nil对象(即尚未被创建的成员对象)调用析构函数,因此在使得代码简洁优美的前提下,又保证了安全。
HJT212是一种用于环境监控设备通信的协议,而Java是一种常用的编程语言。这里的Java HJT212指的是使用Java语言进行HJT212协议通信的相关开发。 在使用Java进行HJT212协议开发时,我们可以使用Java的网络编程库以及相关的第三方库来实现与环境监控设备的通信。Java提供了丰富的网络编程API,包括Socket、UDP、HTTP等,可以根据具体的需求选择合适的方式进行通信。 首先,我们需要将HJT212协议进行解析,得到协议中的各个字段数据,然后根据实际需求进行相应的处理。可以使用Java提供的字符串处理、正则表达式等工具来实现协议解析的功能。 接下来,我们可以使用Java的Socket或者其他网络编程方式与环境监控设备建立连接,并进行数据的收发。根据协议规定的通信格式,可以使用Java的字节流或者字符流进行数据的发送和接收。 在开发过程中,还可以利用Java的多线程特性,将通信相关的任务放在单独的线程中进行处理,以提高程序的并发性能。 此外,Java还提供了许多第三方库,如Netty、Apache HttpClient等,可以进一步简化HJT212协议的开发。这些库提供了更高层次的抽象和封装,可以帮助我们更快速地进行开发,并提供更好的稳定性和性能。 综上所述,Java HJT212是指使用Java语言进行HJT212协议通信的相关开发。Java提供了丰富的网络编程API以及第三方库,可以帮助我们实现与环境监控设备的通信以及协议解析的功能,从而实现相应的业务需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值