通过cat和hterm读出串口设备,结果不同

时间:2015-05-06 17:22:46

标签: linux

我尝试读出一个串行设备。我正在研究Ubuntu 12.04。设备以相等的时间距离发送一些比特。

我通过Hterm连接到设备,我可以看到正确输入的数据。

如果我通过linux命令cat读出设备,则会丢失几个Bits。

我的第三种方法是写一个小C文件

struct termios options;

int main(void)
{
   int fd; /* File descriptor for the port */
   fd = open(DEVICE, O_RDWR | O_NONBLOCK);
   if (fd < 0)
   {
   /*
   * Could not open the port.
   */
       perror("open_port: Unable to open /dev/ttyACM3 - ");
   }

   fd_set read_fds, write_fds, except_fds;
   FD_ZERO(&read_fds);
   FD_ZERO(&write_fds);
   FD_ZERO(&except_fds);
   FD_SET(fd,&read_fds);

   struct timeval timeout;
   timeout.tv_sec = 10;
   timeout.tv_usec = 0;



   if(select(fd + 1, &read_fds, &write_fds, &except_fds, &timeout) == 1){
      char replay[DEBUG_REPLAY_MAX_SIZE];
      memset(replay, 0x00, DEBUG_REPLAY_MAX_SIZE);
      read(fd, &replay, DEBUG_REPLAY_MAX_SIZE);
      printf("Daten: %s", replay);
   }
   else{
      puts("Timeout");
   }
 return (fd);
}

此代码应执行以下操作: - 打开串行设备并返回文件描述符 - 函数select()等待最长时间为10秒,并且会在

中提交一些数据

但是如果我执行c文件不等待10秒,但只打印“Daten:”而没有以下数据。真奇怪。

有人可以解释这种行为吗?

非常感谢,

弗洛里安

0 个答案:

没有答案