rs232 read pgm is not working when i connect in loopback but write is wroking plz help...<br><br>pgm<br><br>#include &lt;stdio.h&gt;<br>#include &lt;stdlib.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;unistd.h&gt;<br>




#include &lt;fcntl.h&gt;<br>#include &lt;termios.h&gt;<br><br>#define _POSIX_SOURCE 1<br><br>#define BAUDRATE        B9600<br>#define MODEMDEVICE        &quot;/dev/ttyS1&quot;<br><br>int main(void)<br>{<br>    int ret, fd;<br>




    struct termios tio;<br>    char buf[255];<br><br>    /* Open device for reading and writing */<br>    fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY | O_NDELAY);<br>    if (fd &lt; 0) {<br>        fprintf(stderr, &quot;Error opening device %s\n&quot;, MODEMDEVICE);<br>




        goto done;<br>    }<br>    /* get current port attributes */<br>    ret = tcgetattr(fd, &amp;tio);<br>    if (ret &lt; 0) {<br>        fprintf(stderr, &quot;Error retreiving attributes, ret=%d\n&quot;, ret);<br>        goto done;<br>




    }<br>    tcflush(fd, TCIFLUSH);<br><br>    /* set port input speed */<br>    ret = cfsetispeed(&amp;tio, BAUDRATE);<br>    if (ret) {<br>        fprintf(stderr, &quot;Error setting input Baud rate, ret=%d\n&quot;, ret);<br>




        goto done;<br>    }<br>    /* set port output speed */<br>    ret = cfsetospeed(&amp;tio, BAUDRATE);<br>    if (ret) {<br>        fprintf(stderr, &quot;Error setting output Baud rate, ret=%d\n&quot;, ret);<br>        goto done;<br>




    }<br><br>    tio.c_cflag &amp;= ~CRTSCTS; /* HW flow ctl OFF */<br>    tio.c_cflag &amp;= ~PARENB; /* no parity */<br>    tio.c_cflag &amp;= ~CSTOPB; /* 1 stop bit */<br>    tio.c_cflag &amp;= ~CSIZE; /* 1 stop bit */<br>




    tio.c_cflag |= CS8; /* char size; 8N1 */<br>    tio.c_cflag |= CREAD; /* enable receiver */<br>    /* set port attributes */<br>    ret = tcsetattr(fd, TCSANOW, &amp;tio);<br>    if (ret &lt; 0) {<br>        fprintf(stderr, &quot;Error setting attributes, ret=%d\n&quot;, ret);<br>




        goto done;<br>    }<br>    fcntl(fd, F_SETFL, FNDELAY);<br>    ret = write(fd, &quot;ab\r&quot;, 3);<br>    if (ret &lt; 0)<br>        fprintf(stderr, &quot;write() of 3 bytes failed!, ret=%d\n&quot;, ret);<br>    <br>




    printf(&quot;no of data written = %d\n&quot;,ret);<br>    usleep(5000);<br>    while (1) {<br>        ret = read(fd, buf, sizeof(char));<br>        if (ret &gt; 0) {<br>            printf(&quot;%c&quot;,buf[0]);<br>            <br>




        }<br>    }<br>done:<br>    close(fd);<br>    return 0;<br>}<br><br><br>##################################<br>output../a.out <br>no of data written = 3<br><br><br><br><br>########################<br>
strace ./a.out<br>
read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>




read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>




read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)<br>read(3, 0xbfa8d5dd, 1)                  = -1 EAGAIN (Resource temporarily unavailable)