You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

244 lines
8.2 KiB
C

11 months ago
/****************************************************************************
** File name : HTModbus.h
** Description : ISO Modbus protoclo api
** Create date : 2019.09.01
** Auther by : Liuyx
** Version info : V1.0.01
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
** Update record:
** DATE AUTHER DESC
** -------------------------------------------------------------------------
** 2019.09.01 Liuyx first build
****************************************************************************/
#ifndef __HT_MODBUS_PROTOCOL_H
#define __HT_MODBUS_PROTOCOL_H
#include "HTGlobal.h"
//#include "modbus/modbus.h"
#pragma pack (push ,1)
#ifdef _WIN32
//#pragma comment(lib,"modbus.lib")
#endif
// <20><EFBFBD><E8B1B8>ַ
#define MODBUS_DEVICE_ADDR 0x01
// <20><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
#define MODBUS_CONTROL_START_ADDR 0x00CF //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
#define MODBUS_CONTROL_ADDR_COUNT 32 //<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD>ⵥԪ<E2B5A5><D4AA>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>
#define MODBUS_MONITOR_START_ADDR 0x0000 // <20><><EFBFBD>ⵥԪ<E2B5A5>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
#define MODBUS_MONITOR_UNIT_COUNT 3 // <20><><EFBFBD>ⵥԪ<E2B5A5>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Modbus function code
#define MODBUS_FUNC_CODE3 0x03 // 3
#define MODBUS_FUNC_CODE6 0x06 // 6
#define MODBUS_FUNC_CODE16 0x10 // 16
// Modbus respone code
#define MODBUS_FUNC_CODE3_ERR 0x83 // 3<><EFBFBD><ECB3A3><EFBFBD><EFBFBD>
// Modbusͨ<73>ŷ<EFBFBD>ʽ
typedef enum{
HT_MODBUS_MODE_TCP = 1, /* modbus communication mode by tcp */
HT_MODBUS_MODE_RTU = 2, /* modbus communication mode by rtu */
HT_MODBUS_MODE_ASC = 3 /* modbus communication mode by ascii */
}HT_MODBUS_TYPE;
#define HT_MODBUS_RTU
// <20><><EFBFBD>ⵥԪ<E2B5A5><D4AA><EFBFBD><EFBFBD>
#define HT_UNIT_VOLTAGE 0x0001 // ĸ<>ߵ<EFBFBD>ѹ<EFBFBD><D1B9>Ԫ
#define HT_UNIT_CAPACITY 0x0002 // <20><><EFBFBD>Լ<EFBFBD><D4BC>ⵥԪ
#define HT_UNIT_ARRESTER 0x0003 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥԪ
#define HT_UNIT_ICGE 0x0004 // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>ⵥԪ
#define HT_UNIT_TEMP_HUMI 0x000A // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʪ<EFBFBD>ȼ<EFBFBD><C8BC>ⵥԪ
#define HT_UNIT_SLV 0x000F // <20><><EFBFBD><EFBFBD><EFBFBD>񶯼<EFBFBD><F1B6AFBC>ⵥԪ
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define HT_STAT_NORNAL 0x0000 // <20><><EFBFBD><EFBFBD>
#define HT_STAT_NET_EXCEPTION 0x0001 // ͨ<><CDA8><EFBFBD>
#define HT_STAT_SELF_CHECK 0x0002 // <20>Լ<EFBFBD><D4BC>
#define HT_STAT_SIGNAL 0x0004 // <20>ź<EFBFBD><C5BA>
#define HT_STAT_POWER 0x0008 // <20><><EFBFBD><EFBFBD><EFBFBD>
// <20><EFBFBD><E6BEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define WARN_HIGT_BIT0_100HZ ((1<<16) & 0xff) // Bit0 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>100HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit1 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>200HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit2 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>300HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit3 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>400HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit4 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>500HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit5 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>600HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit6 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>700HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit7 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>800HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit8 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>900HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit9 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>1000HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit10 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>100HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit11 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>200HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit12 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>300HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit13 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>400HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit14 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>500HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit15 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>600HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
typedef struct {
char errcode;
char errmsg[64];
}ST_MODBUS_ERRMSG;
// <20><><EFBFBD>ⵥԪ״̬
typedef struct {
unsigned char rs0 : 1,// Ԥ<><D4A4>λ
rs1 : 1, // Ԥ<><D4A4>λ
rs2 : 1, // Ԥ<><D4A4>λ
rs3 : 1, // Ԥ<><D4A4>λ
rs4 : 1, // Ԥ<><D4A4>λ
st5 : 1, // Bit2=1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3ͨѶ<CDA8>
st6 : 1, // Bit1=1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2ͨѶ<CDA8>
st7 : 1; // Bit0=1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1ͨѶ<CDA8>
}UCTYPE;
// <20><><EFBFBD><EFBFBD>״̬λ
struct BST {
unsigned char cex : 1, // 1-ͨ<><CDA8><EFBFBD>
cce : 1, // self check exception
sig : 1, // signal exception
pex : 1, // power exception
bt4 : 1, // reserve
bt5 : 1, // reserve
bt6 : 1, // reserve
bt7 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWL {
unsigned char p100 : 1, // 1-ͨ<><CDA8><EFBFBD>
p200 : 1, // self check exception
p300 : 1, // signal exception
p400 : 1, // power exception
p500 : 1, // reserve
p600 : 1, // reserve
p700 : 1, // reserve
p800 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWM {
unsigned char p900 : 1, // 1-ͨ<><CDA8><EFBFBD>
p1000 : 1, // self check exception
s100 : 1, // signal exception
s200 : 1, // power exception
s300 : 1, // reserve
s400 : 1, // reserve
s500 : 1, // reserve
s600 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWH {
unsigned char s700 : 1, // 1-ͨ<><CDA8><EFBFBD>
s800 : 1, // self check exception
s900 : 1, // signal exception
s1000 : 1, // power exception
s300 : 1, // reserve
s400 : 1, // reserve
s500 : 1, // reserve
s600 : 1; // reserve
};
// <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>unsigned short
struct stUSHORT{
char Low;
UCTYPE Hig;
};
typedef struct {
unsigned short usUtilType; // <20><><EFBFBD>ⵥԪ<E2B5A5><D4AA><EFBFBD><EFBFBD>
unsigned char ucL1; // Ԥ<><D4A4>
UCTYPE ucH1; // <20><><EFBFBD>ⵥԪ״̬
unsigned char ucL2; // Ԥ<><D4A4>
UCTYPE ucH2; // <20><><EFBFBD>ⵥԪ<E2B5A5><D4AA><EFBFBD><EFBFBD>
}ST_BIT_MAP;
// <20><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>
typedef struct {
// <20><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>-<2D><><EFBFBD><EFBFBD>IED<45><44><EFBFBD><EFBFBD>
unsigned short usEnvEnable; //13<31><33><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usNeuEnable; //14<31><34><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usAUpEnable; //1ԭ<31><D4AD>A<EFBFBD><41><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usADnEnable; //2ԭ<32><D4AD>A<EFBFBD><41><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usBUpEnable; //3ԭ<33><D4AD>B<EFBFBD><42><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usBDnEnable; //4ԭ<34><D4AD>B<EFBFBD><42><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usCUpEnable; //5ԭ<35><D4AD>C<EFBFBD><43><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usCDnEnable; //6ԭ<36><D4AD>C<EFBFBD><43><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usaupEnable; //7<><37><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usadnEnable; //8<><38><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usbupEnable; //9<><39><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usbdnEnable; //10<31><30><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short uscupEnable; //11<31><31><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short uscdnEnable; //12<31><32><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>
unsigned short usSmpProd; //15<31>ɼ<EFBFBD>Ƶ<EFBFBD><C6B5>(KHz)
unsigned short usSmpInt; //16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Сʱ)
unsigned short usStartTime; //17<31><37>ʼʱ<CABC><CAB1>
unsigned short usEnable; //18ʹ<38><CAB9><EFBFBD>ź<EFBFBD>, true:yes false: no
unsigned short usEnvChannel; //19<31><39><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usNeuChannel; //20<32><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usAUChannel; //21ԭ<31><D4AD>A<EFBFBD><41><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usADChannel; //22ԭ<32><D4AD>A<EFBFBD><41><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usBUChannel; //23ԭ<33><D4AD>B<EFBFBD><42><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usBDChannel; //24ԭ<34><D4AD>B<EFBFBD><42><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usCUChannel; //25ԭ<35><D4AD>C<EFBFBD><43><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usCDChannel; //26ԭ<36><D4AD>C<EFBFBD><43><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usauChannel; //27<32><37><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usadChannel; //28<32><38><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usbuChannel; //29<32><39><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short usbdChannel; //30<33><30><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short uscuChannel; //31<33><31><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>ϲ<CFB2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
unsigned short uscdChannel; //32<33><32><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>²ഫ<C2B2><E0B4AB><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>
}ST_MODBUS_CONTROL;
typedef struct {
unsigned short useqid; // Ϊ<>˴<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ÿ<EFBFBD><C3BF>ͨ<EFBFBD><CDA8>֮<EFBFBD>󽫱<EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><CDAC>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD>
unsigned short usprotol; // Э<><D0AD><EFBFBD><EFBFBD>ʶ<EFBFBD><CAB6>,00 00ΪmodbusЭ<73><D0AD>
unsigned short uslength; // <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>ָʾ<D6B8><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3>ȣ<EFBFBD><C8A3><EFBFBD>λ<EFBFBD>ֽ<EFBFBD>;
unsigned char bdevid; // <20><EFBFBD><E8B1B8>ַ<EFBFBD><D6B7>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>󱣳<EFBFBD>һ<EFBFBD><D2BB>,<2C><><EFBFBD>Ա<EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>߻<EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD>˵ĵ<CBB5>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߸<EFBFBD><DFB8>ֽ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>Ϊmodbus<75><73><EFBFBD><EFBFBD>ͷ
unsigned char bfunc; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA3AC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>03Ϊ<33><CEAA>ȡ<EFBFBD><C8A1><EFBFBD>ּĴ<D6BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}ST_MODBUS_HEADER;
typedef struct {
ST_MODBUS_HEADER stHeader; // <20><>ͷ
unsigned short usbeginaddr; // <20>׸<EFBFBD><D7B8>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ/<2F><><EFBFBD><EFBFBD>
unsigned short uscount; // <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD> RTU<54><55>ʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43>
}ST_REQ_READ_REGEDIT_FUNC3;
// <20><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD><33><D3A6><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ʽ
typedef struct {
ST_MODBUS_HEADER stHeader; // <20><>ͷ
unsigned char blength; // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>(<28><><EFBFBD>ܴ<EFBFBD><DCB4><EFBFBD>3<EFBFBD><33><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ2<CEAA>ֽ<EFBFBD>)
unsigned short *pusVal; // <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43>
}ST_RSP_READ_REGEDIT_FUNC3;
typedef struct {
ST_MODBUS_HEADER stHeader; // <20><>ͷ
unsigned short usbeginaddr; // <20>׸<EFBFBD><D7B8>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ/<2F><><EFBFBD><EFBFBD>
unsigned short uscount; // <20>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD> RTU<54><55>ʽ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>CRC<52><43>
unsigned char blen; // <20><><EFBFBD><EFBFBD><EFBFBD>ֽڸ<D6BD><DAB8><EFBFBD>
}ST_REQ_WRITE_REGEDIT_FUNC16;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void *thread_modbus_service_proc(void *arg);
#ifdef __cplusplus
}
#endif
#pragma pack (pop)
#endif /* end __HT_MODBUS_PROTOCOL_H */