📄 prosioapi.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 + -