void inputHandler() { initTermios(); char cc; while(!stop) { if (kbhit()) { cc = getch();resetTermios(); switch (cc) { case 'h': case 'H' : system("clear"); F.FaceHappy(screen, wajah); break; case 'a': case 'A' : system("clear"); F.FaceAngry(screen, wajah); break; case 's': case 'S' : system("clear"); F.FaceSad(screen, wajah); break; case 'n': case 'N' : system("clear"); F.FaceNormal(screen, wajah); break; case 'k': case 'K' : system("clear"); F.FaceShocked(screen, wajah); break; case ',': case '<' : system("clear"); F.FaceWink1(screen, wajah); break; case '.': case '>' : system("clear"); F.FaceWink2(screen, wajah); break; case 'q' : case 'Q' : stop = true; break; } wakeUp = true; } initTermios(); } }
/* Read 1 character - echo defines echo mode */ char getch_(int echo) { char ch; initTermios(echo); ch = getchar(); resetTermios(); return ch; }
/* skeleton program for play */ void Play(double seconds){ initTermios(); // initailize new terminal setting to make kbhit() and getch() work char cc; const double TIME_LIMIT = seconds * CLOCKS_PER_SEC; clock_t startTime = clock(); while ((clock() - startTime) <= TIME_LIMIT){ if (kbhit()){ cc = getch(); resetTermios(); // reset terminal setting to enable buffer i/o and echo (printf) printf("Pressed %c\n",cc); // process character initTermios(); // use new terminal setting again to make kbhit() and getch() work } } printf("\nTime Up\n"); resetTermios(); // restore default terminal setting }
//thread void *inputHandler(void *vargp) { initTermios(); char cc; pthread_t tid2; pthread_create(&tid2, NULL, drawGun, NULL); drawTarget(getTargetPosX(TP),getTargetPosY(TP),50,220,10); while(stop == 0) { drawTarget(getTargetPosX(TP),getTargetPosY(TP),50,220,10); usleep(1000); if (kbhit()) { cc = getch();resetTermios(); switch (cc) { case 'w': case 'W' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,0,-15); break; case 'a': case 'A' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,-15,0); break; case 's': case 'S' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,0,15); break; case 'd': case 'D' : clearTarget(getTargetPosX(TP),getTargetPosY(TP)); moveTarget(&TP,15,0); break; case 'q' : case 'Q' : stop = 1; break; case 'i' : case 'I' : if(! isActive(B)) { makeBomb(getTargetPosX(TP),getTargetPosY(TP),&B); setActive(&B,1); } } initTermios(); } } pthread_join(tid2, NULL); }
void game::init(){ initTermios(); initializePrinter(); kapalterbang newkapal(getXRes(),50,50,20); kapalterbang1 = newkapal; addScreenObject(&kapalterbang1); kapalterbang newkapal2(getXRes(),50,50,20,"planecolor2.txt"); kapalterbang2 = newkapal2; addScreenObject(&kapalterbang2); kapalterbang newkapal3(getXRes(),50,50,20,"planecolor3.txt"); kapalterbang3 = newkapal3; addScreenObject(&kapalterbang3); kapallaut newkapallaut(50,getYRes()-80,270*PI/180); kapallaut1 = newkapallaut; addScreenObject(&kapallaut1); }
TermiosHelper::TermiosHelper(int fileDescriptor) : fileDescriptor_(fileDescriptor), originalAttrs_(NULL), currentAttrs_(NULL) { Q_ASSERT(fileDescriptor_ > 0); originalAttrs_ = new termios(); currentAttrs_ = new termios(); // save the current serial port attributes // see restoreTermios() saveTermios(); // clone the original attributes *currentAttrs_ = *originalAttrs_; // initialize port attributes for serial port communication initTermios(); }
TTYDevice(dev_t devID) : InputHandler(), CharacterDevice(), buffer(), nbDelim(0) { initTermios(); setDeviceID(devID); InputManager::registerHandler(this); }
static int serialPortOpenInitialize(SerialCommsData* sd, const int streamID,int argc, void* argv[]) { int errorCode = RTIOSTREAM_NO_ERROR; #ifdef _WIN32 HANDLE serialHandle; #else int serialHandle; #endif int closeFile = false; int result; sd->baud = BAUD_DEFAULT_VAL; strcpy(sd->port, PORTNAME_DEFAULT_VAL); sd->verbosity = DEFAULT_VERBOSITY; result = processArgs(argc, argv, sd); if (result == RTIOSTREAM_ERROR) { printf( "processArgs failed\n"); errorCode = RTIOSTREAM_ERROR; goto EXIT_POINT; } if (sd->verbosity) { printf("rtIOStreamOpen (connection id %d): port %s, baud %lu\n", streamID, sd->port, (unsigned long) sd->baud); } #ifdef _WIN32 initDCB( sd->baud ); serialHandle = (void *) CreateFile( sd->port, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (serialHandle == INVALID_HANDLE_VALUE) { DWORD err = GetLastError( ); printf( "Open serial port failed, error %d or 0x%08x.", err, err); #else/*UNIX*/ initTermios(sd->serialHandle, sd->baud); serialHandle = open(sd->port, O_RDWR /*Enable Read and Write Operations*/ | O_NOCTTY /*Not controlling flag specified*/ | O_NONBLOCK); /*Make the port non -blocking*/ if (serialHandle == -1) { /*-1 returned on error by OPEN*/ printf("Open serial port:%s failed, error %d: %s", sd->port,errno,strerror(errno)); #endif printf( "Possible causes " "are:\n a) The target is not powered on. \n " "b) The specified port number is not correct. \n " "c) The specified bit rate is not " "supported by the host machine.\n d) The previous " "connection was not closed correctly. " "If this is the case, you may need to re-start MATLAB.\n"); errorCode = RTIOSTREAM_ERROR; goto EXIT_POINT; } sd->serialHandle = serialHandle; #ifdef _WIN32 if (!SetCommTimeouts(serialHandle, &cto_timeout)) { printf( "SetCommTimeouts failed\n"); errorCode = RTIOSTREAM_ERROR; closeFile = true; goto EXIT_POINT; } if (!SetCommState(serialHandle, &dcb)) { printf( "SetCommState failed\n"); errorCode = RTIOSTREAM_ERROR; closeFile = true; goto EXIT_POINT; } #endif /*UNIX has this done with setting of termios data structure in initTermios*/ result = serialDataFlush( sd); /* clear out old data on the port */ if (result == RTIOSTREAM_ERROR) { printf( "serialDataFlush failed\n"); errorCode = RTIOSTREAM_ERROR; closeFile = true; goto EXIT_POINT; } EXIT_POINT: if (closeFile) { #ifdef _WIN32 CloseHandle(serialHandle); #else close(serialHandle); #endif } return errorCode; } /* Function: getSerialData ================================================= * Abstract: * Retrieves a SerialCommsData instance given its streamID. * * NOTE: An invalid streamID will lead to a NULL pointer being returned */ static SerialCommsData * getSerialData(int streamID) { /* return NULL for invalid or uninitialized streamIDs */ SerialCommsData * sd = NULL; if ((streamID >= 0) && (streamID < N_SERIAL_PORTS)) { if (SerialData[streamID].isInUse) { sd = &SerialData[streamID]; } } return sd; }