【发布时间】:2016-04-12 10:58:29
【问题描述】:
我在这里找到了将数据写入 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 板不工作?
注意:它应该在每个字符输入后给出一个输出。
【问题讨论】:
-
我怀疑你的代码可能有问题。
-
你确定你的 arduino 在
/dev/ttyUSB0吗?串行监视器是否在 Arduino IDE 中打开(打开时不能读/写)?将if(file == -1)更改为if(file == NULL)。什么是arduino代码?顺便说一句,您正在尝试在您的 scanf 中读取带有%c的数字(arduino 中的DEC),尝试使用%d
标签: c arduino serial-port usb