/* Implementation of pyk8055lib */ static int __pyx_f_10pyk8055lib_13K8055LibClass___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ static int __pyx_f_10pyk8055lib_13K8055LibClass___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_devname = 0; PyObject *__pyx_v_iRet; int __pyx_r; char *__pyx_1; PyObject *__pyx_2 = 0; static char *__pyx_argnames[] = {"devname",0}; if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_devname)) return -1; Py_INCREF(__pyx_v_self); Py_INCREF(__pyx_v_devname); __pyx_v_iRet = Py_None; Py_INCREF(Py_None); /* "G:/Projekte/svn_mynew/svnroot/os2/usb/k8055/pyk8055/pyk8055lib.pyx":29 */ if (__Pyx_PrintItem(__pyx_n_cinit) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;} if (__Pyx_PrintNewline() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; goto __pyx_L1;} /* "G:/Projekte/svn_mynew/svnroot/os2/usb/k8055/pyk8055/pyk8055lib.pyx":30 */ __pyx_1 = PyString_AsString(__pyx_v_devname); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; goto __pyx_L1;} ((struct __pyx_obj_10pyk8055lib_K8055LibClass *)__pyx_v_self)->pcDevName = __pyx_1; /* "G:/Projekte/svn_mynew/svnroot/os2/usb/k8055/pyk8055/pyk8055lib.pyx":31 */ __pyx_2 = PyLong_FromUnsignedLong(K8055_Open(((struct __pyx_obj_10pyk8055lib_K8055LibClass *)__pyx_v_self)->pcDevName,(&((struct __pyx_obj_10pyk8055lib_K8055LibClass *)__pyx_v_self)->ulDevHandle))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; goto __pyx_L1;} Py_DECREF(__pyx_v_iRet); __pyx_v_iRet = __pyx_2; __pyx_2 = 0; /* "G:/Projekte/svn_mynew/svnroot/os2/usb/k8055/pyk8055/pyk8055lib.pyx":32 */ K8055_Init((&((struct __pyx_obj_10pyk8055lib_K8055LibClass *)__pyx_v_self)->ulDevHandle)); /* "G:/Projekte/svn_mynew/svnroot/os2/usb/k8055/pyk8055/pyk8055lib.pyx":33 */ __pyx_r = 0; goto __pyx_L0; __pyx_r = 0; goto __pyx_L0; __pyx_L1:; Py_XDECREF(__pyx_2); __Pyx_AddTraceback("pyk8055lib.K8055LibClass.__cinit__"); __pyx_r = -1; __pyx_L0:; Py_DECREF(__pyx_v_iRet); Py_DECREF(__pyx_v_self); Py_DECREF(__pyx_v_devname); return __pyx_r; }
void main( INT argc, CHAR* *argv ) { // -- Option derived variables ---- INT iOptChar; // ASCII value of a // Command Line Option Character BOOL blTestsExplained; BOOL blTestScreens; BOOL blDisclaimerLock; // -- Variables concerning the USB Device Driver ---- ULONG hDevice; ULONG *phDevice; CHAR pszName[9] = "$"; // Refers to USBECD.SYS /N:$ // -- K8055 input variables ---- ULONG ulInpIxValue; ULONG ulInpA1value, ulInpA2value; ULONG ulDecodedInpIxValue; ULONG ulCounterValue; ULONG ulCounterIndex; // -- K8055 output variables ---- ULONG ulDigitalOutValue; ULONG ulDAC1value; ULONG ulDAC2value; ULONG ulDACidx; // -- Variables for user interaction ---- BOOL blDoTheMainMenuAgain; CHAR szCmdKeys[33]; ULONG ulKeyCode; ULONG ulKeyIdx; // -- Variables used in the Read-Test ---- INT iTableIdx; INT iBlckCycl; ULONG ulDisplayedValuesCount; // -- Variables used in the Read-Test ---- INT iByteCycl; // -- Variables for specific purposes ---- // ULONG ulrc; // Return Code for functions // -- Initialising Variables ---------- BEGIN ==== blTestsExplained = FALSE; blTestScreens = TRUE; blDisclaimerLock = FALSE; blDoTheMainMenuAgain = TRUE; // -- Initialising Variables ------------ END ==== // -- Processing Command Line Options ------------- BEGIN --/ // while( ( iOptChar = getopt( argc, argv, "dihn:p?" ) ) != -1 ) { switch( iOptChar ) { case 'd': blDisclaimerLock = TRUE; break; case 'i': // -- Basic information on 'K8055DD.dll'. // blTestScreens = FALSE; printf("\n"); ulrc = PrintingInfo(); printf("\n"); break; case 'h': // -- Printing list of options. // blTestScreens = FALSE; ulrc = PrintingCommandLineOptions(); break; case 'n': // -- Passing the Device Name to the application. // strcpy( pszName, optarg ); // -- Testaid ----- // printf( "Device Name Option: '%s' ", pszName ); blTestScreens = TRUE; break; case 'p': // -- Explaining every test in form of an intro. // blTestsExplained = TRUE; break; case '?': blTestScreens = FALSE; ulrc = PrintingCommandLineOptions(); break; } } // -- Resolving Option Inconsistancy ------------ // -- Testaid ----- printf( "\n Number of Cmd Line Options: '%#02d' ", argc ); if ( argc == 1 ) { blTestScreens = FALSE; ulrc = PrintingCommandLineOptions(); } // -- 'exit(0)' Testaid for argument scanning --- //exit(0); // -- Processing Command Line Options --------------- END --/ // -- Main Menu Key Section ----------------------- BEGIN --| if ( blTestScreens == TRUE ) { // -- Main Menu Key Loop --------------------------- BL -)) do { ulrc = PrintingHeadLine(); if ( blDisclaimerLock == FALSE ) { ulrc = PrintingDisclaimer(); ulrc = PrintingDisclaimerHint(); ulrc = PrintingGoodByePhrase(); exit(0); } // -- The Main Menu ----------------------------------- // printf(" Main menu \n\n"); printf("\n Reading from K8055....................."); printf("............. r "); printf("\n Writing to K8055......................."); printf("............. w "); printf("\n "); printf("\n Info on the Device Specific Library "); printf("K8055DD.dll .... i "); printf("\n Disclaimer............................."); printf("............. d "); printf("\n Quit..................................."); printf("............. q "); printf("\n\n"); printf("\n Press one of the listed keys !"); printf("\n"); strcpy( szCmdKeys, "iIdDqQrRwW" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); // -- Testaid --- // to check all return conditions of // 'PollingForMenuKeyByCharArray()' // //printf( "%hu , ", ulrc ); //printf( "%hu , ", ulKeyCode ); //printf( "%hu", ulKeyIdx ); //exit(0); // -- Main Menu Function Selector --------- BEGIN ------& // switch( ulKeyCode ) { //-- Showing Disclaimer ----------------------------- // case 'd': case 'D': ulrc = PrintingHeadLine(); ulrc = PrintingDisclaimer(); printf("\n\n Press m "); printf("to return to the Main Menu \n"); strcpy( szCmdKeys, "mM" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); blDoTheMainMenuAgain = TRUE; break; //-- Showing Disclaimer, ready ------------- //-- Showing info on 'K8055DD.dll' ------------------ // case 'i': case 'I': if ( blTestsExplained == TRUE ) { ulrc = PrintingHeadLine(); ulrc = PrintingInfoPref(); printf( "\n\n Press i to start test \n" ); strcpy( szCmdKeys, "iI" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); } ulrc = PrintingHeadLine(); ulrc = PrintingInfoHeadLine( &pszName ); // This function will call 'K8055_GetInfoStr()' ulrc = PrintingInfo(); printf( "\n\n Press m " ); printf( "to return to the Main Menu \n" ); strcpy( szCmdKeys, "mM" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); blDoTheMainMenuAgain = TRUE; break; //-- Showing info on 'K8055DD.dll', ready -- //-- Test: Reading from K8055 ----------------------- // case 'r': case 'R': if ( blTestsExplained == TRUE ) { ulrc = PrintingHeadLine(); ulrc = PrintingReadPref(); printf( "\n\n Press r to start the test \n" ); strcpy( szCmdKeys, "rR" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); } phDevice = &hDevice; ulrc = K8055_Open( &pszName[0], phDevice ); if (ulrc != 0) { printf( "\n\n Cannot open device " ); printf( " '%s' ! ", pszName ); ulrc = PrintingGoodByePhrase(); exit(0); } else { // ---------------------------------------------- // 'K8055_Init' reads descriptors and sets // the configuration as a K8055 needs it. // ulrc = K8055_Init( phDevice ); if ( ulrc == 0 ) { // -- Displays 5 tables of 5 value lines ---LB- // for( iTableIdx = 1; iTableIdx <= 5; iTableIdx++ ) { // -- Extra time between two value tables. // sleep(1); ulrc = PrintingHeadLine(); ulrc = PrintingHeadLineRead( iTableIdx, &pszName ); // -- Displays 5 value lines -------------LB- // for( iBlckCycl = 0; iBlckCycl <= 5; iBlckCycl++ ) { ulInpIxValue = 1; ulInpA1value = 0; ulInpA2value = 0; ulrc = K8055_ReadAllInputs( phDevice, &ulInpIxValue, &ulInpA1value, &ulInpA2value ); printf( "\n " ); printf( "%#04x, ", ulInpIxValue ); ulrc = K8055_DecodeDigitalInputs ( &ulInpIxValue, &ulDecodedInpIxValue ); printf( "%#04x ", ulDecodedInpIxValue ); printf( " ( %#06b )", ulDecodedInpIxValue ); printf( " ³ " ); printf( "%#03d", ulInpA1value ); printf( " " ); printf( "%#03d", ulInpA2value ); // -- Time between two value lines is app. // the same time as between two reading // operations. // sleep(1); } // -- Displays 5 value lines -------------LE- } // -- Displays 5 tables of 5 value lines ---LE- ulCounterValue = 0; // -- Obtaining impulses counted on I1 -- ulCounterIndex = 1; ulrc = K8055_CheckIxCounter( &ulCounterValue, &ulCounterIndex ); printf( "\n Impulses counted on I1 = " ); printf( "%#06d ", ulCounterValue); // -- Obtaining impulses counted on I2 -- ulCounterIndex = 2; ulrc = K8055_CheckIxCounter( &ulCounterValue, &ulCounterIndex ); printf( "\n Impulses counted on I2 = " ); printf( "%#06d ", ulCounterValue); ulrc = K8055_Close( phDevice ); printf( " \n"); printf( " Device '%s' closed.", pszName ); } printf( "\n" ); printf( " Test -Read- completed !" ); } printf( "\n\n Press m " ); printf( "to return to the Main Menu \n" ); strcpy( szCmdKeys, "mM" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); blDoTheMainMenuAgain = TRUE; break; //-- Test: Reading from K8055, ready ------- //-- Test: Writing to K8055 ------------------------- // case 'w': case 'W': if ( blTestsExplained == TRUE ) { ulrc = PrintingHeadLine(); ulrc = PrintingWritePref(); printf( "\n\n Press w to start the test \n" ); strcpy( szCmdKeys, "wW" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); } ulrc = PrintingHeadLine(); ulrc = PrintingHeadLineWrite( &pszName ); phDevice = &hDevice; ulrc = K8055_Open( &pszName[0], phDevice ); if ( ulrc != 0 ) { printf( "\n\n Cannot open device " ); printf( " '%s' ! ", pszName ); ulrc = PrintingGoodByePhrase(); exit(0); } else { // ---------------------------------------------- // 'K8055_Init' reads descriptors and sets the // configuration as a K8055 needs it. // ulrc = K8055_Init( phDevice ); if ( ulrc == 0 ) { ulDisplayedValuesCount = 0; for( iByteCycl = 0; iByteCycl <= 255; iByteCycl++ ) { delay(5); ulDigitalOutValue = iByteCycl; ulrc = K8055_PrepairDigitalOut ( &ulDigitalOutValue ); // -- Selecting DAC1, going upwards ----- ulDACidx = 1; ulDAC1value = iByteCycl; ulrc = K8055_PrepairDACxOut( &ulDAC1value, &ulDACidx ); // -- Selecting DAC2, going downwards --- ulDACidx = 2; ulDAC2value = 255 - iByteCycl; ulrc = K8055_PrepairDACxOut( &ulDAC2value, &ulDACidx ); ulrc = K8055_SetAllOutputs( phDevice ); if ( ulDisplayedValuesCount == 24 ) { ulDisplayedValuesCount = 0; printf( "\n" ); } ++ulDisplayedValuesCount; printf( " %02X", iByteCycl ); delay(5); } ulrc = K8055_Close( phDevice ); printf( " \n"); printf( " Device '%s' closed.", pszName ); } printf( "\n" ); printf( " Test -Write- completed !" ); } printf("\n\n Press m "); printf("to return to the Main Menu \n"); strcpy( szCmdKeys, "mM" ); ulKeyCode = 0; ulKeyIdx = 0; ulrc = PollingForMenuKeyByCharArray( &szCmdKeys, &ulKeyCode, &ulKeyIdx ); blDoTheMainMenuAgain = TRUE; break; //-- Test: Writing to K8055, ready --------- //-- Qitting Main Menu ------------------------------ // case 'q': case 'Q': printf( " \n"); printf( " -Quit- selected !" ); blDoTheMainMenuAgain = FALSE; break; //-- Quitting Main Menu, ready ------------- } // // -- Main Menu Function Selector ----------- END ------& } while ( blDoTheMainMenuAgain == TRUE ); // // -- Main Menu Key Loop --------------------------- EL -)) } else { //empty } // -- Main Menu Key Section ------------------------- END --| ulrc = PrintingGoodByePhrase(); exit(0); }