| 
 | 
 
 楼主 |
发表于 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); 
} |   
 
 
 
 |