当前位置: 技术问答>linux和unix
linux串口无法接收数据(linunx新手求救)
来源: 互联网 发布时间:2016-02-24
本文导语: 在linux与windows间进行简单的串行数据的发送接收操作.linux下的程序源码如下,windows用使用串口调试程序收发数据.结果linux发往windows的数据能正常接收,但windows发往linux的数据linux方却无法接收,最奇怪的事是: windows发送...
在linux与windows间进行简单的串行数据的发送接收操作.linux下的程序源码如下,windows用使用串口调试程序收发数据.结果linux发往windows的数据能正常接收,但windows发往linux的数据linux方却无法接收,最奇怪的事是: windows发送的数据windows自己却收到了(linux没有转发收到的数据,串口线的2,3脚也没有短接;在windows上开两个串口调试程序,在COM1,COM2间发送数据进行试验,一切正常)!!请高人指点迷津.
#include /* Standard input/output definitions */
#include /* String function definitions */
#include /* UNIX standard function definitions */
#include /* File control definitions */
#include /* Error number definitions */
#include /* POSIX terminal control definitions */
#include
#include
#include
#include
int main(void)
{
int recnum,fd;
char buf[1024];
recnum=0;
recnumb=0;
fd=open("/dev/ttyS0",O_RDWR|O_NONBLOCK)
if(fd==-1)
{
perror("failed to open com1:");
return 0;
}
ia=write(fd,"the data come from linux!",25);
if(ia0)
break;
}
printf("%sn",buf);
close(fd);
return 0;
}
#include /* Standard input/output definitions */
#include /* String function definitions */
#include /* UNIX standard function definitions */
#include /* File control definitions */
#include /* Error number definitions */
#include /* POSIX terminal control definitions */
#include
#include
#include
#include
int main(void)
{
int recnum,fd;
char buf[1024];
recnum=0;
recnumb=0;
fd=open("/dev/ttyS0",O_RDWR|O_NONBLOCK)
if(fd==-1)
{
perror("failed to open com1:");
return 0;
}
ia=write(fd,"the data come from linux!",25);
if(ia0)
break;
}
printf("%sn",buf);
close(fd);
return 0;
}
|
O_NONBLOCK //它的原因吧,你去掉试一下