嵌入式爱好者

查看: 11580|回复: 0

linux平台实现modbus主机协议栈的动态库libMbpoll

[复制链接]

3

主题

6

帖子

20

积分

扫一扫,手机访问本帖
发表于 2014-5-28 16:50:53 | 显示全部楼层 |阅读模式
libMbopll动态库是面向linux平台设计的modbus主机协议栈,可以运行在x86平台以及各种嵌入式linux平台;协议栈提供了简单明了的API接口提供给程序员进行应用层modbus主机程序开发;
libMbopll库支持modbus协议所有功能码操作,兼容modbus tcp及modbus rtu;
#ifndef _Mbpoll_H
#define _Mbpoll_H
#include <stdint.h>
class cMbpoll
{
        private:
                void *mp;
                unsigned int gettickcount();
                unsigned int limittime;
                void checklimit(void);
        protected:
        public:
                void pollnewrtu(const char *device, int baud, char parity,int data_bit, int stop_bit);//Function modbus rtu new
                void pollnewtcp(const char *ip_address, int port);//Function modbus tcp new
                void poll_set_response_timeout(const struct timeval *timeout);//Function set response timeout
                int poll_set_slave(int slave);//Function set slave id

                int read_bits(int addr, int nb, uint8_t *dest);//Function 01 (01hex) Read Coils
                int read_input_bits(int addr, int nb, uint8_t *dest);//Function 02 (02hex) Read Discrete Inputs
                int read_registers(int addr, int nb, uint16_t *dest);//Function 03 (03hex) Read Holding Registers
                int read_input_registers(int addr, int nb, uint16_t *dest);//Function 04 (04hex) Read Input Registers
                int write_bit(int coil_addr, int status);//Function 05 (05hex) Write Single Coil
                int write_register(int reg_addr, int value);//Function 06 (06hex) Write Single Register
                int write_bits(int addr, int nb, const uint8_t *data);//Function 15 (0Fhex) Write Multiple Coils
                int write_registers(int addr, int nb, const uint16_t *data);//Function 16 (10hex) Write Multiple Registers
                int write_and_read_registers(int write_addr, int write_nb,const uint16_t *src, int read_addr, int read_nb,uint16_t *dest);//Function 23 (17hex) Read/Write multiple registers

                cMbpoll();
                ~cMbpoll();
};
#endif

arm-linux.zip (84.74 KB, 下载次数: 16)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-12-23 14:36

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表