| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719 | //============================================================-//	CDIOCS.CS//	Class file for CONTEC Digital I/O device//												CONTEC.Co.,Ltd.//============================================================-using	System;using	System.Runtime.InteropServices;public enum CdioConst{//-------------------------------------------------//	Type definition//-------------------------------------------------	DEVICE_TYPE_ISA				=	0,	//	ISA or C bus	DEVICE_TYPE_PC				=	1,	//	PCI bus	DEVICE_TYPE_PCMCIA			=	2,	//	PCMCIA	DEVICE_TYPE_USB				=	3,	//	USB	DEVICE_TYPE_FIT				=	4,	//	FIT	DEVICE_TYPE_CARDBUS			=	5,	//	CardBus//-------------------------------------------------//	Parameters//-------------------------------------------------//	I/O(for Sample)	DIO_MAX_ACCS_PORTS			=	256,//	DioNotifyInt:Logic	DIO_INT_NONE				=	0,	DIO_INT_RISE				=	1,	DIO_INT_FALL				=	2,//	DioNotifyTrg:TrgKind	DIO_TRG_RISE				=	1,	DIO_TRG_FALL				=	2,//	Message	DIOM_INTERRUPT				=	0x1300,	DIOM_TRIGGER				=	0x1340,	DIO_DMM_STOP				=	0x1350,	DIO_DMM_COUNT				=	0x1360,//	Device Information	IDIO_DEVICE_TYPE			=	0,	//	device type.							Param1:short	IDIO_NUMBER_OF_8255			=	1,	//	Number of 8255 chip.					Param1:int	IDIO_IS_8255_BOARD			=	2,	//	Is 8255	board?							Param1:BOOL(True/False)	IDIO_NUMBER_OF_DI_BIT		=	3,	//	Number of digital input bit.			Param1:int	IDIO_NUMBER_OF_DO_BIT		=	4,	//	Number of digital outout bit.			Param1:int	IDIO_NUMBER_OF_DI_PORT		=	5,	//	Number of digital input	port.			Param1:int	IDIO_NUMBER_OF_DO_PORT		=	6,	//	Number of digital output port.			Param1:int	IDIO_IS_POSITIVE_LOGIC		=	7,	//	Is positive logic?						Param1:BOOL(True/False)	IDIO_IS_ECHO_BACK			=	8,	//	Can echo back output port?				Param1:BOOL(True/False)	IDIO_IS_DIRECTION			=	9,	//	Can DioSetIoDirection function be used?	Param1:int(1:true, 0:false)	IDIO_IS_FILTER				=	10,	//	Can digital filter be used?				Param1:int(1:true, 0:false)	IDIO_NUMBER_OF_INT_BIT		=	11,	//	Number of interrupt bit.				Param1:short//	DM//	Direction	PI_32						=	1,	PO_32						=	2,	PIO_1616					=	3,	DIODM_DIR_IN				=	0x1,	DIODM_DIR_OUT				=	0x2,//  Start	DIODM_START_SOFT			=	1,	DIODM_START_EXT_RISE		=	2,	DIODM_START_EXT_FALL		=	3,	DIODM_START_PATTERN			=	4,	DIODM_START_EXTSIG_1		=	5,	DIODM_START_EXTSIG_2		=	6,	DIODM_START_EXTSIG_3		=	7,//  Clock	DIODM_CLK_CLOCK				=	1,	DIODM_CLK_EXT_TRG			=	2,	DIODM_CLK_HANDSHAKE			=	3,	DIODM_CLK_EXTSIG_1			=	4,	DIODM_CLK_EXTSIG_2			=	5,	DIODM_CLK_EXTSIG_3			=	6,//  Internal Clock	DIODM_TIM_UNIT_S			=	1,	DIODM_TIM_UNIT_MS			=	2,	DIODM_TIM_UNIT_US			=	3,	DIODM_TIM_UNIT_NS			=	4,//  Stop	DIODM_STOP_SOFT				=	1,	DIODM_STOP_EXT_RISE			=	2,	DIODM_STOP_EXT_FALL			=	3,	DIODM_STOP_NUM				=	4,	DIODM_STOP_EXTSIG_1			=	5,	DIODM_STOP_EXTSIG_2			=	6,	DIODM_STOP_EXTSIG_3			=	7,//	ExtSig	DIODM_EXT_START_SOFT_IN		=	1,	DIODM_EXT_STOP_SOFT_IN		=	2,	DIODM_EXT_CLOCK_IN			=	3,	DIODM_EXT_EXT_TRG_IN		=	4,	DIODM_EXT_START_EXT_RISE_IN	=	5,	DIODM_EXT_START_EXT_FALL_IN	=	6,	DIODM_EXT_START_PATTERN_IN	=	7,	DIODM_EXT_STOP_EXT_RISE_IN	=	8,	DIODM_EXT_STOP_EXT_FALL_IN	=	9,	DIODM_EXT_CLOCK_ERROR_IN	=	10,	DIODM_EXT_HANDSHAKE_IN		=	11,	DIODM_EXT_TRNSNUM_IN		=	12,	DIODM_EXT_START_SOFT_OUT	=	101,	DIODM_EXT_STOP_SOFT_OUT		=	102,	DIODM_EXT_CLOCK_OUT			=	103,	DIODM_EXT_EXT_TRG_OUT		=	104,	DIODM_EXT_START_EXT_RISE_OUT=	105,	DIODM_EXT_START_EXT_FALL_OUT=	106,	DIODM_EXT_STOP_EXT_RISE_OUT	=	107,	DIODM_EXT_STOP_EXT_FALL_OUT	=	108,	DIODM_EXT_CLOCK_ERROR_OUT	=	109,	DIODM_EXT_HANDSHAKE_OUT		=	110,	DIODM_EXT_TRNSNUM_OUT		=	111,//	Status	DIODM_STATUS_BMSTOP			=	0x1,	DIODM_STATUS_PIOSTART		=	0x2,	DIODM_STATUS_PIOSTOP		=	0x4,	DIODM_STATUS_TRGIN			=	0x8,	DIODM_STATUS_OVERRUN		=	0x10,//	Error	DIODM_STATUS_FIFOEMPTY		=	0x1,	DIODM_STATUS_FIFOFULL		=	0x2,	DIODM_STATUS_SGOVERIN		=	0x4,	DIODM_STATUS_TRGERR			=	0x8,	DIODM_STATUS_CLKERR			=	0x10,	DIODM_STATUS_SLAVEHALT		=	0x20,	DIODM_STATUS_MASTERHALT		=	0x40,//	Reset	DIODM_RESET_FIFO_IN			=	0x02,	DIODM_RESET_FIFO_OUT		=	0x04,//	Buffer Ring	DIODM_WRITE_ONCE			=	0,	DIODM_WRITE_RING			=	1,//-------------------------------------------------//	Error	codes//-------------------------------------------------//	Initialize	Error//	Common	DIO_ERR_SUCCESS				=	0,		//	normal completed	DIO_ERR_INI_RESOURCE		=	1,		//	invalid resource reference specified	DIO_ERR_INI_INTERRUPT		=	2,		//	invalid interrupt routine registered	DIO_ERR_INI_MEMORY			=	3,		//	invalid memory allocationed	DIO_ERR_INI_REGISTRY		=	4,		//	invalid registry accesse	DIO_ERR_SYS_RECOVERED_FROM_STANDBY	=	7,		//	Execute DioResetDevice function because the device has recovered from standby mode.	DIO_ERR_INI_NOT_FOUND_SYS_FILE		=	8,		//	Because the Cdio.sys file is not found, it is not possible to initialize it.	DIO_ERR_INI_DLL_FILE_VERSION		=	9,		//	Because version information on the Cdio.dll file cannot be acquired, it is not possible to initialize it.	DIO_ERR_INI_SYS_FILE_VERSION		=	10,		//	Because version information on the Cdio.sys file cannot be acquired, it is not possible to initialize it.	DIO_ERR_INI_NO_MATCH_DRV_VERSION	=	11,		//	Because version information on Cdio.dll and Cdio.sys is different, it is not possible to initialize it.//	DLL	Error//	Common	DIO_ERR_DLL_DEVICE_NAME				=	10000,	//	invalid device name specified.	DIO_ERR_DLL_INVALID_ID				=	10001,	//	invalid ID specified.	DIO_ERR_DLL_CALL_DRIVER				=	10002,	//	not call the driver.(Invalid device I/O controller)	DIO_ERR_DLL_CREATE_FILE				=	10003,	//	not create the file.(Invalid CreateFile)	DIO_ERR_DLL_CLOSE_FILE				=	10004,	//	not close the file.(Invalid CloseFile)	DIO_ERR_DLL_CREATE_THREAD			=	10005,	//	not create the thread.(Invalid CreateThread)	DIO_ERR_INFO_INVALID_DEVICE			=	10050,	//	invalid device information specified .Please check the spell.	DIO_ERR_INFO_NOT_FIND_DEVICE		=	10051,	//	not find the available device	DIO_ERR_INFO_INVALID_INFOTYPE		=	10052,	//	specified device information type beyond the limit//	DIO	DIO_ERR_DLL_BUFF_ADDRESS			=	10100,	//	invalid data buffer address	DIO_ERR_DLL_HWND					=	10200,	//	window handle beyond the limit	DIO_ERR_DLL_TRG_KIND				=	10300,	//	trigger kind beyond the limit//	SYS	Error//	Common	DIO_ERR_SYS_MEMORY					=	20000,	//	not secure memory	DIO_ERR_SYS_NOT_SUPPORTED			=	20001,	//	this board couldn't use this function	DIO_ERR_SYS_BOARD_EXECUTING			=	20002,	//	board is behaving, not execute	DIO_ERR_SYS_USING_OTHER_PROCESS		=	20003,	//	other process is using the device, not execute	STATUS_SYS_USB_CRC					=	20020,	//	the last data packet received from end point exist CRC error	STATUS_SYS_USB_BTSTUFF				=	20021,	//	the last data packet received from end point exist bit stuffing offense error	STATUS_SYS_USB_DATA_TOGGLE_MISMATCH	=	20022,	//	the last data packet received from end point exist toggle packet mismatch error	STATUS_SYS_USB_STALL_PID			=	20023,	//	end point return STALL packet identifier	STATUS_SYS_USB_DEV_NOT_RESPONDING	=	20024,	//	device don't respond to token(IN), don't support handshake	STATUS_SYS_USB_PID_CHECK_FAILURE	=	20025,		STATUS_SYS_USB_UNEXPECTED_PID		=	20026,	//	invalid packet identifier received	STATUS_SYS_USB_DATA_OVERRUN			=	20027,	//	end point return data quantity overrun	STATUS_SYS_USB_DATA_UNDERRUN		=	20028,	//	end point return data quantity underrun	STATUS_SYS_USB_BUFFER_OVERRUN		=	20029,	//	IN transmit specified buffer overrun	STATUS_SYS_USB_BUFFER_UNDERRUN		=	20030,	//	OUT transmit specified buffer underrun	STATUS_SYS_USB_ENDPOINT_HALTED		=	20031,	//	end point status is STALL, not transmit	STATUS_SYS_USB_NOT_FOUND_DEVINFO	=	20032,	//	not found device information	STATUS_SYS_USB_ACCESS_DENIED		=	20033,	//	Access denied	STATUS_SYS_USB_INVALID_HANDLE		=	20034,	//	Invalid handle//	DIO	DIO_ERR_SYS_PORT_NO					=	20100,	//	board No. beyond the limit	DIO_ERR_SYS_PORT_NUM				=	20101,	//	board number beyond the limit	DIO_ERR_SYS_BIT_NO					=	20102,	//	bit No. beyond the limit	DIO_ERR_SYS_BIT_NUM					=	20103,	//	bit number beyond the limit	DIO_ERR_SYS_BIT_DATA				=	20104,	//	bit data beyond the limit of 0 to 1	DIO_ERR_SYS_INT_BIT					=	20200,	//	interrupt bit beyond the limit	DIO_ERR_SYS_INT_LOGIC				=	20201,	//	interrupt logic beyond the limit	DIO_ERR_SYS_TIM						=	20300,	//	timer value beyond the limit	DIO_ERR_SYS_FILTER					=	20400,	//	filter number beyond the limit	DIO_ERR_SYS_IODIRECTION				=	20500,	//	Direction value is out of range//  DM	DIO_ERR_SYS_SIGNAL					=	21000,	//	Usable signal is outside the setting range.	DIO_ERR_SYS_START					=	21001,	//	Usable start conditions are outside the setting range.	DIO_ERR_SYS_CLOCK					=	21002,	//	Clock conditions are outside the setting range.	DIO_ERR_SYS_CLOCK_VAL				=	21003,	//	Clock value is outside the setting range.	DIO_ERR_SYS_CLOCK_UNIT				=	21004,	//	Clock value unit is outside the setting range.	DIO_ERR_SYS_STOP					=	21005,	//	Stop conditions are outside the setting range.	DIO_ERR_SYS_STOP_NUM				=	21006,	//	Stop number is outside the setting range.	DIO_ERR_SYS_RESET					=	21007,	//	Contents of reset are outside the setting range.	DIO_ERR_SYS_LEN						=	21008,	//	Data number is outside the setting range.	DIO_ERR_SYS_RING					=	21009,	//	Buffer repetition use setup is outside the setting range.	DIO_ERR_SYS_COUNT					=	21010,	//	Data transmission number is outside the setting range.	DIO_ERR_DM_BUFFER					=	21100,	//	Buffer was too large and has not secured.	DIO_ERR_DM_LOCK_MEMORY				=	21101,	//	Memory has not been locked.	DIO_ERR_DM_PARAM					=	21102,	//	Parameter error	DIO_ERR_DM_SEQUENCE					=	21103	//	Procedure error of execution}namespace CdioCs{	unsafe public delegate void PINTCALLBACK(short Id, int wParam, int lParam, void *Param);		unsafe public delegate void PTRGCALLBACK(short Id, int wParam, int lParam, void *Param);		unsafe public delegate void PDMCOUNTCALLBACK(short Id, int wParam, int lParam, void *Param);		unsafe public delegate void PDMSTOPCALLBACK(short Id, int wParam, int lParam, void *Param);	public class Cdio	{		// Definition of common functions		[DllImport("cdio.dll")] static extern int DioInit(string DeviceName, ref short Id);		[DllImport("cdio.dll")] static extern int DioExit(short Id);		[DllImport("cdio.dll")] static extern int DioResetDevice(short Id);		[DllImport("cdio.dll")] static extern int DioGetErrorString(int ErrorCode, System.Text.StringBuilder ErrorString);		// Digital filter functions		[DllImport("cdio.dll")] static extern int DioSetDigitalFilter(short Id, short FilterValue);		[DllImport("cdio.dll")] static extern int DioGetDigitalFilter(short Id, ref short FilterValue);				// I/O Direction functions		[DllImport("cdio.dll")] static extern int DioSetIoDirection(short Id, uint dwDir);		[DllImport("cdio.dll")] static extern int DioGetIoDirection(short Id, ref uint dwDir);		[DllImport("cdio.dll")] static extern int DioSetIoDirectionEx(short Id, uint dwDir);		[DllImport("cdio.dll")] static extern int DioGetIoDirectionEx(short Id, ref uint dwDir);		[DllImport("cdio.dll")] static extern int DioSet8255Mode(short Id, short ChipNo, short CtrlWord);		[DllImport("cdio.dll")] static extern int DioGet8255Mode(short Id, short ChipNo, ref short CtrlWord);				// Simple I/O functions		[DllImport("cdio.dll")] static extern int DioInpByte(short Id, short PortNo, ref byte Data);		[DllImport("cdio.dll")] static extern int DioInpBit(short Id, short BitNo, ref byte Data);		[DllImport("cdio.dll")] static extern int DioOutByte(short Id, short PortNo, byte Data);		[DllImport("cdio.dll")] static extern int DioOutBit(short Id, short BitNo, byte Data);		[DllImport("cdio.dll")] static extern int DioEchoBackByte(short Id, short PortNo, ref byte Data);		[DllImport("cdio.dll")] static extern int DioEchoBackBit(short Id, short BitNo, ref byte Data);				// Multiple I/O functions		[DllImport("cdio.dll")] static extern int DioInpMultiByte(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] PortNo, short PortNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);		[DllImport("cdio.dll")] static extern int DioInpMultiBit(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] BitNo, short BitNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);		[DllImport("cdio.dll")] static extern int DioOutMultiByte(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] PortNo, short PortNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);		[DllImport("cdio.dll")] static extern int DioOutMultiBit(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] BitNo, short BitNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);		[DllImport("cdio.dll")] static extern int DioEchoBackMultiByte(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] PortNo, short PortNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);		[DllImport("cdio.dll")] static extern int DioEchoBackMultiBit(short Id, [MarshalAs(UnmanagedType.LPArray)] short[] BitNo, short BitNum, [MarshalAs(UnmanagedType.LPArray)] byte[] Data);				// Interrupt functions		[DllImport("cdio.dll")] static extern int DioNotifyInterrupt(short Id, short IntBit, short Logic, int hWnd);		[DllImport("cdio.dll")] unsafe static extern int DioSetInterruptCallBackProc(short Id, PINTCALLBACK pIntCallBack, void *Param);				// Trigger functions		[DllImport("cdio.dll")] static extern int DioNotifyTrg(short Id, short TrgBit, short TrgKind, int Tim, int hWnd);		[DllImport("cdio.dll")] static extern int DioStopNotifyTrg(short Id, short TrgBit);		[DllImport("cdio.dll")] static extern int DioSetTrgCallBackProc(short Id, PTRGCALLBACK CallBackProc, ref int Param);				// Information functions		[DllImport("cdio.dll")] static extern int DioGetDeviceInfo(string Device, short InfoType, ref int Param1, ref int Param2, ref int Param3);		[DllImport("cdio.dll")] static extern int DioQueryDeviceName(short Index, System.Text.StringBuilder DeviceName, System.Text.StringBuilder Device);		[DllImport("cdio.dll")] static extern int DioGetDeviceType(string Device, ref short DeviceType);		[DllImport("cdio.dll")] static extern int DioGetMaxPorts(short Id, ref short InPortNum, ref short OutPortNum);		//dm functions		[DllImport("cdio.DLL")] static extern int DioDmSetDirection(short Id, short Direction);		[DllImport("cdio.DLL")] static extern int DioDmGetDirection(short Id, ref short Direction);		[DllImport("cdio.DLL")] static extern int DioDmSetStandAlone(short Id);		[DllImport("cdio.DLL")] static extern int DioDmSetMaster(short Id, short ExtSig1, short ExtSig2, short ExtSig3, short MasterHalt, short SlaveHalt);		[DllImport("cdio.DLL")] static extern int DioDmSetSlave(short Id, short ExtSig1, short ExtSig2, short ExtSig3, short MasterHalt, short SlaveHalt);		[DllImport("cdio.DLL")] static extern int DioDmSetStartTrigger(short Id, short Direction, short Start);		[DllImport("cdio.DLL")] static extern int DioDmSetStartPattern(short Id, uint Pattern, uint Mask);		[DllImport("cdio.DLL")] static extern int DioDmSetClockTrigger(short Id, short Direction, short Clock);		[DllImport("cdio.DLL")] static extern int DioDmSetInternalClock(short Id, short Direction, uint Clock, short Unit);		[DllImport("cdio.DLL")] static extern int DioDmSetStopTrigger(short Id, short Direction, short Stop);		[DllImport("cdio.DLL")] static extern int DioDmSetStopNumber(short Id, short Direction, uint StopNumber);		[DllImport("cdio.DLL")] static extern int DioDmFifoReset(short Id, short Reset);		[DllImport("cdio.DLL")] static extern int DioDmSetBuffer(short Id, short Direction, IntPtr Buffer, uint Length, short IsRing);		[DllImport("cdio.DLL")] static extern int DioDmSetTransferStartWait(short Id, short Time);		[DllImport("cdio.DLL")] static extern int DioDmTransferStart(short Id, short Direction);		[DllImport("cdio.DLL")] static extern int DioDmTransferStop(short Id, short Direction);		[DllImport("cdio.DLL")] static extern int DioDmGetStatus(short Id, short Direction, ref uint Status, ref uint Err);		[DllImport("cdio.DLL")] static extern int DioDmGetCount(short Id, short Direction, ref uint Count, ref uint Carry);		[DllImport("cdio.DLL")] static extern int DioDmGetWritePointer(short Id, short Direction, ref uint WritePointer, ref uint Count, ref uint Carry);		[DllImport("cdio.DLL")] static extern int DioDmSetStopEvent(short Id, short Direction, int hWnd);		[DllImport("cdio.DLL")] unsafe static extern int DioDmSetStopCallBackProc(short Id, PDMSTOPCALLBACK CallBackProc, void *Param);		[DllImport("cdio.DLL")] static extern int DioDmSetCountEvent(short Id, short Direction, uint Count, int hWnd);		[DllImport("cdio.DLL")] unsafe static extern int DioDmSetCountCallBackProc(short Id, PDMCOUNTCALLBACK CallBackProc, void *Param);		// Demo Device I/O functions		[DllImport("cdio.dll")] static extern int DioSetDemoByte(short Id, short PortNo, byte Data);		[DllImport("cdio.dll")] static extern int DioSetDemoBit(short Id, short BitNo, byte Data);		// Constructor		public Cdio()		{		}		// Description of common functions		public int Init(string DeviceName, out short Id)		{			Id = 0;			int ret	= DioInit(DeviceName, ref Id);			return	ret;		}		public int Exit(short Id)		{			int ret = DioExit(Id);			return ret;		}		public int ResetDevice(short Id)		{			int ret = DioResetDevice(Id);			return ret;		}		public int GetErrorString(int ErrorCode, out string ErrorString)		{			ErrorString = new String('0', 1);			System.Text.StringBuilder errorstring = new System.Text.StringBuilder(256);			int ret = DioGetErrorString(ErrorCode, errorstring);			if(ret == 0)			{				ErrorString = errorstring.ToString();			}			return ret;		}		// Digital filter functions		public int SetDigitalFilter(short Id, short FilterValue)		{			int ret = DioSetDigitalFilter(Id, FilterValue);			return ret;		}		public int GetDigitalFilter(short Id, out short FilterValue)		{			FilterValue = 0;			int ret = DioGetDigitalFilter(Id, ref FilterValue);			return ret;		}		// I/O Direction functions		public int SetIoDirection(short Id, uint dwDir)		{			int ret = DioSetIoDirection(Id, dwDir);			return ret;		}		public int GetIoDirection(short Id, out uint dwDir)		{			dwDir = 0;			int ret = DioGetIoDirection(Id, ref dwDir);			return ret;		}		public int Set8255Mode(short Id, short ChipNo, short CtrlWord)		{			int ret = DioSet8255Mode(Id, ChipNo, CtrlWord);			return ret;		}		public int Get8255Mode(short Id, short ChipNo, out short CtrlWord)		{			CtrlWord = 0;			int ret = DioGet8255Mode(Id, ChipNo, ref CtrlWord);			return ret;		}		public int SetIoDirectionEx(short Id, uint dwDir)		{			int ret = DioSetIoDirectionEx(Id, dwDir);			return ret;		}		public int GetIoDirectionEx(short Id, out uint dwDir)		{			dwDir = 0;			int ret = DioGetIoDirectionEx(Id, ref dwDir);			return ret;		}		// Simple I/O functions		public int InpByte(short Id, short PortNo, out byte Data)		{			Data = 0;			int ret = DioInpByte(Id, PortNo, ref Data);			return ret;		}		public int InpBit(short Id, short BitNo, out byte Data)		{			Data = 0;			int ret = DioInpBit(Id, BitNo, ref Data);			return ret;		}		public int OutByte(short Id, short PortNo, byte Data)		{			int ret = DioOutByte(Id, PortNo, Data);			return ret;		}		public int OutBit(short Id, short BitNo, byte Data)		{			int ret = DioOutBit(Id, BitNo, Data);			return ret;		}		public int EchoBackByte(short Id, short PortNo, out byte Data)		{			Data = 0;			int ret = DioEchoBackByte(Id, PortNo, ref Data);			return ret;		}		public int EchoBackBit(short Id, short BitNo, out byte Data)		{			Data = 0;			int ret = DioEchoBackBit(Id, BitNo, ref Data);			return ret;		}		// Multiple I/O functions		public int InpMultiByte(short Id, short[] PortNo, short PortNum, byte[] Data)		{			int ret = DioInpMultiByte(Id, PortNo, PortNum, Data);			return ret;		}		public int InpMultiBit(short Id, short[] BitNo, short BitNum, byte[] Data)		{			int ret = DioInpMultiBit(Id, BitNo, BitNum, Data);			return ret;		}		public int OutMultiByte(short Id, short[] PortNo, short PortNum, byte[] Data)		{			int ret = DioOutMultiByte(Id, PortNo, PortNum, Data);			return ret;		}		public int OutMultiBit(short Id, short[] BitNo, short BitNum, byte[] Data)		{			int ret = DioOutMultiBit(Id, BitNo, BitNum, Data);			return ret;		}		public int EchoBackMultiByte(short Id, short[] PortNo, short PortNum, byte[] Data)		{			int ret = DioEchoBackMultiByte(Id, PortNo, PortNum, Data);			return ret;		}		public int EchoBackMultiBit(short Id, short[] BitNo, short BitNum, byte[] Data)		{			int ret = DioEchoBackMultiBit(Id, BitNo, BitNum, Data);			return ret;		}		// Interrupt functions		public int NotifyInterrupt(short Id, short IntBit, short Logic, int hWnd)		{			int ret = DioNotifyInterrupt(Id, IntBit, Logic, hWnd);			return ret;		}		unsafe public int SetInterruptCallBackProc(short Id, PINTCALLBACK pIntCallBack, void *Param)		{			int ret = DioSetInterruptCallBackProc(Id, pIntCallBack, Param);			return ret;		}		// Trigger functions		public int NotifyTrg(short Id, short TrgBit, short TrgKind, int Tim, int hWnd)		{			int ret = DioNotifyTrg(Id, TrgBit, TrgKind, Tim, hWnd);			return ret;		}		public int StopNotifyTrg(short Id, short TrgBit)		{			int ret = DioStopNotifyTrg(Id, TrgBit);			return ret;		}		public int SetTrgCallBackProc(short Id, PTRGCALLBACK CallBackProc, out int Param)		{			Param = 0;			int ret = DioSetTrgCallBackProc(Id, CallBackProc, ref Param);			return ret;		}		// Information functions		public int GetDeviceInfo(string Device, short InfoType, out int Param1, out int Param2, out int Param3)		{			Param1 = 0;			Param2 = 0;			Param3 = 0;			int ret = DioGetDeviceInfo(Device, InfoType, ref Param1, ref Param2, ref Param3);			return ret;		}		public int QueryDeviceName(short Index, out string DeviceName, out string Device)		{			DeviceName = new String('0', 1);			Device = new String('0', 1);			System.Text.StringBuilder devicename = new System.Text.StringBuilder(256);			System.Text.StringBuilder device = new System.Text.StringBuilder(256);			int ret = DioQueryDeviceName(Index, devicename, device);			if(ret == 0)			{				DeviceName = devicename.ToString();				Device = device.ToString();			}			return ret;		}		public int GetDeviceType(string Device, out short DeviceType)		{			DeviceType = 0;			int ret = DioGetDeviceType(Device, ref DeviceType);			return ret;		}		public int GetMaxPorts(short Id, out short InPortNum, out short OutPortNum)		{			InPortNum = 0;			OutPortNum = 0;			int ret = DioGetMaxPorts(Id, ref InPortNum, ref OutPortNum);			return ret;		}				public int DmSetDirection(short Id, short Direction)		{			int ret = DioDmSetDirection(Id, Direction);			return ret;		}		public int DmGetDirection(short Id, out short Direction)		{			Direction = 0;			int ret = DioDmGetDirection(Id, ref Direction);			return ret;		}		public int DmSetStandAlone(short Id)		{			int ret = DioDmSetStandAlone(Id);			return ret;		}		public int DmSetMaster(short Id, short ExtSig1, short ExtSig2, short ExtSig3, short MasterHalt, short SlaveHalt)		{			int ret = DioDmSetMaster(Id, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt);			return ret;		}		public int DmSetSlave(short Id, short ExtSig1, short ExtSig2, short ExtSig3, short MasterHalt, short SlaveHalt)		{			int ret = DioDmSetSlave(Id, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt);			return ret;		}		public int DmSetStartTrigger(short Id, short Direction, short Start)		{			int ret = DioDmSetStartTrigger(Id, Direction, Start);			return ret;		}		public int DmSetStartPattern(short Id, uint Pattern, uint Mask)		{			int ret = DioDmSetStartPattern(Id, Pattern, Mask);			return ret;		}		public int DmSetClockTrigger(short Id, short Direction, short Clock)		{			int ret = DioDmSetClockTrigger(Id, Direction, Clock);			return ret;		}		public int DmSetInternalClock(short Id, short Direction, uint Clock, short Unit)		{			int ret = DioDmSetInternalClock(Id, Direction, Clock, Unit);			return ret;		}		public int DmSetStopTrigger(short Id, short Direction, short Stop)		{			int ret = DioDmSetStopTrigger(Id, Direction, Stop);			return ret;		}		public int DmSetStopNumber(short Id, short Direction, uint StopNumber)		{			int ret = DioDmSetStopNumber(Id, Direction, StopNumber);			return ret;		}		public int DmFifoReset(short Id, short Reset)		{			int ret = DioDmFifoReset(Id, Reset);			return ret;		}		public int DmSetBuffer(short Id, short Direction, IntPtr Buffer, uint Length, short IsRing)		{			int ret = DioDmSetBuffer(Id, Direction, Buffer, Length, IsRing);			return ret;		}		public int DmSetTransferStartWait(short Id, short Time)		{			int ret = DioDmSetTransferStartWait(Id, Time);			return ret;		}		public int DmTransferStart(short Id, short Direction)		{			int ret = DioDmTransferStart(Id, Direction);			return ret;		}		public int DmTransferStop(short Id, short Direction)		{			int ret = DioDmTransferStop(Id, Direction);			return ret;		}		public int DmGetStatus(short Id, short Direction, out uint Status, out uint Err)		{			Status = 0;			Err = 0;			int ret = DioDmGetStatus(Id, Direction, ref Status, ref Err);			return ret;		}		public int DmGetCount(short Id, short Direction, out uint Count, out uint Carry)		{			Count = 0;			Carry = 0;			int ret = DioDmGetCount(Id, Direction, ref Count, ref Carry);			return ret;		}		public int DmGetWritePointer(short Id, short Direction, out uint WritePointer, out uint Count, out uint Carry)		{			WritePointer = 0;			Count = 0;			Carry = 0;			int ret = DioDmGetWritePointer(Id, Direction, ref WritePointer, ref Count, ref Carry);			return ret;		}		public int DmSetStopEvent(short Id, short Direction, int hWnd)		{			int ret = DioDmSetStopEvent(Id, Direction, hWnd);			return ret;		}		unsafe public int DmSetStopCallBackProc(short Id, PDMSTOPCALLBACK CallBackProc,  void *Param)		{			int ret = DioDmSetStopCallBackProc(Id, CallBackProc, Param);			return ret;		}		public int DmSetCountEvent(short Id, short Direction, uint Count, int hWnd)		{			int ret = DioDmSetCountEvent(Id, Direction, Count, hWnd);			return ret;		}		unsafe public int DmSetCountCallBackProc(short Id, PDMCOUNTCALLBACK CallBackProc,  void *Param)		{			int ret = DioDmSetCountCallBackProc(Id, CallBackProc, Param);			return ret;		}		public int SetDemoByte(short Id, short PortNo, byte Data)		{			int ret = DioSetDemoByte(Id, PortNo, Data);			return ret;		}		public int SetDemoBit(short Id, short BitNo, byte Data)		{			int ret = DioSetDemoBit(Id, BitNo, Data);			return ret;		}	}}
 |