hello,
I am gettin problem while sending and recieving data through seial port...
when I am sending Data then the reciever end is not able to recieve that data .....
Reciever end is running in infinite loop just polling after some time to check that there is data on the port and then again sleeps down....
whats going wrong ....I am not getting data at the recievers End ....
here I am copying my code of both ends..........
SENDER(just writing data on Serial Port):::::::::
#include<sys/types.h>
#include<iostream.h>
#include<termios.h>
#include<fcntl.h>
#include<errno.h>
#include<sys/ioctl.h>
#include<iostream.h>
#include<unistd.h>
main ()
{
struct termios t;
char *device = "/dev/ttyS0";
int sPort, rbyte, status, sPortdest,length;
long count=0;
unsigned char send1[32];
t.c_cc[VMIN] = 1;
t.c_cc[VTIME]=0;
t.c_cc[VEOF]='\n';
/* t.c_iflag &= ~(BRKINT|IGNPAR|PARMRK|INPCK|INLCR|IGNCR|ICRNL|IXON);
t.c_iflag |= (IGNBRK|ISTRIP|IXOFF);
t.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP);
t.c_cflag &= (CSIZE|CSTOPB|HUPCL|PARENB);
t.c_cflag |= (CLOCAL|CREAD|CS8);*/
t.c_iflag |= (ISIG);
// t.c_iflag &= ~BRKINT;
// t.c_iflag &= (IUCLC);
t.c_cflag = B9600 | CS8 | CREAD | CLOCAL | HUPCL;
sPort = open\(device,O\_RDWR|O\_NOCTTY|O_NDELAY\);
if\(sPort != -1\)
\{
cout<<"open successfully\\n";
status = ioctl\(sPort,TCSETS,&t\);
if\(status==0\)
\{
for\(count=0;count<20;count\+\+\)
\{
cout<<"Enter :";
cin>>send1;
//strcat\(\(char *\)send1,"\{MSS TYPE-D DAMA\}"\);
write\(sPort,"\{100223456\}",11\);
// rbyte=write(sPort,send1,strlen((char *)send1));
cout<<"w b:"<<rbyte<<"\t Time:"<<count<<"\t string:"<<send1<<"\n";
usleep(1000);
\}
\}
close\(sPort\);
\}
else
\{
cout<<"Device could not be opened";
\}
}
RECIEVER(just reading Data on serial port....)
#include<termios.h>
#include<fcntl.h>
#include<errno.h>
#include<sys/ioctl.h>
#include<stdio.h>
#include<sys/time.h>
#include<iostream.h>
#include<sys/types.h>
#include<unistd.h>
#include<string.h>
main ()
{
struct termios t;
char *devicedest = "/dev/ttyS0";
unsigned char recvbuf[2];
int rbyte, status, sPortdest,r,i,c=0;
long count=0;
int inp_check=0;
int ifirst=0;
struct timeval timeout;
fd_set testfds,readfds;
t.c_cc[VMIN] = 1;
t.c_cc[VTIME]=0;
t.c_cc[VEOF]='\n';
/* t.c_iflag &= ~(BRKINT|IGNPAR|PARMRK|INPCK|INLCR|IGNCR|ICRNL|IXON);
t.c_iflag |= (IGNBRK|ISTRIP|IXOFF);
t.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP);
t.c_cflag &= (CSIZE|CSTOPB|HUPCL|PARENB);
t.c_cflag |= (CLOCAL|CREAD|CS8);*/
// t.c_iflag |= (ISIG);
// t.c_iflag &= ~(IUCLC);
t.c_iflag &= ~BRKINT;
t.c_iflag = (ISIG | IUCLC) ;
t.c_cflag = B9600 | CS8 | CREAD | CLOCAL| HUPCL;
sPortdest= open(devicedest,O_RDONLY|O_NOCTTY|O_NDELAY);
if(tcsetattr(sPortdest,TCSANOW,&t) != 0 )
cout<<"\n attribute not set";
FD_ZERO\(&readfds\);
FD_SET\(sPortdest,&readfds\);
/* if\(ifirst == -1\) //Set all attribute when first start
\{
status = ioctl\(sPortdest,TCSETS,t\);
ifirst = 1;
\}*/
if(sPortdest!=-1)
{
cout<<"Open successfully\n";
do
{
testfds = readfds;
timeout.tv_sec=0;
timeout.tv_usec=1000;
r=select\(FD\_SETSIZE,&testfds,\(fd_set *\)0,\(fd_set *\)0,&timeout\);
if\(r == -1\)
cout<<"Error in select";
//Activity happen on some ports
if\(r > 0\)
\{
//check all
for\(i=0;i<FD_SETSIZE;i\+\+\)
\{
if\(FD_ISSET\(i,&testfds\)\)
\{
//Activity on serial port
if\(i == sPortdest\)
\{
rbyte= read\(sPortdest,recvbuf,1\);
if\(rbyte > 0\)
\{
recvbuf[1]='\\0';
cout<<recvbuf;
count\+\+;
if\(\(count%11\)==0\)
\{
cout<<"\\n\\t";
//c\+\+;
cout<<c<<"\\t";
cin>>inp_check;
// \}
usleep\(1000\);
\}
\}
\}
\}
\}
//Activity not happen on SP
if\(r == 0\)
\{
//cout<<"\\nwaiting\\n";
write\(sPortdest,"Test",4\);
usleep\(1000\);
\}
}while(1);
}
else
{
cout<<"Device could not be oepn successfully";
}
}