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

如何使用C从Arduino板读取数据到pc?,c,arduino,serial-port,usb,C,Arduino,Serial Port,Usb,我在这里找到了一个将数据写入Arduino板的教程: 代码使用file=fopen(“/dev/ttyUSB0”,“w+”)打开用于读/写操作的端口,并使用fprintf将数据写入设备。但是,当我尝试使用fscanf从Arduino检索数据时(我使用Serial.print从Arduino端将数据写入PC,并且数据格式为DEC),它不起作用 我可以在ArduinoIDE中使用串行监视器查看输出,但无法在C程序的输出中查看输出。为什么它不工作?我该怎么做才能让它工作 这个程序是在Ubuntu中运行

我在这里找到了一个将数据写入Arduino板的教程:

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

我可以在ArduinoIDE中使用串行监视器查看输出,但无法在C程序的输出中查看输出。为什么它不工作?我该怎么做才能让它工作

这个程序是在Ubuntu中运行的

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

#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);
 }
#包括
int main()
{
文件*文件;
字符a=0;
file=fopen(“/dev/ttyUSB0”,“w+”);
int i=0;
如果(文件==-1)
printf(“错误”);
对于(i=0;i<3;i++)
{
fprintf(文件“C”);
fscanf(文件“%c”和&a);
printf(“%c”,a);
}
fclose(文件);
}
我还尝试了一些变体,比如使用
%d
代替
%c
,使用
int
代替char,以及使用
fflush
。我不知道为什么它不起作用。是不是我的Arduino板坏了


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

您无法读取任何内容的原因是当您调用

file=fopen(“/dev/ttyUSB0”,“w+”)

,启动需要1-2秒。由于某种原因,读数不确定地挂起

增加
sleep(2)
旁边的code>可能会起作用


查看如何

我怀疑您的代码中可能有问题。您确定您的arduino位于
/dev/ttyUSB0
?串行监视器是否在Arduino IDE中打开(打开时无法读/写)?将
if(file==1)
更改为
if(file==NULL)
。什么是arduino密码?顺便说一句,如果您正试图用scanf中的
%c
读取一个数字(
DEC
,请用
%d