Ejemplo n.º 1
0
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();
    }
}
Ejemplo n.º 2
0
/* Read 1 character - echo defines echo mode */
char getch_(int echo) {
    char ch;
    initTermios(echo);
    ch = getchar();
    resetTermios();
    return ch;
}
Ejemplo n.º 3
0
/* 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
}
Ejemplo n.º 4
0
//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); 
}
Ejemplo n.º 5
0
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);

}
Ejemplo n.º 6
0
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();
}
Ejemplo n.º 7
0
	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;
}