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

Modbus封装库(Com,tcp,udp一应俱全)

自行封装在用的Modbus通迅库,集成了com,tcp,udp, 做个笔记吧, 以下头文件,

#pragma once
#include <functional>
#include <vector>
#include <string>
#include <memory>
#ifdef LIBMODBUS_EXPORTS
#define LIBMODBUS_EXPORT_API __declspec(dllexport)
#else
#define LIBMODBUS_EXPORT_API __declspec(dllimport)
#endif
class LIBMODBUS_EXPORT_API RTUModbus {

public:
    //devflag is 1 as default value
    RTUModbus();
    ~RTUModbus();
public:
    std::string getAddrPLC();
    uint16_t getDevflag();
    int getPort();
    void sendBit(uint16_t addrstart, bool mvalue);
    bool readBit(uint16_t addrstart, uint8_t* destBit);
    void sendDataRegister(uint16_t addrstart, uint16_t mvalue);
    void sendDataRegisters(uint16_t addrstart, uint16_t* mvalue);
    void sendDataRegisters(uint16_t addrstart,const int len, uint16_t* mvalue);

    bool readDataRegisters(uint16_t addrstart, uint16_t* destBit);

    bool readDataRegisters(uint16_t addrstart,const int len, uint16_t* destBit);
    bool isConnected();
    void setPLCParam(const int mport, std::string ipra);
    void disconnect();
    bool connectPLCbyNet(const int port, const int devflag, std::string addr);
    bool connectPLC(const int devflag);
    //mport :com1  ,flag:0 Rs232,1:RS485
    bool connectPLCbySerial(const char * mport, const int flag, const int baud = 115200,
        char parity = 'N', const int data_bit = 8, const int stopbit = 1);
    bool connectTo_UDP(std::string strIP, const int mport);

private:
    std::shared_ptr<void> _modClient;
};

应用标例:

RTUModbus* mBus=new RTUModbus();

网口连接:

//tcp:

bool res=mBus->connectPLCbyNet(9000,1,"192.168.3.58");

//udp

bool res=connectTo_UDP("192.168.3.58",9000);

串口:

bool res=connectPLCbySerial("com1",1,115200);

读写方式,三者(串口、网口tcp,udp)都是共用的

下载地址:

LibModbus库(udp,tcp.com)一应俱全

https://download.csdn.net/download/sukeman/88504938

平台;VC++2015 ++

http://www.lryc.cn/news/221270.html

相关文章:

  • 专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家
  • C++常用格式化输出转换
  • 如何使用 Loadgen 来简化 HTTP API 请求的集成测试
  • 软件测试面试大家是不是一问到项目就不会了?
  • 伐木猪小游戏
  • 0007Java安卓程序设计-ssm基于Android的校园新闻管理系统
  • git增加右键菜单
  • openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果
  • 学习代码20231106
  • turtle绘制分形树-第10届蓝桥杯省赛Python真题精选
  • 【大厂招聘试题】__硬件工程师_2021年“美团”校招
  • 算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
  • 了解高防服务器的工作原理
  • AVL树性质和实现
  • 出口贸易媒体发稿推广6个技巧提升品牌知名度-华媒舍
  • 学习笔记:CANOE模拟LIN主节点和实际从节点进行通信测试
  • 模型可解释性
  • Django初窥门径-自定义用户模型
  • 微信小程序文件上传wx.uploadFile
  • 支持内录系统声音的Mac录屏软件Omi Recorder
  • 一、Hadoop初始化配置(final+ubuntu保姆级教程)
  • Linux常用的包管理工具
  • python随机生成指定长度的字符串
  • 语音识别接口试用
  • Java的数组使用
  • 基于STC15单片机温度光照蓝牙传输-proteus仿真-源程序
  • Jmter接口网站压力测试工具
  • 7.2 创建和销毁条件变量
  • 九凌网络:谷歌seo优化和外贸建站的五大优势
  • 【vue3/echarts】vue3中使用echarts/饼图/双轴双数据柱状图