#if !defined(ZNE100DLL_H)
#define ZNE100DLL_H


typedef struct _tagCANETEINFO
{
	char desip[16];//目标IP地址
	USHORT desport;//目标端口号
	BYTE blisten;//工作模式,0表示正常模式,1表示只听模式
}CANETEINFO;//存储CANET-E的特定信息


typedef struct _tagZNE100INFO
{
	BYTE baud;
	/*
	300,600,1200,2400,4800,9600,19200,38400,57600,115200,230400,576000,1152000
	对应关系，为0表示300Bps，12表示1152000Bps
	ZNE-100,ZNE-100T,ZNE-100TI,ZNE-10T最大支持波特率115200
	ZNE-200,ZNE-200T最大支持波特率1152000
	NETCOM-10最大支持波特率230400
	*/

	BYTE databits;//范围05h～08h
	BYTE stopbits;//01h或02h
	BYTE checkbits;//00h表示无校验位，01h表示Even，02h表示Odd，3表示Mark，4表示Space
}ZNE100INFO;//存储ZNE系列模块的串口信息

typedef struct _tagDEVINFO
{
	//模块型号,0x01-ZNE100,0x02-ZNE-100T,0x04-ZNE-200T,
	//0x05-NETCOM-10,0x06-ZNE-200,0x07-ZNE-10T,0x08-ZNE-100TI,0x11-CANETE
	BYTE bmoduletype;

	char szname[11];//模块名称
	char szip[16];//IP地址
	char szmask[16];//子网掩码
	char szgateip[16];//网关
	char szmacaddr[18];//MAC地址
	BYTE bstaticip;//00h表示静态配置IP地址，01h表示使用DHCP动态获取IP地址
	int workport;//工作端口

	int timeout;//在ZNE-100T,ZNE-200,ZNE-200T,ZNE-100TI,NETCOM-10时有效
	int tcptimeout;//在ZNE-100时有效

	//用于ZNE系列产品
	char desip[16];//目标IP地址
	USHORT desport;//目标端口号
	USHORT workmode;//工作模式
	//1-"TCP Server",2-"UDP",3-"TCP Client",4-"Real COM",5-"Group Mode",
	//6-"TCP Auto"

	ZNE100INFO zne100info;
	CANETEINFO caneteinfo;
}DEVINFO;//存储设备相关信息

int __stdcall ZNET_Init();
int __stdcall ZNET_Uninit();
int __stdcall ZNET_SearchBroadcast();
int __stdcall ZNET_SearchIP(char* szip);
int __stdcall ZNET_GetDeviceInformation(char* szip,DEVINFO* pinfo);
int __stdcall ZNET_Stop();
int __stdcall ZNET_RecDevice(DEVINFO* pdevinfo,int *plen);
int __stdcall ZNET_ModifyDevice(char* szip,char *szpwd,DEVINFO &info);

void __stdcall ZNET_ModifyComCfg(char* szip,ZNE100INFO &info);

//适用于ZNE-100T,ZNET-200,ZNET-200T,NETCOM-10,ZNET-100TI
int __stdcall ZNET_ResetDevice(char* szip);//通过UDP复位设备，不能获知复位结果

//适用于ZNE-100T,ZNET-200,ZNET-200T,ZNET-100TI
int __stdcall ZNET_GetIOStat(char* szip,int port,BYTE* pdirection/*输入输出方向状态*/,
							 BYTE* pelevel/*电平状态*/);
int __stdcall ZNET_SetIOStat(char* szip,int port,BYTE type,
							 BYTE *pdirection,BYTE *pelevel);
//type=0,表示更改输入输出方向状态，elevel忽略
//type=1,表示更改电平状态，direction忽略
//type=2,表示全部更改

//适用于ZNET-200,ZNE-200T,NETCOM-10,ZNE-100T,ZNET-100TI
int __stdcall ZNET_ResetDevTCP(char* szip,int port);//可靠复位

//适用于ZNET-200,ZNE-200T,ZNET-100TI
int __stdcall ZNET_GetADC(char* szip,int port,WORD *padc0,WORD* padc1);
//padc0和padc1只有低10位有效

#endif

