Hi, Thanks for help Andrey, do you happen to know how to display binary value READ function . At the moment when I use read function, shell displays corresponding ascii symbol (character) as the read. If I send 0x43, beaglebone black read is displaying the 'C' on a shell as a read in, but is there a way of displaying hexadecimal on binary value on the read.
Thanks, On 6 December 2013 14:25, Andrey Nechypurenko <[email protected]>wrote: > Hi, > > > write (fd, "AA", 4); > > you are sending string, not a binary data. Try the following instead: > > char buf[] = {0xAA}; > > write (fd, buff, sizeof(buff)); > > HTH, > Andrey. > > > On 6 December 2013 13:44, Andrei <[email protected]> wrote: > > > > Hello, I need a help with the UART, more precisly with the c code. When > the > > following c script goes to write () function, it sends the data over to > the > > uart and I can see the output on the oscilloscope, but the problem is > that > > it sends it in ASCII, which is not what I want it to do. on the Linux > shell > > I usually used "echo -en \\xAA > /dev/ttyO4" and it did the job. But I > want > > it to the job using the C code. Hopefully somebody can help me. > > > > #include <iostream> > > > > > > #include <cstdio> > > > > > > #include <unistd.h> > > > > > > #include <stdlib.h> > > > > > > #include <string> > > > > > > #include <termios.h> > > > > > > #include <fcntl.h> > > > > > > #include <sys/signal.h> > > > > > > > > > > #define BAUDRATE B9600 > > > > > > #define DEVICE "/dev/ttyO4" > > > > > > #define _POSIX_SOURCE 1 > > > > > > > > > > #define FALSE 0 > > > > > > #define TRUE 1 > > > > > > volatile int STOP=FALSE; > > > > > > int wait_flag=FALSE; > > > > > > > > > > using namespace std; > > > > > > > > > > void signal_handler_IO (int status){ > > > > > > > > > > cout << "received SIGIO signal "<< endl; > > > > > > wait_flag = FALSE; > > > > > > } > > > > > > > > > > int main() > > > > > > { > > > > > > int fd, c, res; > > > > > > struct termios oldtio, newtio; > > > > > > struct sigaction saio; > > > > > > char buffer [255]; > > > > > > > > > > system ("echo BB-UART4 > /sys/devices/bone_capemgr.8/slots"); > > > > > > > > > > fd = open (DEVICE, O_RDWR | O_NOCTTY | O_NONBLOCK); > > > > > > if (fd <0) {perror(DEVICE); exit (-1);} > > > > > > > > > > /*install the siganl handler before making the device ansynhronous */ > > > > > > saio.sa_handler = signal_handler_IO; > > > > > > saio.sa_mask.__val[0] = 0; > > > > > > saio.sa_mask.__val[1] = 0; > > > > > > saio.sa_mask.__val[2] = 0; > > > > > > saio.sa_mask.__val[3] = 0; > > > > > > saio.sa_flags = 0; > > > > > > saio.sa_restorer = NULL; > > > > > > sigaction(SIGIO, &saio, NULL); > > > > > > > > > > /* Allow the process to receive SIGIO */ > > > > > > fcntl(fd, F_SETOWN, getpid()); > > > > > > /* Make the file descriptor ansynchronous */ > > > > > > fcntl(fd, F_SETFL, FASYNC); > > > > > > > > > > tcgetattr(fd,&oldtio); > > > > > > > > > > newtio.c_cflag = BAUDRATE | CS8 | CLOCAL | CREAD; > > > > > > newtio.c_iflag = IGNPAR | ICRNL; > > > > > > newtio.c_oflag = 0; > > > > > > newtio.c_lflag = ICANON; > > > > > > newtio.c_cc[VMIN]=1; > > > > > > newtio.c_cc[VTIME]=0; > > > > > > /* Clean the modem line and activate the settings for the port */ > > > > > > tcflush(fd,TCIFLUSH); > > > > > > tcsetattr(fd,TCSANOW,&newtio); > > > > > > > > > > //------------ WRITE > > > > > > > >> > >> c = write (fd, "AA", 4); > >> if ( c < 0) > >> fputs ("write() of 4bits failed!\n", stderr); > > > > > > > > > > //--------------READ > > > > > > > > > > > > > > > > while(STOP==FALSE) { > > > > > > > > > > usleep(1000000); > > > > > > putchar ('*'); fflush(stdout); > > > > > > > > > > if(wait_flag==FALSE) { > > > > > > buffer[res]=NULL; > > > > > > res = read (fd,buffer,sizeof(buffer)); > > > > > > > > > > printf(":%s :%d\n", buffer, res); > > > > > > if (res==1) STOP=TRUE; > > > > > > > > > > wait_flag = TRUE; > > > > > > } > > > > > > > > > > } > > > > > > > > > > > > > > //restore old port settings > > > > > > tcsetattr(fd,TCSANOW, &oldtio); > > > > > > > > > > close (fd); > > > > > > return 0; > > > > > > } > > > > > > > > -- > > For more options, visit http://beagleboard.org/discuss > > --- > > You received this message because you are subscribed to the Google Groups > > "BeagleBoard" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > For more options, visit https://groups.google.com/groups/opt_out. > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to a topic in the > Google Groups "BeagleBoard" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/beagleboard/I26rrzcpr-g/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
