如何使用C从Arduino板读取数据?

时间:2016-04-12 10:58:29

标签: c arduino serial-port usb

我在这里找到了一个将数据写入Arduino板的教程:https://salilkapur.wordpress.com/2013/03/08/communicating-with-arduino-using-c/

代码使用file = fopen("/dev/ttyUSB0","w+");打开读/写操作的端口,并使用fprintf将数据写入设备。但是当我尝试使用fscanf从Arduino中检索数据时(我使用Serial.print将数据从Arduino端写回PC,数据格式为DEC) ,它没有用。

我能够在Arduino IDE中使用串行监视器查看输出,但我无法在C程序的输出中查看输出。为什么它不起作用,我需要做些什么来使它工作?

该程序在Ubuntu中运行。

这是我应该在PC上运行的C代码:

#include <stdio.h>


int main()
{
    FILE *file;
    char a=0;
    file = fopen("/dev/ttyUSB0","w+");  
    int i = 0;
    if(file == -1)
        printf("error");
    for(i = 0 ; i < 3 ; i++)
    {
        fprintf(file,"C"); 
        fscanf(file, "%c", &a);
        printf("%c", a);
    }



    fclose(file);
 }

我还尝试了一些变体,例如,使用%d代替%c,使用int代替char并使用fflush。我不知道为什么它不起作用。可能是我的Arduino板无效吗?

注意:它应该在每个字符输入后给出一个输出。

1 个答案:

答案 0 :(得分:0)

您无法阅读任何内容的原因是当您致电

file = fopen("/dev/ttyUSB0","w+");

the arduino is reset,启动需要1-2秒。出于某种原因,这种阅读不尽相同。

sleep(2);旁边添加fopen可能会有效。

了解如何disable auto reset