极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12820|回复: 6

linux下读取板子通过串口回传的double数据

[复制链接]
发表于 2014-1-2 15:55:12 | 显示全部楼层 |阅读模式
本帖最后由 q601564446 于 2014-1-23 18:31 编辑

我想用arduino板子获取温度数据,回传至PC机(Linux系统)。
如何在linux系统下,读取arduino板子通过串口输出的数据呢?
请教高手,给个例子。谢谢!



我来结贴子:

下面的列子可用,串口设置的波特率,以及数据传输的各个位设置   都可以直接使用。

唯一需要设置的是串口设备文件的路径。

我的板子型号是uno。串口设备文件的路径是:char *dev = "/dev/ttyACM0";

在Linux下,插入的USB设备可以直接被识别。

我用的linux是在虚拟机里面跑的,一样能使用。
回复

使用道具 举报

发表于 2014-1-2 22:05:10 | 显示全部楼层
我一般都是先HEX 在发送。
回复 支持 反对

使用道具 举报

发表于 2014-1-2 22:05:39 | 显示全部楼层
读取数据直接可以看我的主题,我有例子

回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-9 16:01:22 | 显示全部楼层
Damn_intuition 发表于 2014-1-2 22:05
读取数据直接可以看我的主题,我有例子

不懂树莓派额。我需要的是Linux下的C语言的程序
回复 支持 反对

使用道具 举报

发表于 2014-1-16 15:17:10 | 显示全部楼层
本帖最后由 Damn_intuition 于 2014-1-16 15:21 编辑
q601564446 发表于 2014-1-9 16:01
不懂树莓派额。我需要的是Linux下的C语言的程序


  1. #define FALSE  -1 
  2. #define TRUE   0 
  3. /*********************************************************************/ 
  4. int OpenDev(char *Dev)
  5. { 
  6.     //Dev 就是设备,设备就是文件
  7.     int fd = open(Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY      
  8.     if (-1 == fd) { 
  9.        perror("Can't Open Serial Port");
  10.        return -1;     
  11.     }else  return fd; 
  12. }

  13. int main(int argc, char **argv) { 
  14.     int fd;     int nread; 
  15.     char buff[512]; 
  16.     char *dev = "/dev/ttyS1"; //串口二    
  17.     fd = OpenDev(dev);     
  18.     set_speed(fd, 19200); 
  19.     if (set_Parity(fd, 8, 1, 'N') == FALSE)    
  20.  { 
  21.         printf("Set Parity Error\n");
  22.         exit (0);     
  23. } 
  24.     while (1) //循环读取数据
  25.      { 
  26.        while ((nread = read(fd, buff, 512))>0)       
  27.        {
  28.             printf("\nLen %d\n", nread);
  29.             buff[nread+1] = '\0';
  30.             printf("\n%s", buff);
  31.         }
  32.      }
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-19 15:27:31 | 显示全部楼层
Damn_intuition 发表于 2014-1-16 15:17

我突然发现这个例子,我有。这个串口设定的参数符合arduino的数据传输格式?!
回复 支持 反对

使用道具 举报

发表于 2014-1-20 15:30:04 | 显示全部楼层
    set_speed(fd, 19200);
    if (set_Parity(fd, 8, 1, 'N') == FALSE)   

设置一下就可以了。


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-5 22:18 , Processed in 0.038770 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表