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

软件开发和网站建设舆情大数据分析

软件开发和网站建设,舆情大数据分析,深圳福田在线,wordpress响应式商场设计模式之策略模式 笔者经常使用Modbus TCP和Modbus RTU通信协议#xff0c;而两种的请求数据的格式不一样#xff0c;故而采用策略模式来健壮整个工程项目。 代码示例 #ifndef MODBUS_H #define MODBUS_H #include stringstd::string convertToHex(unsigned char… 设计模式之策略模式 笔者经常使用Modbus TCP和Modbus RTU通信协议而两种的请求数据的格式不一样故而采用策略模式来健壮整个工程项目。 代码示例 #ifndef MODBUS_H #define MODBUS_H #include stringstd::string convertToHex(unsigned char* data, int length);class Modbus { public:Modbus();virtual void modbusFormat() 0; };#endif // MODBUS_H#include modbus.h #include sstream #include iomanipstd::string convertToHex(unsigned char* data, int length) {// std::string hexString;// for (int i 0; i length; i)// {// hexString (i 0 ? : ) std::to_string(data[i]);// }// return hexString;// std::stringstream ss;// ss std::hex std::setfill(0);// for (int i 0; i length; i) {// ss std::setw(2) static_castint(data[i]) ;// }// return ss.str();std::stringstream ss;ss std::hex std::setfill(0) std::uppercase;for (int i 0; i length; i) {ss std::setw(2) static_castint(data[i]);if (i length - 1) {ss ;}}return ss.str(); }Modbus::Modbus() {}#ifndef MODBUSRTU_H #define MODBUSRTU_H #include stdint.h #include modbus.hclass ModbusRtu : public Modbus { public:ModbusRtu();void modbusFormat() override;void transmitRTU();private:uint8_t m_slaveId;uint8_t m_funCode;uint16_t m_registerBeginAddr;uint16_t m_registerTotal;uint16_t m_crc;unsigned char transmitData[8]; };#endif // MODBUSRTU_H#include modbusrtu.h// 计算CRC16校验值 static uint16_t calculateCRC16(uint8_t* data, uint16_t length) {uint16_t crc 0xFFFF;for (uint16_t i 0; i length; i) {crc ^ data[i];for (uint8_t j 0; j 8; j) {if (crc 0x0001) {crc 1;crc ^ 0xA001;} else {crc 1;}}}return crc; }ModbusRtu::ModbusRtu() {m_slaveId 1;m_funCode 3;m_registerBeginAddr 10;m_registerTotal 50; }void ModbusRtu::modbusFormat() {transmitData[0] m_slaveId;transmitData[1] m_funCode;transmitData[2] m_registerBeginAddr 8;transmitData[3] m_registerBeginAddr 0xFF;transmitData[4] m_registerTotal 8;transmitData[5] m_registerTotal 0xFF;m_crc calculateCRC16(transmitData, 6);transmitData[6] m_crc 8;transmitData[7] m_crc 0xFF;transmitRTU(); }void ModbusRtu::transmitRTU() {printf([%s:%d][RTU] %s\n, __FILE__, __LINE__, convertToHex(transmitData, 8).c_str()); }#ifndef MODBUSTCP_H #define MODBUSTCP_H #include stdint.h #include modbus.hclass ModbusTcp : public Modbus { public:ModbusTcp();void modbusFormat() override;void transmitTCP();private:uint16_t m_transactionIdentifier; //事务标识符号uint16_t m_protocolIdentifier; //协议标识符uint16_t m_dataLength; // 数据长度uint8_t m_slaveId;uint8_t m_funCode;uint16_t m_registerBeginAddr;uint16_t m_registerTotal;unsigned char transmitData[12]; };#endif // MODBUSTCP_H#include modbustcp.h #include stdio.hstatic uint16_t numFlag 0;ModbusTcp::ModbusTcp() {m_slaveId 0x01;m_funCode 0x03; }void ModbusTcp::modbusFormat() {m_transactionIdentifier numFlag;m_protocolIdentifier 0;m_dataLength 0x06;m_registerBeginAddr 0x0A;m_registerTotal 0x32;transmitData[0] m_transactionIdentifier 8;transmitData[1] m_transactionIdentifier 0xFF;transmitData[2] m_protocolIdentifier 8;transmitData[3] m_protocolIdentifier 0xFF;transmitData[4] m_dataLength 8;transmitData[5] m_dataLength 0xFF;transmitData[6] m_slaveId;transmitData[7] m_funCode;transmitData[8] m_registerBeginAddr 8;transmitData[9] m_registerBeginAddr 0xFF;transmitData[10] m_registerTotal 8;transmitData[11] m_registerTotal 0xFF;numFlag;transmitTCP(); }void ModbusTcp::transmitTCP() {printf([%s:%d][TCP] %s\n, __FILE__, __LINE__, convertToHex(transmitData, 12).c_str()); }#ifndef COMMPROTOCOL_H #define COMMPROTOCOL_H #include modbus.hclass CommProtocol { public:enum e_Modbus{ModbusTCP 1,ModbusRTU};public:CommProtocol();void setModbus(Modbus* mbus);void requestData();private:Modbus* m_Modbus; };#endif // COMMPROTOCOL_H#include commprotocol.hCommProtocol::CommProtocol() {}void CommProtocol::setModbus(Modbus *mbus) {m_Modbus mbus; }void CommProtocol::requestData() {m_Modbus-modbusFormat(); }#include iostream #include unistd.h #include cstdlib #include ctime #include modbustcp.h #include modbusrtu.h #include commprotocol.husing namespace std;int main() {ModbusTcp modTcp;ModbusRtu modRtu;CommProtocol commProtocol;// 设置随机数种子std::srand(std::time(0));while (true) {// 生成1和3之间的随机数int randomNumber std::rand() % 3 1;// printf(randomNumber %d\n, randomNumber);if(randomNumber CommProtocol::e_Modbus::ModbusTCP){commProtocol.setModbus(modTcp);commProtocol.requestData();}else if(randomNumber CommProtocol::e_Modbus::ModbusRTU){commProtocol.setModbus(modRtu);commProtocol.requestData();}else{commProtocol.setModbus(modTcp);commProtocol.requestData();}sleep(2);}cout Over endl;return 0; }效果演示
http://www.pierceye.com/news/139934/

相关文章:

  • 乌苏市城乡建设局网站外贸网网站建设
  • html5网站开发实例书籍凡科建站代理
  • 与建设部网站网站注册登录页面设计
  • 企业网站推广计划免费最新如何建设网站教程视频
  • 17一起做网站普宁站好看个人网页模板
  • 民治营销网站专业网站建设价格最优
  • 免费的html网站做柜子喜欢上哪些网站看
  • 网站没备案怎么做加速现代装修风格三室两厅效果图
  • 互助平台网站建设网上商城怎么购物
  • 百度知道山东网站建设建设网站成本预算
  • 人人做免费网站网站建站是 什么
  • 以背景做网站视频为单位网站建设实施方案
  • 简洁大气企业网站模板西安个人做网站
  • 做一个网站需要到哪里做辽宁同鑫建设网站
  • 开发网站监控推荐扬中市建设局网站
  • 手机网站根目录简述一个网站设计的主要步骤
  • 网站改版seo建议网页设计师的能力
  • 网站上线前应该备案吗温州网站建设风格
  • 网站建设书籍免费聊城市东昌府区建设路小学网站
  • 网站标题优化怎么做找人一起做素材网站
  • 如何创建个人网站模板用织梦做模板网站
  • 平台建站建设做网站一定要有营业执照吗
  • 如何把学校网站建设好天猫店铺购买
  • 网站的建设和推广企业网站建设的主要目的是
  • html5 公众号 网站开发工程公司名称
  • 公司做网站那家好网站二维码怎么制作
  • 鼓楼区建设房产和交通局网站网站全屏图片怎么做
  • 外贸订单流失严重番禺网站建设优化推广
  • 做网站送邮箱电商网站建设行情
  • f2c网站建设珠海手机网站建设费用