//Serial Code #include "serial.h" #define DATAPORT "/dev/ttyS1" int data_ioport; void send_message(short int mes,unsigned char *answer,int t_size) { unsigned char data[10] ={0}; int i; //for (i=0;i<2;i++){ //write(data_ioport, &mes, 1); while(write(data_ioport, &mes, 1)==-1);//} //for(i=0;i<6;i++) // { // while(read(data_ioport, &data[i], 1)==0); // } return; } /*! Opens a serial port with the flags: O_RDWR - read/write mode O_NOCTTY - not the controlling terminal O_NDELAY - do not pay attentention to Data Carrier Detect (DCD) \param port a character string of the device \param baud speed to open port \return file descriptor */ int open_serial_port(char *port, int baud){ int fd; int speed; char msg[70]; struct termios opts; fd = open( port, O_RDWR | O_NOCTTY | O_NDELAY ); //may not need the nodelay if( fd <= 0 ){ sprintf(msg,"Failed: %s:%d - %s",port,baud,strerror(errno)); perror(msg); return(-1); } // Set the baud rate switch(baud){ case 1200: speed = B1200; break; case 2400: speed = B2400; break; case 4800: speed = B4800; break; case 9600: speed = B9600; break; case 19200: speed = B19200; break; case 38400: speed = B38400; break; case 57600: speed = B57600; break; default: printf("Failed: Invalid speed\n"); } bzero( &opts, sizeof( opts ) ); opts.c_cflag = speed | CS8 | CLOCAL | CREAD /*| CRTSCTS*/; opts.c_iflag = IGNPAR; opts.c_oflag = 0; opts.c_lflag = 0; opts.c_cc[VTIME] = 0; opts.c_cc[VMIN] = 0; tcflush( fd, TCIOFLUSH ); // clean out old crap tcsetattr( fd, TCSANOW, &opts ); return fd; } int main(int argc,char *argv[]) { short int message = 0x12 ; unsigned char times[2] ; data_ioport = open_serial_port(DATAPORT, 9600); send_message(message,times,2);//remeber to change close(data_ioport); }