#ifndef __MODBUS_H #define __MODBUS_H /***********************************************************************************/ #include "includes.h" #define MODBUS_REG_NUM_MAX 32 #define HOLDINGREG 0x03 //读取寄存器 #define WRITESINGLEREG 0x06 //写寄存器 #define BROADCAST 0x09 //广播 typedef struct STU_RGB{ unsigned char R; //0--未开 1--打开 unsigned char B; unsigned char G; }__attribute__((packed)) STU_RGB; typedef struct SUT_DEVICE_READ{ unsigned char Addr;//必须为非0 unsigned char Error;//故障码 0--正常 unsigned char RID[8]; //红外状态 }__attribute__((packed)) SUT_DEVICE_READ; //2+8 extern SUT_DEVICE_READ sut_device_read[MODBUS_REG_NUM_MAX]; typedef struct SUT_DEVICE_WRITE{ unsigned char Addr;//必须为非0 STU_RGB STU_RGB[8];// }__attribute__((packed)) SUT_DEVICE_WRITE; //25 extern SUT_DEVICE_WRITE sut_device_write; //下行设置 typedef struct SUT_DOWN{ // unsigned long PSN;// // unsigned long AKey;//根据PSN和HWID计算得到 unsigned char Led[3]; unsigned char Beep;//0--不响 1--长鸣 2--循环鸣 SUT_DEVICE_WRITE sut_device_write[32]; //32*(8*3+1) }__attribute__((packed)) SUT_DOWN; extern SUT_DOWN Device_Down; //上行读取上传 typedef struct SUT_UP{ unsigned long AKey;/// unsigned char Error;//故障码 0-正常 非0异常 unsigned char Status;//状态码 0--初始化中 1--正常工作 unsigned char Beep;//0--不响 1--长鸣 2--循环鸣 SUT_DEVICE_READ Devices[32]; }__attribute__((packed)) SUT_UP; extern SUT_UP Device_Up; typedef struct{ unsigned char Logined;//登陆状态 0--未登录 1-登录成功 unsigned char OnceFlag; unsigned char SetSlaveing; unsigned char Resend; }SUT_SYS_STATUS; extern SUT_SYS_STATUS sut_sys_status; //extern char SendData[850]; extern unsigned char g_ucModbusRefreshEN; extern unsigned char g_ucModbusRefreshSHUTDOWN; extern unsigned short g_ucRegNumCount; extern unsigned short g_ucModbusRefreshTimeOut; extern unsigned char device_vailable[MODBUS_REG_NUM_MAX]; extern unsigned char SelfChek; void ModbusCmdReadOneValue(unsigned short addr); int ProcessSetControl(); void Reg_Init(); int ModbusRecvProcess(unsigned char *pData); void ModbusRefreshValue(void); /***********************************************************************************/ #endif