fand ich ein Tutorial für Daten zu einer Arduino-Board hier schreiben: https://salilkapur.wordpress.com/2013/03/08/communicating-with-arduino-using-c/Wie liest man Daten von Arduino Board zu PC mit C?
Der Code file = fopen("/dev/ttyUSB0","w+");
verwendet den Port für den Lese-/Schreibvorgang zu öffnen, und verwendet fprintf
Daten an das Gerät zu schreiben. Aber als ich versuchte, mit fscanf
die Daten aus dem Arduino (ich verwendete Serial.print
zum Schreiben der Daten zurück auf den PC von der Arduino Ende, und die Daten wurden als DEC
formatiert), es funktioniert nicht.
Ich kann die Ausgabe mit dem seriellen Monitor in der Arduino IDE sehen, aber ich bin nicht in der Lage, die Ausgabe in meinem C-Programm Ausgabe anzuzeigen. Warum funktioniert es nicht und was muss ich tun, damit es funktioniert?
Das Programm wurde in Ubuntu ausgeführt.
Das ist mein C-Code, der auf dem PC laufen soll:
#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);
}
Ich habe auch versucht, einige Variationen wie unter Verwendung von %d
statt %c
, int
anstelle von char und fflush
verwenden. Ich weiß nicht, warum es nicht funktioniert. Könnte es sein, dass mein Arduino-Board nicht funktioniert?
Hinweis: Es soll nach jeder Zeicheneingabe eine Ausgabe geben.
Ich vermute, es könnte ein Problem in Ihrem Code. – Lundin
Sind Sie sicher, dass Ihr Arduino auf '/ dev/ttyUSB0' steht? Ist der serielle Monitor in der Arduino IDE geöffnet (Sie können nicht lesen/schreiben, wenn es ist)? Ändern Sie 'if (file == -1)' in 'if (file == NULL)'. Was ist der Arduino-Code? Übrigens, Sie versuchen eine Zahl ('DEC' in Arduino) mit einem'% c' in Ihrem scanf zu lesen, versuchen Sie es mit '% d' – Rolbrok