📄 uartcomm.h
字号:
/****************************************************************************
* 文件名:UartComm.h (头文件)
* 功能:文件UartWaitFunc.c所调用的功能函数,采用该类函数,可使读写操作命令得以
实现,返回给调用函数执行的结果。
* 说明:主要包括发送读,写命令,数据帧的接受与检验,以及对接受数据帧的解码
****************************************************************************/
#ifndef UART_COMM_H
#define UART_COMM_H
#define DEF_MaxOutTime 1000 //默认通讯函数返回的最长允许时间
extern INT32S g_iMaxOutTime;
#define DEF_COM1 1
extern INT32S g_iComNumber; //默认操作为COM1
#define DEF_MaxFrameSize 50
extern INT32U g_iMaxFrameSize; //默认最大帧长为50字节,从':'起到'0x0a'
#define TAG_COMMAND_WRITE 1 //对TAG报告写操作
#define TAG_COMMAND_READ 2 //对TAG执行读操作
typedef enum {
ENUM_OPER_BIT = 0, //位TAG
ENUM_OPER_BYTE, //字节TAG
ENUM_OPER_WORD, //字TAG
ENUM_OPER_DWORD //双字TAG
} EOperType; //EOperType 表示操作对象的种类
typedef struct STC_TAG
{
INT8S cFlag; //表示是对哪种寄存器的操作,如'M','T'等
EOperType enmType;
INT32S addr;
INT32S bit; //仅当为位TAG有效时,表示为0-7的有效值
} STC_TAG; //STC_TAG 操作对象的具体信息
typedef struct STC_TAG_COMMAND
{
INT8U byTagOper; //Tag 操作方式 TAG_COMMAND_WRITE 或 TAG_COMMAND_READ
STC_TAG stcTag; //Tag 定义
INT8U byRange; //Tag连续操作范围
INT8U *pbyVal; //Tag读取值或写入值, 为动态分配类型
} STC_TAG_COMMAND;
extern INT8U IsDecodeSuccess(const char *pszDecTag, STC_TAG *pstcTag, INT8U byTestRW);
extern INT32S SendReadBitCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr);
extern INT32S SendReadByteCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr);
extern INT32S SendReadWordCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr);
extern INT32S SendReadDWordCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr);
extern INT32S GetModbusFrame(INT8U* const pbyResult);
extern INT32S ModbusFrameCheck(const INT8U *pbyResult, INT32U len, INT8U byAddr, EUartCommand enumCmd, INT32U dwSize);
extern INT32U GetFinalBitData(INT8U* const pbyResult, const INT8U* pszFrame, INT32U len);
extern INT32U GetFinalByteData(INT8U* const pbyResult, const INT8U* pszFrame, INT32U len);
extern INT32U GetFinalWordData(INT16U* const pwdResult, const INT8U* pszFrame, INT32U len);
extern INT32U GetFinalDWordData(INT32U* const pdwResult, const INT8U* pszFrame, INT32U len);
extern INT32S SendWriteBitCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr, const INT8U *pabyInput);
extern INT32S SendWriteByteCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr, const INT8U *pabyInput);
extern INT32S SendWriteWordCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr, const INT16U *pawInput) ;
extern INT32S SendWriteDWordCommand(const STC_TAG_COMMAND *pstcTagCmd, INT8U byAddr, const INT32U *padwInput);
#endif //#ifndef UART_COMM_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -