我在这里找到了一个将数据写入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板无效吗?
注意:它应该在每个字符输入后给出一个输出。
答案 0 :(得分:0)
您无法阅读任何内容的原因是当您致电
时 file = fopen("/dev/ttyUSB0","w+");
the arduino is reset,启动需要1-2秒。出于某种原因,这种阅读不尽相同。
在sleep(2);
旁边添加fopen
可能会有效。