#include "windows.h" #include #include static int (__stdcall *getch)(void); static int (__stdcall *kbhit)(void); int main(int argc, char* argv[]) { BYTE bDISts[16]; BYTE bDOSts[16]; int iChannel; char Key; HANDLE hDevice; int DeviceLgcID = 0; HINSTANCE hInst = LoadLibrary("MSVCRT.DLL"); getch = GetProcAddress(hInst, "_getch"); kbhit = GetProcAddress(hInst, "_kbhit"); hDevice = PCI2312_CreateDevice(DeviceLgcID); if(hDevice == INVALID_HANDLE_VALUE) { printf("Create Device Error...\n"); getch(); return 0; } // 强烈建议对于所有硬件参数结构都必须初始化成确定值 memset(bDOSts, 0x00, sizeof(bDOSts)); for(iChannel=0; iChannel<16; iChannel++) { if(iChannel%2 == 0) bDOSts[iChannel] = 0; // 偶数通道赋为低电平"0" else bDOSts[iChannel] = 1; // 奇数通道赋为高电平"1" } Repeat: for(iChannel=0; iChannel<16; iChannel++) { printf("bDOSts[%d] = %d\n", iChannel, bDOSts[iChannel]); } printf("Press any key to set DO\n\n"); getch(); if(!PCI2312_SetDeviceDO(hDevice, bDOSts)) // 开关量输出 { printf("SetDeviceDO Error...\n"); getch(); goto Exit; } printf("\n"); printf("Press any key to get DI\n\n"); getch(); if(!PCI2312_GetDeviceDI(hDevice, bDISts)) // 开关量输入 { printf("PCI2312_GetDeviceDI...\n"); getch(); goto Exit; } for(iChannel=0; iChannel<16; iChannel++) { printf("bDISts[%d] = %d\n", iChannel, bDISts[iChannel]); } printf("\n"); printf("Press ESC to quit\n"); Key = getch(); if(Key != 27) goto Repeat; Exit: PCI2312_ReleaseDevice(hDevice); return 0; }