crc计算网站,crc 计算器下载

  crc计算网站,crc 计算器下载

  

目录

  1.c语言实现模块化2-CRC算法。

  第二,Python代码实现2-CRC算法。

  第三,用PyQT制作上位机

  3.1.制作用户界面

  3.2.将UI转换成Python代码

  3.3.添加主函数并打包exe文件

  模2-CRC算法的IC语言实现。模块2-CRC算法的模块函数的C语言代码如下。模块2-CRC算法的实现原理请参考另一篇博客:模块2CRC算法。

  unsigned short int CRC(unsigned char * data _ add,unsigned char len _ data){ unsigned char I=0,len _ word=0;无符号短整型字[100]={0x 0000 };无符号短整型crc _ value=0x0000len _ word=len _ data/2;for(I=0;我len _ wordI){ word[I]=(data _ add[2 * I]8)(data _ add[2 * I 1]);//两个字节成一个字Word[I]=Word[I](I) Word[I](16-(I));//循环移位数据字CRC _ value=CRC _ value word[I];//找到循环移位后的校验和字} CRC _ value=(CRC _ value(len _ word))(CRC _ value(16-(len _ word)));//反向循环移位最后一个结果返回crc _ value}二。Python代码实现模块2-CRC算法#最大输入字节长度为100,输出为16位的CRC _ valuedef CRC 16 (data _ add,len _ data):word=[0]* 100 # Python没有16位数据类型,定义为int类型,数组大小为100 crc_value=0 # crc初始值为int类型0 len_word=len_data 1 #字符串为半个字节, 所以在range(0,Int(len _ word)):str 4=data _ add[(I * 4):(4 I * 4)]#一次取4个字符串,上位机读入字符串word[i]=int(str4,16) # string转换成十进制如 0200 512 word[I]=(word[I](I % 16)(word[I](16-(I % 16))0x ffff)#因为是循环移位需要0xFFFF以确保循环移位后仅低16位CRC _ value=CRC _ value word [I] #查找校验和字CRC _ value=((CRC _ value(len _ word % 16))(CRC _ value(16-(len _ word % 16))。 )#反向循环移位最后一个结果。返回crc_value C语言代码转换成Python代码如上,测试代码如下。输出结果正确,去掉了字符串之间的英文空格和逗号,对上位机的输入操作友好,不需要手动去掉空格和逗号。

  from crc import *test=02 00,03003 f 8000000000000000000 # 02 00 03 00 3f 80 00 00 00 00 00 00 00 30 06 test=test . replace(,,,)# Remove the space test=test . replace(,,)# Remove the comma test _ out=CRC 16(test,int(len)/2)# int(len(test)/2是

  3.用PyQT制作PC 3.1。制作ui代码封装成crc.py,开始制作UI界面,打开QTDesigner,新建一个UI,命名为crc_ui.ui设计UI界面。首先添加QWidget(默认名称为Form),然后添加QLineEdit(去掉只读属性的命名输入,保留只读属性的另一个命名输出),QLabel(添加作者信息、版本号等。)、q button(名为CalcButton)等对象。

  3.2.将UI转换为Python代码。在py charm外部工具中打开PyUIC,将crc_ui.ui转换为crc_ui.py如何将QTDesigner和PyUIC添加到外部工具可以参考博客设置添加外部工具。

  3.3.添加main函数并打包exe创建一个新的main.py,添加以下代码,使用PyInstaller将其打包成一个单独的exe。命令:PyInstaller -F main.py -w w .其中-F打包成单个exe,-w是在软件启动前去掉命令行串口,打包的exe放在项目目录的dist文件夹中。打开exe进行测试,如图1所示。整个项目源代码的下载链接:源代码下载。

  从循环冗余码校验导入*从crc_ui导入Ui_Form # QWidget命名为形式所以导入的是Ui_Form,同下来自PyQt5 .QtWidgets导入QApplication,QMainWindowclass我的表单(QMainWindow,Ui _ Form):def _ _ init _ _(self):super(我的表单,self)._ _ init _ _()self。自我。setwindowtitle( CRC计算器) # 命名上位机名称自我计算按钮。点击了。连接(自我。calc _ CRC)def calc _ CRC(self):Arr _ Input=self .Input.text() #读取输入Arr_Input=Arr_Input.replace( , )#去掉空格Arr_Input=Arr_Input.replace(,, )#去掉逗号Arr_Input=Arr_Input.replace( , )#去掉Arr_out_int=crc16(Arr_Input,int(len(Arr _ Input)/2))# int(len(Arr _ Input)/2是输入的有效字节数Arr_out_hex={:02X} .格式(数组输出整数)#十进制转换成字符串自我15 .产出。settext(Arr _ out _ hex)# QLineEdit使用设置文本显示字符串文本浏览器使用插入明文显示if _ _ name _ _== _ _ main _ _ :app=QA应用程序(sys。argv)win=my form()win。show()sys。退出(app。exec _())

crc计算网站,crc 计算器下载