unix下串口编程  加速问题
工程上的需要写了一个串口通讯的程序,实际过程中调用的次数很多,所以每次程序都要运行很长时间(实在不能忍)才结束,请教一下怎样优化串口通讯程序才能提速?无限的感谢!!下面是程序的主要部分:
int uart_tx(uint32_t opera){
   int          fd;
   fd = OpenDev("/dev/ttyS0");                /* Open Serial Port #1*/
   SetSpeed(fd, 9600);                              //设置波特率
   SetFormat(fd, 8, 1, 'N');                        //其他的设置
   write(fd, &opera, sizeof(opera));        //传输数据
   close(fd);                                                //关闭串口
   return 0;
}
int uart_rx(char *buff){
   int          fd;
   int          nread = 0;
   int          i;
   for (i = 0; i < 130; i++){
     *(buff+i) = '\0';
   }                                                       //初始化
   fd = OpenDev("/dev/ttyS0");        /*Open Serial Port #1*/
   SetSpeed(fd, 9600);
   SetFormat(fd, 8, 1, 'N');
   tcflush(fd, TCIOFLUSH);                 /*No use*/
   while (1){
     while ((nread = read(fd, buff, 116)) > 0){          //循环等待接受的数据
       close(fd);
       return 0;
     }
   }
}
------解决方案--------------------
  while (1){
 while ((nread = read(fd, buff, 116)) > 0){ //循环等待接受的数据
 close(fd);
 return 0;
 }
 }
这样写是错误的,你第一次读到数据后,已经把句柄关闭,后边再去读,肯定出错.