|
楼主 |
发表于 2004-11-3 07:56:42
|
显示全部楼层
我又做了一下小改动,现在的现在是开机以后第一次运行时,发出数据后就停在read的位置了,如果有数据来,就原样返回去(发数的机器又收到了一样的数)。运行一次minicom后一切就都好用了,之后只要不关机就都好用。下面是我的主函数部分,其它的部分没有改动。
int main(int argc, char **argv)
{
int fd;
int nread=0;
int nwrite=0;
char buffr[512];
char buffw[512]={49,50,51,52,53,54,55,56,57};
char *dev ="/dev/ttyS0";
int i;
fd = OpenDev(dev);
if (fd>0)
set_speed(fd,9600);
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)
{
printf("....1....\n");
nwrite=write(fd,buffw,9);
printf("nwrite=%d\n",nwrite);
for(i=0;i<nwrite;i++)
printf("%c",buffw);
nread = read(fd,buffr,20);
printf("\nnread=%d\n",nread);
for(i=0;i<nread;i++)
printf("%c",buffr);
if(buffr[5]==4 break;
}
close(fd);
// exit(0);
} |
|