//------------------------------------------------------------------------------ static void loopMain(void) { tOplkError ret = kErrorOk; char cKey = 0; BOOL fExit = FALSE; #if !defined(CONFIG_KERNELSTACK_DIRECTLINK) #if defined(CONFIG_USE_SYNCTHREAD) system_startSyncThread(processSync); #endif #endif // start stack processing by sending a NMT reset command ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { return; } printf("\n-------------------------------\n"); printf("Press Esc to leave the program\n"); printf("Press r to reset the node\n"); printf("-------------------------------\n\n"); while (!fExit) { if (console_kbhit()) { cKey = (char)console_getch(); switch (cKey) { case 'r': ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { fExit = TRUE; } break; case 'c': ret = oplk_execNmtCommand(kNmtEventNmtCycleError); if (ret != kErrorOk) { fExit = TRUE; } break; case 0x1B: fExit = TRUE; break; default: break; } } if (system_getTermSignalState() == TRUE) { fExit = TRUE; printf("Received termination signal, exiting...\n"); } if (oplk_checkKernelStack() == FALSE) { fExit = TRUE; fprintf(stderr, "Kernel stack has gone! Exiting...\n"); } #if defined(CONFIG_USE_SYNCTHREAD) || defined(CONFIG_KERNELSTACK_DIRECTLINK) system_msleep(100); #else processSync(); #endif } #if (TARGET_SYSTEM == _WIN32_) printf("Press Enter to quit!\n"); console_getch(); #endif }
//------------------------------------------------------------------------------ static void loopMain(void) { tOplkError ret = kErrorOk; char cKey = 0; BOOL fExit = FALSE; #if !defined(CONFIG_KERNELSTACK_DIRECTLINK) #if defined(CONFIG_USE_SYNCTHREAD) system_startSyncThread(processSync); #endif #endif // start processing ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { return; } printf("start POWERLINK Stack... ok\n"); printf("Digital I/O interface with openPOWERLINK is ready!\n"); printf("\n-------------------------------\n"); printf("Press Esc to leave the programm\n"); printf("Press r to reset the node\n"); printf("Press i to increase digital input\n"); printf("Press d to decrease digital input\n"); printf("Press p to print digital outputs\n"); printf("-------------------------------\n\n"); setupInputs(); // wait for key hit while (!fExit) { if (console_kbhit()) { cKey = (BYTE)console_getch(); switch (cKey) { case 'r': ret = oplk_execNmtCommand(kNmtEventSwReset); if (ret != kErrorOk) { fExit = TRUE; } break; case 'i': increaseInputs(); break; case 'd': decreaseInputs(); break; case 'p': printOutputs(); break; case 0x1B: fExit = TRUE; break; default: break; } } if (system_getTermSignalState() == TRUE) { fExit = TRUE; printf("Received termination signal, exiting...\n"); } if (oplk_checkKernelStack() == FALSE) { fExit = TRUE; fprintf(stderr, "Kernel stack has gone! Exiting...\n"); } #if defined(CONFIG_USE_SYNCTHREAD) || defined(CONFIG_KERNELSTACK_DIRECTLINK) system_msleep(100); #else processSync(); #endif } #if (TARGET_SYSTEM == _WIN32_) printf("Press Enter to quit!\n"); console_getch(); #endif return; }