当前位置: 首页 > news >正文

cvm可以做网站服务器吗网片围栏

cvm可以做网站服务器吗,网片围栏,怎么做整人点不完的网站,怎么做网站免费的教程作者#xff1a; Herman Ye Galbot Auromix 测试环境#xff1a; Ubuntu20.04 更新日期#xff1a; 2023/08/30 注1#xff1a; Auromix 是一个机器人爱好者开源组织。 注2#xff1a; 本文在更新日期经过测试#xff0c;确认有效。 笔者出于学习交流目的#xff0c; 给…作者 Herman Ye Galbot Auromix 测试环境 Ubuntu20.04 更新日期 2023/08/30 注1 Auromix 是一个机器人爱好者开源组织。 注2 本文在更新日期经过测试确认有效。 笔者出于学习交流目的 给出以下ModbusCRC16校验常用的四种函数以及完整示例代码 1.计算CRC 注意 此处在末尾进行了高低位交换可根据需求删减代码交换高低位顺序。 unsigned short calculateModbusCRC16(const vectoruint8_t data) {int length data.size();unsigned short CRC 0xFFFF; // initial valuefor (int i 0; i length; i) {CRC CRC ^ data[i]; // XOR byte into least sig. byte of crcfor (int j 0; j 8; j) {if (CRC 1) {CRC 1;CRC ^ 0xA001;} else {CRC 1;}}}unsigned short swappedCRC ((CRC 8) 0xFF) | ((CRC 0xFF) 8);return swappedCRC; }2.添加CRC校验位 注意 此处进行了高低位交换可根据需求删减代码交换高低位顺序。 void addModbusCRC16(vectoruint8_t data) {unsigned short crc calculateModbusCRC16(data);// Append CRC bytes to the data vectordata.push_back((crc 8) 0xFF); // MSBdata.push_back(crc 0xFF); // LSB}3.删除CRC校验位 void removeModbusCRC16(vectoruint8_t dataWithCRC) {int length dataWithCRC.size();// Error checkif (length 2) {cerr Invalid data length endl;return;}// Delete CRC at the enddataWithCRC.resize(length - 2); }4.比较CRC校验位 bool compareModbusCRC16(const vectoruint8_t dataWithCRC) {int length dataWithCRC.size();// Error checkif (length 2) {cerr Invalid data length endl;return false;}// Get data without CRCvectoruint8_t dataWithoutCRC(dataWithCRC.begin(), dataWithCRC.end() - 2);// Calculateunsigned short calculatedCRC calculateModbusCRC16(dataWithoutCRC);// Get original CRCunsigned short originalCRC (dataWithCRC[length - 2] 8) | dataWithCRC[length - 1];return originalCRC calculatedCRC; }5.完整示例代码 #include iostream #include vector #include iomanip using namespace std;unsigned short calculateModbusCRC16(const vectoruint8_t data) {int length data.size();unsigned short CRC 0xFFFF; // initial valuefor (int i 0; i length; i) {CRC CRC ^ data[i]; // XOR byte into least sig. byte of crcfor (int j 0; j 8; j) {if (CRC 1) {CRC 1;CRC ^ 0xA001;} else {CRC 1;}}}unsigned short swappedCRC ((CRC 8) 0xFF) | ((CRC 0xFF) 8);return swappedCRC; }void addModbusCRC16(vectoruint8_t data) {unsigned short crc calculateModbusCRC16(data);// Append CRC bytes to the data vectordata.push_back((crc 8) 0xFF); // MSBdata.push_back(crc 0xFF); // LSB}void removeModbusCRC16(vectoruint8_t dataWithCRC) {int length dataWithCRC.size();// Error checkif (length 2) {cerr Invalid data length endl;return;}// Delete CRC at the enddataWithCRC.resize(length - 2); }bool compareModbusCRC16(const vectoruint8_t dataWithCRC) {int length dataWithCRC.size();// Error checkif (length 2) {cerr Invalid data length endl;return false;}// Get data without CRCvectoruint8_t dataWithoutCRC(dataWithCRC.begin(), dataWithCRC.end() - 2);// Calculateunsigned short calculatedCRC calculateModbusCRC16(dataWithoutCRC);// Get original CRCunsigned short originalCRC (dataWithCRC[length - 2] 8) | dataWithCRC[length - 1];// Logcout ModbusCRC16 original: hex originalCRC endl;cout ModbusCRC16 calculated: hex calculatedCRC endl;return originalCRC calculatedCRC; }int main() {// Example data 1vectoruint8_t deviceData1 {0x01, 0x10, 0x00, 0x02, 0x00, 0x06, 0x0C, 0x41, 0x20,0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00,0x84, 0xC1}; // Example CRC: 0x84, 0xC1// Print original datacout Original data 1: ;for (uint8_t byte : deviceData1) {cout hex uppercase setw(2) setfill(0) (int)byte ;}cout endl;bool comparedResultcompareModbusCRC16(deviceData1);if (comparedResult)coutCompared result: TRUEendl;elsecoutCompared result: FALSEendl;// Example data 2coutendl;vectoruint8_t deviceData2 {0x01, 0x06, 0x00, 0x00, 0x01, 0x02, 0x02};// Example CRC: 0xDA, 0xC7cout Original data 2: ;for (uint8_t byte : deviceData2) {cout hex uppercase setw(2) setfill(0) (int)byte ;}cout endl;// Add CRC and print modified dataaddModbusCRC16(deviceData2);cout Add CRC to original data 2: ;for (uint8_t byte : deviceData2) {cout hex uppercase setw(2) setfill(0) (int)byte ;}cout endl;// Remove CRC from dataremoveModbusCRC16(deviceData2);cout Remove CRC from modified data 2: ;for (uint8_t byte : deviceData2) {cout hex uppercase setw(2) setfill(0) (int)byte ;}cout endl; return 0; }
http://www.w-s-a.com/news/860895/

相关文章:

  • 培训前端网站开发网站开发 群
  • 成都武侯区网站建设wordpress菜单分类目录
  • 牡丹江市西安区建设局网站给公司做的东西放到自己网站上
  • 做网站的前景如何郑州seo规则
  • 学校户网站建设方案专业设计服务
  • 电子商务网站建设好么有一个网站怎么做cpc
  • 镇海住房和建设交通局网站跨境电商就是忽悠人的
  • 维修网站怎么做跨境电商发展现状如何
  • 手机网站设计公司皆选亿企邦桐乡市建设局官方网站
  • 企业培训 电子商务网站建设 图片山东省住房和城乡建设厅网站主页
  • 做酒招代理的网站赣icp南昌网站建设
  • 怎样做网站內链大连市建设工程信息网官网
  • 网站软件免费下载安装泰安网站建设收费标准
  • 部署iis网站校园网站设计毕业设计
  • 网站快慢由什么决定塘沽手机网站建设
  • 苏州那家公司做网站比较好装修队做网站
  • 外贸网站推广中山网站流量团队
  • 网站前端设计培训做一份网站的步zou
  • 网站备案拍照茶叶网页设计素材
  • wordpress 手机商城模板关键词优化软件有哪些
  • 网站301做排名python做的网站如何部署
  • 昆山做企业网站工信部网站 备案
  • 做英文的小说网站有哪些网站做qq登录
  • 湖州建设局招投标网站深圳广告公司集中在哪里
  • 重庆主城推广网站建设商城网站建设预算
  • 宁波品牌网站推广优化公司开发公司工程部工作总结
  • 长沙建站模板微信网站建设方案
  • 不让网站在手机怎么做门户网站 模板之家
  • 网站建设及推广图片wordpress文章摘要调用
  • 手机版网站案例全国信息企业公示系统