Empfangsprobleme bei ttyAMA0

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Forum,

    ich habe einen Pi über den Uart direkt (ohne Pegelwnadler) mit einer anderen Hardware (ARM Controller) verbunden. Pins : RXD,TXD und GND. Keine Steuerung mit RTS und CTS.

    ssize_t length;
    struct termios term_attr;
    int t,Zeile,fd;
    char buf[1000];

    if ((fd = open(TERM_DEVICE, O_RDWR )) == -1)
    printf("pi UART0 nicht gefunden" TERM_DEVICE);

    term_attr.c_cflag = TERM_SPEED | CS8 | CLOCAL | CREAD;
    term_attr.c_iflag = 0;
      
    term_attr.c_oflag = 0;
    term_attr.c_lflag = 0;
    term_attr.c_iflag = IGNPAR;

    FD_ZERO(&input_fdset);
    FD_SET(fd, &input_fdset);

    if ((length = read(fd, buf, 100)) == -1)
    {
    printf("read() failed %d",piUart.Zeile);
    }
    length wird immer als 0 gelsen !

    Das senden an die externe Hardware funktioniert,
    Beim Empfang vom pi werden keine Zeichen empfangen.
    Die externe Hardware funktioniert mit einen Wind PC einwandfrei, senden und empfangen von Zeichen.

    Hat jemand einen Tipp ?
    Danke.


  • Hallo Forum,

    ich habe einen Pi über den Uart direkt (ohne Pegelwnadler) mit einer anderen Hardware (ARM Controller) verbunden. Pins : RXD,TXD und GND. Keine Steuerung mit RTS und CTS.

    ...
    Das senden an die externe Hardware funktioniert,
    Beim Empfang vom pi werden keine Zeichen empfangen.
    Die externe Hardware funktioniert mit einen Wind PC einwandfrei, senden und empfangen von Zeichen.

    Hat jemand einen Tipp ?
    Danke.

    Moin exor ...

    mal abgesehen davon, dass FDSET i.d.R. nur verwendet wird, wenn man mehrere poll() auf verschiedene fd machen will, Deine Codeschnipsel ein wenig dürftig sind (wo ist das Event-Flag für den FDSET, wo der poll() ...) vermute ich mal, dass Deine term-settings einfach nicht stimmen.

    Vielleicht hilft Dir aber das hier weiter. Das kannst Du ein wenig anpassen und dann sollte es auch für Deine Zwecke funktionieren ...

    Schönen Tag noch,
    -ds-

  • Moin exor ...

    mal abgesehen davon, dass FDSET i.d.R. nur verwendet wird, wenn man mehrere poll() auf verschiedene fd machen will, Deine Codeschnipsel ein wenig dürftig sind (wo ist das Event-Flag für den FDSET, wo der poll() ...) vermute ich mal, dass Deine term-settings einfach nicht stimmen.

    Vielleicht hilft Dir aber das hier weiter. Das kannst Du ein wenig anpassen und dann sollte es auch für Deine Zwecke funktionieren ...

    Schönen Tag noch,
    -ds-

    [font="Tahoma"]Hi dreamshader,[/font]

    [font="Tahoma"]der Fehler war eine defekte SD Karte. Das Senden ging irgendwann ebenfalls nicht mehr.[/font]
    [font="Tahoma"]Nach einsetzen einer neuen Karte und Aufspielen der Software, ging auch das Empfangen wieder.[/font]

    [font="Tahoma"]Danke für Deinen Source. [/font]
    [font="Tahoma"]Frage : hast Du auch schon mal per IRQ (asynchron) Daten über die ttyAMA0 eingelesen ?[/font]
    [font="Tahoma"]Oder hast Du dazu auch einen Tipp ?[/font]

    [font="Tahoma"]Hast Du eventuell auch schon mal an einen Web Socket in c programmiert ?[/font]

    [font="Tahoma"]Danke für Deine Antwort.[/font]
    [font="Tahoma"]:thumbs1:
    [/font]

  • [font="Tahoma"]Hi dreamshader,[/font]
    ...

    [font="Tahoma"]Frage : hast Du auch schon mal per IRQ (asynchron) Daten über die ttyAMA0 eingelesen ?[/font]
    [font="Tahoma"]Oder hast Du dazu auch einen Tipp ?[/font]

    [font="Tahoma"]Hast Du eventuell auch schon mal an einen Web Socket in c programmiert ?[/font]

    [font="Tahoma"]Danke für Deine Antwort.[/font]
    [font="Tahoma"]:thumbs1:
    [/font]


    Äääähm .... das ist asynchron über SIGIO ....
    Oder meintest Du was mit pthreads - einen für jede Richtung. Das Teil simuliert einen seriellen Drucker und muss nur empfangen.

    Was meinst Du mit Web Socket? TCP/IP Server, Client, beides?

    greetz aus der Schwiez ...
    ach Quatsch, da bin ich ja gar nicht, reimte sich nur so schön ;) ...

    ciao,
    -ds-

  • Äääähm .... das ist asynchron über SIGIO ....
    Oder meintest Du was mit pthreads - einen für jede Richtung. Das Teil simuliert einen seriellen Drucker und muss nur empfangen.

    Was meinst Du mit Web Socket? TCP/IP Server, Client, beides?

    greetz aus der Schwiez ...
    ach Quatsch, da bin ich ja gar nicht, reimte sich nur so schön ;) ...

    ciao,
    -ds-

    Mit Web Socket meine ich Kommunikation zwischen Server und Client, per TCP/IP oder UDP.
    Speziell zwischen Web Server und Browser.

    ciao
    exor

    Äääähm .... das ist asynchron über SIGIO ....
    Oder meintest Du was mit pthreads - einen für jede Richtung. Das Teil simuliert einen seriellen Drucker und muss nur empfangen.

    Was meinst Du mit Web Socket? TCP/IP Server, Client, beides?

    greetz aus der Schwiez ...
    ach Quatsch, da bin ich ja gar nicht, reimte sich nur so schön ;) ...

    ciao,
    -ds-

    Sorry, Du hast recht die SIGIO ist ein Interrupthandler.

    ciao
    exor

    Einmal editiert, zuletzt von exor (29. Juli 2013 um 08:10)

  • Moin exor,

    Webserver <-> Browser?
    Wie jetzt? Willst Du Dich da irgendwie einklinken oder selbst einen Server oder Browser schreiben?

    Zu Deiner Frage: hab' ich - Server, clients ... zum Schweinefüttern. Überwiegend TC/IP aber connectionless war auch dabei.

    Schönen Tag noch,
    -ds-


  • Moin exor,

    Webserver <-> Browser?
    Wie jetzt? Willst Du Dich da irgendwie einklinken oder selbst einen Server oder Browser schreiben?

    Zu Deiner Frage: hab' ich - Server, clients ... zum Schweinefüttern. Überwiegend TC/IP aber connectionless war auch dabei.

    Schönen Tag noch,
    -ds-

    Moin -ds-

    Datenaustausch zwischen einem Programm im Browser und einem Programm im Server über einen Web Socket.

    Dir auch einen schönen Tag.
    exor


  • Moin -ds-
    Datenaustausch zwischen einem Programm im Browser und einem Programm im Server über einen Web Socket.
    Dir auch einen schönen Tag.
    exor

    Hi exor,

    hmm .... guck vielleicht mal hier.

    Das ist zwar für was ganz anderes konzipiert, aber da findest Du imho alles was Du brauchst: Multithreading, TCP/IP server ...
    Vielleicht kannst Du da ja ein paar Codesnippets "klauen" ;) ...

    cu,
    -ds-

  • hmm .... guck vielleicht mal hier.

    Das ist zwar für was ganz anderes konzipiert, aber da findest Du imho alles was Du brauchst: Multithreading, TCP/IP server ...
    Vielleicht kannst Du da ja ein paar Codesnippets "klauen" ;) ...

    cu,
    -ds-

    Hi ds,

    danke für den Link.

    Ich will asynchron vom Web Server Prüfdaten an das Programm im Browser liefern, das dann die Daten in einem Data Grid anzeigt, ohne das der Browser alle par Sekunden beim Server nachfragt ob er neue Daten hat, wie es z.B. mit AJAX nötig wäre.

    gruß
    exor

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!