⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prosioapi.h

📁 这是一个分割窗口的程序,加了一个LCD窗口请大家自行研究
💻 H
字号:
// ProsIOApi.h: interface for the CProsIOApi class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_PROSIOAPI_H__86E6BEA1_9377_4B13_A17C_A45EAB6FA1DD__INCLUDED_)
#define AFX_PROSIOAPI_H__86E6BEA1_9377_4B13_A17C_A45EAB6FA1DD__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//定义变量类型
#if !defined(__Variable)
#define __Variable
	union Variable{	float	fv;		//浮点数
					long	lv;		//长整型
					DWORD	uv;		//无符号整型
					LPTSTR  pv;		//指针
					};
	#define VARIABLE Variable
#endif


//定义套接字的端口号
#define BASE_IP_PORT		2000

//定义应用程序数据报类型(2种,即服务器和客户机)
//一个局域网中,对同一个端口地址而言,服务器只能有一台,客户机可以有若干台
enum theComputerType{IS_NONE=0,IS_SERVER=0x1,IS_CLIENT=0x2};


//定义网络通信的命令类型
enum theNetCommCmd{
	NET_CMD_SEND_DATA=3,				//送一般数据
	NET_CMD_SEND_OVERRIDE_DATA=5,		//送超控数据

	NET_CMD_SEND_DATA_FROM_SERVER=6,	//从服务器转发的一般数据、超控及系数数据
	NET_CMD_REQ_ALL_DATA=7,			//请求服务器发送所有数据

	NET_CMD_COMMAND_TO_SERVER=10,		//由工程师、教员站送至服务器的命令包
	NET_CMD_COMMAND_TO_IES=11,			//由服务器送至工程师、教员站的命令包
	NET_CMD_SEND_EXIT=14,				//程序退出命令
	NET_CMD_SEND_CMD_TO_CLIENT=20,		//服务器送命令至客户机
};

#if !defined(__SOCKET_ID)
#define __SOCKET_ID
	union SockID{	DWORD ID;					//网络号
					BYTE  B[4];					//对TCP/IP=192.168.0.3等
	};
#endif

//读数据报回调函数
typedef int (*FROM_NET_DATA_FUNC)(void *DataBuf,int DataCount,WORD Cmd,DWORD Param);

class  __declspec( dllexport )  CProsIOApi  
{
public:
	
	int BaseIPPort;					//套接字号,默认为2000
	theComputerType StationType;	//应用程序数据报类型
	LPVOID pData;					//数据库接口指针
	LPVOID pSock;					//网络数据报指针
	FROM_NET_DATA_FUNC ReadFunc;	//读数据处理回调函数
	SockID LastNetDataIP;			//最近接收数据时所对应的IP地址
	
	CProsIOApi();
//	virtual ~CProsIOApi();
	
	//初始化网络函数,返回值为0表示成功,否则为错误号
	int		InitNet(theComputerType StationType=IS_CLIENT,
					int  BaseIPPOrt=BASE_IP_PORT,FROM_NET_DATA_FUNC pReadFunc=NULL);
	//初始化接口数据库函数,返回值为0表示成功,否则为错误号
	int		InitData(LPTSTR DataFileName,int TotalCount);
	//通过网络直接送数据或命令函数,返回值为所送的字节数
	int		SendCmd(WORD Cmd,DWORD Param=0);
	int		SendData(void *DataBuf,int BufLen);
//缓冲区按变量ID.变量值.变量ID.变量值...顺序排放,BufLen=变量数*2*sizeof(long)

////以下仅在初始化接口数据库成功后有效
	int		SendData(long VarID,Variable Var);		//按变量ID送变量值
	int		SendData(LPTSTR TagName,Variable Var);	//按变量名送变量值

	long	GetTagNameID(LPTSTR TagName);			//取指定变量的ID号
	long	Seek(LPTSTR Key);						//{return GetTagNameID(Key);};					//查找函数
	LPTSTR	GetTagName(int DbfPos);					//按记录号取变量名
//取对应数据库变量记录的ID号,输入=数据库记录号,输出=变量ID号,如果失败,返回值<0
	long	GetDataID(long DbfPos);
	Variable	GetData(long VarID);				//取指定变量的当前值

	//从服务器取数据包,返回为真表示已取到数据,否则未取到数据
//	int		ReceiveData(theDGramData *ReceiveData);
	void		ViewData(long VarID);				//按变量ID观察指定变量记录
	void		ViewData(LPTSTR TagName);			//按变量名观察指定变量记录
	void		List();								//变量记录列表

};

#endif // !defined(AFX_PROSIOAPI_H__86E6BEA1_9377_4B13_A17C_A45EAB6FA1DD__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -