mikrocontroller.net

Forum: PC-Programmierung Datenübertragung über /dev/ttyACM0


Autor: Jan Meyer (pietus3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuche auf Linux Mint 17.3 eine Datenübertragung zwischen meinem 
PC und meinem Arduino herzustellen. Dafür nutze ich die C-Standard 
Bibliothek File.

Bei meiner Datenübertragung scheint es noch zu hapern. Ich kann zwar 
Datenübertragen, aber nur unregelmäßig nicht vollständing also nicht 
sicher. Natürlich wird der Code nicht perfekt sein. Ich wollte vorallem 
Fragen, ob mein Ansatz ok ist oder ich auf einem Holzweg bin. Hier mein 
Code.

Der C-Code der auf dem PC asgeführt wird:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

int main(){
  
        FILE *fp;
     
  char bufflen[255];

     fp = fopen("/dev/ttyACM0", "r+");

  setbuf(fp,bufflen);
while(1){
     fprintf(fp, "Hey");

  fflush(fp);

  fscanf(fp,"%s",bufflen);
     printf("Received: %s", bufflen );
        sleep(100);
}
     fclose(fp);
}

Hier der QuellText von meinem Arduino
String inData;

void setup() {
    Serial.begin(9600);
   
}

void loop() {
    while (Serial.available() > 0)
    {
        char recieved = Serial.read();
        inData += recieved; 

        
        if (recieved == 'y')
        {
            Serial.print("Arduino Received: ");
            Serial.println(inData);

            inData = "";
        }
    }
}

Schonmal Vielen Dank für eure Hilfe

Pietus3

: Verschoben durch Moderator
Autor: Hannes Jaeger (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da fehlt das wichtigste: Die Verwendung von termios.

Eine der besten lesbaren Einführungen dazu findet man in

Stephen A. Rago; W. Richard Stevens: Advanced Programming in the UNIX 
Environment

Eher miese Übersichten findet man in:

https://en.wikibooks.org/wiki/Serial_Programming:U...
http://tldp.org/HOWTO/Serial-Programming-HOWTO/x56.html

Autor: Clemens L. (c_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum rufst du setbuf() auf? Mal davon abgesehen, dass der Puffer 
mindestens BUFSIZ Bytes haben muss, kannst du den Puffer dann für nichts 
anderes verwenden.

Autor: Jan Meyer (pietus3)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok vielen Dank ich les mich dann mal in termios ein.

Und ich habe setbuf aufgerufen weil ich dachte dass dies die Pufferung 
verbessern würde. Scheint dann wohl nicht so.

Danke

Autor: Noch einer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einfacher wäre, mit einem Terminalemulator wie cutecom die verschiedenen 
Parameter ausprobieren.

Falls es damit nicht stabil läuft, liegt es an der Hardware.

Wenn es läuft, mit stty die Parameter auslesen. Terminalemulator 
beenden. Am Anfang deines Programm diese Parameter wieder setzen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.