📄 datastruct.h
字号:
#pragma once
#include "afxtempl.h"
#include "windows.h"
#define MAX_LEN 30 //定义测量点的表示符和单位的长度不超过30个字节
#define OUTPUT 1 //定义测量点的输出
#define INPUT 0 //定义测量点的输入
#define NONE 0 //定义无奇偶校验
#define ODD 1 //定义偶校验
#define EVEN 2 //定义奇校验
//用于记录测量点的数据类型
enum NODEDATATYPE{
tpBYTE,
tpCHAR,
tpWORD,
tpSHORT,
tpDWORD,
tpINT,
tpFLOAT,
tpDOUBLE
};
//定义测量点的数据类型
union NODEDATA
{
BYTE nByte;
char nChar;
WORD nWord;
short nShort;
DWORD nDWord;
int nInt;
float nFlaot;
double nDouble;
};
//定义串口的结构
struct COMMUINFO
{
BYTE nCommuID; //串口号
UINT nBaudRate; //波特率
BYTE nDataBit; //数据位长度
BYTE nParity; //奇偶校验位
BYTE nStopBit; //停止位
BYTE FlowCtr; //流量控制,保留未使用
};
//定义每个测量点的结构
struct NODEINFO
{
WORD nNodeID; //测量点ID,保留未使用
char strNodeName[MAX_LEN]; //测量点表示符,如Ia,Vc等
char strNodeUnit[MAX_PATH]; //测量点单位,如A,V,W等
bool nNodeIOType; //测量点是输入还是输出
NODEDATATYPE nNodeDataType; //测量点的数据类型,正如前面定义的tpBYTE,tpWORD等
NODEDATA nNodeData; //测量点数据
};
//定义测量点组,每个仪表有这样一个测量点组
typedef CArray<NODEINFO,NODEINFO&> *LPARRNODE;
//定义仪表结构
struct DEVICEINFO
{
UINT nDeviceID; //仪表ID号
CString strDeviceName; //仪表名称,由用户决定
CString strDeviceType; //仪表类型,由生产厂家决定
LPARRNODE parrNode; //仪表中的测量点组指针
};
//定义仪表组,每一个通道有这样一个仪表组
typedef CArray<DEVICEINFO,DEVICEINFO&> *LPARRDEVICE;
//定义通道结构
struct CHANNELSTRUCT
{
CString strPortName; //通道名称
CString strDriverFile; //通道所配置的驱动程序文件名
COMMUINFO stcCommuInfo; //通道的串口配置
LPARRDEVICE parrDevice; //通道中指向仪表组的指针
};
//定义通道指针,在一份配置文件中可能有多个通道
typedef struct CHANNELSTRUCT *LPCHANNELSTRUCT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -