繁体   English   中英

如何从Linux串口读取...

[英]How to read from linux serial port…

我正在研究必须使用无线串行通信进行控制的机器人。 机器人正在微控制器上运行(通过刻录.hex文件)。 我想用我的Linux(Ubuntu)pc控制它。 我是串口编程的新手。 我可以发送数据,但不能读取数据。 在微控制器上运行的几段代码:

发送数据的功能

void TxData(unsigned char tx_data)

{   SBUF = tx_data;          //Transmit data that is passed to this function
    while(TI == 0);     //wait while data is being transmitted

}

我正在通过字符数组data_array [i]发送数据

  for (i=4;i<=6;i++)
  {   
     TxData(data_array[i]);
     RI = 0;              //Clear receive interrupt. Must be cleared by the user.
     TI = 0;        //Clear transmit interrupt. Must be cleared by the user.
   }

现在,来自Linux上运行的C程序的那段代码...

> while (flag==0)  {
>      int res = read(fd,buf,255);
>      buf[res]=0; /* set end of string, so we can printf */
>      printf(":%s:%d\n", buf, res);
>      if (buf[0]=='\0') flag=1; 
       }

打印出res = 0的值。

实际上,我想逐个字符读取数据以执行计算并做出进一步的决定。 还有其他方法吗? 请帮忙,因为我无法继续进行项目。

注意:如果有人可以为Linux上的串行端口编程建议好的学习材料(代码),那将对我有帮助。

谢谢....

这是一个很好的指南:

http://www.c-program.com/pdf/serialPort_Programming_c.pdf

读调用可能没有数据返回并且errno设置为EAGAIN。 如果您希望数据到达,则需要检查返回值并四处循环以再次读取。

首先,查看/ proc / tty / driver / serial以确保一切设置正确(即,您应该看到的信号)。 然后,查看termios(3)的手册页,您可能对VMIN和VTIME解释感兴趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM