码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Modbus封装库(Com,tcp,udp一应俱全)


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

    #pragma once
    #include
    #include
    #include
    #include
    #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 _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 ++

  • 相关阅读:
    【VIP专属】Python应用案例——基于OpenCV图像卡通化处理&图像识别算法实验
    云管平台监控实践分享
    【Redis】Docker部署Redis数据库
    【LeetCode】54. 螺旋矩阵
    PTA作业10单链表6-1 链表拼接
    通过多进程并发方式(fork)实现服务器(注意要回收子进程)
    力扣刷题day48|583两个字符串的删除操作、72编辑距离
    【ESP32_8266_WiFi (十三)】ESP8266自动配网 – WiFiManager库使用说明
    基于springboot实现财务管理系统项目【项目源码+论文说明】计算机毕业设计
    三个统一..........
  • 原文地址:https://blog.csdn.net/sukeman/article/details/134232194
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号