这个是发送的代码
/**
*@breif 打开串口
*/
int OpenDev(char *Dev)
{
int fd = open( Dev, O_RDWR|O_NOCTTY); //| O_NOCTTY | O_NDELAY
if (-1 == fd)
{ /*设置数据位数*/
perror("Can't Open Serial Port");
return -1;
}
else
return fd;
}
/**
*@breif main()
*/
int main(int argc, char **argv)
{
int fd;
int nwrite;
char sbuf[5];/*待发送的内容*/
sbuf[0] = 0xAA;
sbuf[1] = 0xBB;
sbuf[2] = 0x02;
sbuf[3] = 0x19;
sbuf[4] = 0x1b;
int length=sizeof(sbuf);/*发送缓冲区数据宽度*/
char *dev ="/dev/ttyS0";
fd = OpenDev(dev);
if (fd>0)
set_speed(fd,19200);
else
{
printf("Can't Open Serial Port!\n");
exit(0);
}
if (set_Parity(fd,8,1,'N')== FALSE)
{
printf("Set Parity Error\n");
exit(1);
}
nwrite=write(fd,sbuf,length);/*数据接收*/
if(nwrite==-1)
{
perror("write");/*读状态标志判断*/
}
printf("the number if char sent is %d\n",nwrite);
//close(fd);
//exit(0);
}
这个是接收的代码
/**
*@breif 打开串口
*/
int OpenDev(char *Dev)
{
int fd = open( Dev, O_RDWR|O_NOCTTY); //| O_NOCTTY | O_NDELAY
if (-1 == fd)
{ /*设置数据位数*/
perror("Can't Open Serial Port");
return -1;
}
else
return fd;
}
/**
*@breif main()
*/
int main(int argc, char **argv)
{
int fd;
int nread;
unsigned char hd[512],*buff;
char *dev ="/dev/ttyS0";
fd = OpenDev(dev);
if (fd>0)
set_speed(fd,19200);
else
{
printf("Can't Open Serial Port!\n");
exit(0);
}
if (set_Parity(fd,8,1,'N')== FALSE)
{
printf("Set Parity Error\n");
exit(1);
}
while(1)
{ buff=hd;
int nread=read(fd,buff,1);
if(nread!=-1)
{
printf("%x\n",*buff);
}
else
{
printf("can not read data! ");
}
}
//close(fd);
//exit(0);
}
我把这段数据 aa bb 02 19 1b发送给rfid 应该收回的是 aa bb 04 19 04 00 19
但我受到的却是aa bb 19 19 更郁闷的是 我发别的代码过去 都无法得到反馈
这个是怎么回事。 顺便说下 这个代码在我linux重装前 没问题 重装后就这样了