q601564446 发表于 2014-1-2 15:55:12

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

本帖最后由 q601564446 于 2014-1-23 18:31 编辑

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



我来结贴子:

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

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

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

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

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

Damn_intuition 发表于 2014-1-2 22:05:10

我一般都是先HEX 在发送。

Damn_intuition 发表于 2014-1-2 22:05:39

读取数据直接可以看我的主题,我有例子

q601564446 发表于 2014-1-9 16:01:22

Damn_intuition 发表于 2014-1-2 22:05 static/image/common/back.gif
读取数据直接可以看我的主题,我有例子

不懂树莓派额。我需要的是Linux下的C语言的程序

Damn_intuition 发表于 2014-1-16 15:17:10

本帖最后由 Damn_intuition 于 2014-1-16 15:21 编辑

q601564446 发表于 2014-1-9 16:01 static/image/common/back.gif
不懂树莓派额。我需要的是Linux下的C语言的程序

#define FALSE  -1 
#define TRUE   0 
/*********************************************************************/ 
int OpenDev(char *Dev)

    //Dev 就是设备,设备就是文件
    int fd = open(Dev, O_RDWR ); //| O_NOCTTY | O_NDELAY      
    if (-1 == fd) { 
       perror("Can't Open Serial Port");
       return -1;     
    }else  return fd; 
}

int main(int argc, char **argv) { 
    int fd;     int nread; 
    char buff; 
    char *dev = "/dev/ttyS1"; //串口二    
    fd = OpenDev(dev);     
    set_speed(fd, 19200); 
    if (set_Parity(fd, 8, 1, 'N') == FALSE)    
 { 
        printf("Set Parity Error\n");
        exit (0);     

    while (1) //循环读取数据
     { 
       while ((nread = read(fd, buff, 512))>0)       
       {
            printf("\nLen %d\n", nread);
            buff = '\0';
            printf("\n%s", buff);
        }
     }

q601564446 发表于 2014-1-19 15:27:31

Damn_intuition 发表于 2014-1-16 15:17 static/image/common/back.gif


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

Damn_intuition 发表于 2014-1-20 15:30:04

    set_speed(fd, 19200);
    if (set_Parity(fd, 8, 1, 'N') == FALSE)   

设置一下就可以了。


页: [1]
查看完整版本: linux下读取板子通过串口回传的double数据