發表文章

目前顯示的是 1月, 2011的文章

RS232 read write ..

file1: with select #include <pthread.h> #include <stdio.h> #include <termios.h> #include <fcntl.h> #include <string.h> #include <sys/select.h> #define BUFFER_SIZE 100 char* Message="Hello1 Hello2 Hello3 Hello4 Hello5 Hello6 Hello7 Hello8 Hello9 Hello10"; char incomingBuffer[BUFFER_SIZE]; int fd1; int fd2; void* ReaderThread(void* object) {      int total=0;      int expected=strlen(Message);      struct timeval timeOut;      fd_set fdSet;      int maxFdp=0;      printf("Waiting for data on serial ports\r\n");      while(total<expected)     {           timeOut.tv_sec=0;           timeOut.tv_usec=1000000; // Every 100 ms            FD_ZERO(&fdSet);           FD_SET(fd1, &fdSet);           FD_SET(fd2, &fdSet);           maxFdp=fd2+1;           int result=select(maxFdp, &fdSet, (fd_set*)0, (fd_set*)0, &timeOut);           if(result<0) {                printf("A select error occured.. exiting\r\n");                exit(-1

RS232 baudrate setting

#include <stdio.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <termios.h> int fd=-1; int getbaud(int fd) {      struct termios termAttr;      int inputSpeed = -1;      speed_t baudRate;      tcgetattr(fd, &termAttr);      /* Get the input speed. */      baudRate = cfgetispeed(&termAttr);      switch (baudRate)      {           case B0: inputSpeed = 0; break;           case B50: inputSpeed = 50; break;           case B110: inputSpeed = 110; break;           case B134: inputSpeed = 134; break;           case B150: inputSpeed = 150; break;           case B200: inputSpeed = 200; break;           case B300: inputSpeed = 300; break;           case B600: inputSpeed = 600; break;           case B1200: inputSpeed = 1200; break;           case B1800: inputSpeed = 1800; break;           case B2400: inputSpeed = 2400; break;           case B4800: inputSpeed = 4800; break;           case B9600: inputSpeed = 9600; break;