📄 modbus.h
字号:
#ifndef __MODBUS_H__
#define __MODBUS_H__
#pragma once
/*
MODBUS 通信模块头文件
本模块实现如下方法:
OpenSerial 串口设置
CloseSerial 关闭串口
RdMultiBit 读多个线圈
RdMultiWord 读多个寄存器
WrtOneBit 写单个线圈
WrtOneWord 写单个寄存器
WrtMultiBit 写多个线圈
WrtMultiWord 写多个寄存器
VerifyPack 回送诊断校验
*/
#ifdef __DLLEXPORT__
#define DLLPROC __declspec(dllexport)
#else
#define DLLPROC __declspec(dllimport)
#endif // __DLLEXPORT__
/* 错误代码定义 */
#define MODBUS_NOERROR 0 // 成功
#define MODBUS_INVALID_FUNC 1 // 非法功能码
#define MODBUS_INVALID_REG 2 // 非法寄存器地址
#define MODBUS_INVALID_COUNT 3 // 数据个数错误
#define MODBUS_NO_LIB 100 // 无法导入动态库
#define MODBUS_NO_IMPL 99 // 尚未实现
#define MODBUS_INVALID_PARAM 98 // 函数参数错误
#define MODBUS_OPEN_FAILED 97 // 无法打开端口
#define MODBUS_PORT_UNAVAILABLE 96 // 端口不可用
#define MODBUS_LOW_MEM 95 // 内存不足
#define MODBUS_NO_RESPONSE 94 // 从机无响应
#define MODBUS_BAD_RESPONSE 93 // 响应格式不合法
#define MODBUS_CRC_ERROR 92 // CRC校验码不正确
/* 协议模式定义 */
#define PROTOCOL_ASCII 0 // ASCII模式
#define PROTOCOL_RTU 1 // RTU模式
/* 功能码定义 */
#define FN_READ_BITS 1 // 读线圈
#define FN_READ_INPUT 2 // 读离散量输入
#define FN_READ_WORDS 3 // 读保存寄存器
#define FN_WRITE_ONEBIT 5 // 写单个线圈
#define FN_WRITE_ONEWORD 6 // 写单个寄存器
#define FN_WRITE_BITS 15 // 写多个线圈
#define FN_WRITE_WORDS 16 // 写多个寄存器
#define FN_VERIFY_PACK 8 // 回送诊断校验
extern "C" {
/* 接口方法定义 */
DLLPROC long __stdcall OpenSerial( int nSerialNo,
int nBaud,
int nDataBit,
int nStopBit,
int nProType,
int nRetryTime,
int nTimeOut );
DLLPROC long __stdcall CloseSerial( int nSerialNo );
DLLPROC long __stdcall RdMultiBit( int nSerialNo,
int nStationNo,
const char* ucStartAddr,
int nNum,
unsigned char ucRefValue[] );
DLLPROC long __stdcall RdMultiWord( int nSerialNo,
int nStationNo,
const char* ucStartAddr,
int nNum,
short sRefValue[] );
DLLPROC long __stdcall WrtOneBit( int nSerialNo,
int nStationNo,
const char* ucAddr,
unsigned char ucValue );
DLLPROC long __stdcall WrtOneWord( int nSerialNo,
int nStationNo,
const char* ucAddr,
short sValue );
DLLPROC long __stdcall WrtMultiBit( int nSerialNo,
int nStationNo,
const char* ucStartAddr,
int nNum,
unsigned char ucValue[] );
DLLPROC long __stdcall WrtMultiWord( int nSerialNo,
int nStationNo,
const char* ucStartAddr,
int nNum,
short sValue[] );
DLLPROC long __stdcall VerifyPack( int nSerialNo,
int nStationNo,
short sVerifyCode,
short* DataField );
}; // extern "C"
#endif // __MODBUS_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -