optical/NxFuncs/modbus/ef_a.h

74 lines
1.4 KiB
C
Raw Normal View History

2025-09-04 01:45:08 +00:00
/*
* <EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD><EFBFBD>EF_AЭ<EFBFBD><EFBFBD>
*/
#ifndef _EF_A_H_
#define _EF_A_H_
#include "config.h"
#include "serial.h"
typedef struct
{
int idx;
u8 addr;
u16 wrdat;
u16 rddat;
}EFCmd;
#ifndef MAX_EF_CMD
#define MAX_EF_CMD 50
#endif
typedef void (*ResvEFProc)(EFCmd * pcmd); // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct
{
EFCmd cmdbuf[MAX_EF_CMD];
// <20>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>
int working; // <20><><EFBFBD>ڶ<EFBFBD>д<EFBFBD><D0B4>; = 1, <20><><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int bufCmdNum; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; != 0, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int bufHead;
int bufTail;
int steps;
u32 stepTime;
ResvEFProc resvefproc; // <20>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int efrsvTimout; // <20><>ȡ<EFBFBD><C8A1>ʱʱ<CAB1><CAB1>
}AsyncEFCtrl;
typedef void (*CommOutFunc)(void);
typedef struct
{
u32 efSendWait; // ͨѶ<CDA8><D1B6>ʱ, <20><>λus,<2C><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// ͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
UsartSendData EFCommSend; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UsartGetData EFCommReceive; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UsartCleanRsBuf EFCommCleanRsBuf; // <20><><EFBFBD>ս<EFBFBD><D5BD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>
IsUsartSendOver IsEFCommSendOver; // <20>жϷ<D0B6><CFB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>
CommOutFunc CommOutEn; // <20><><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CommOutFunc CommOutDis; // <20><><EFBFBD>ݷ<EFBFBD><DDB7>ͽ<EFBFBD>ֹ
}EFCommCtrl;
void InitEF(int idx, int usart, BAUD_TypeDef baud, char dat, char parity, char stop);
int EFTx(int idx, u8 addr, u16 data, int steps);
int EFRx(int idx, u16 * pData, int steps);
int EFComm(int idx, u8 addr, u16 wrDat, u16 * pRdBuf);
void InitAsyncEFCtrl(int idx, int rsvtimout);
void RegEFCmdProc(int idx, ResvEFProc proc);
int AddEFCmd(EFCmd * pCmd);
int GetEFCmdBufLen(int idx);
int AsyncEFTask(int idx);
#endif /* _EF_A_H_ */