| 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;
 
- 		}
 
- 	}
 
- }
 
 
  |