- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 17

Thema: RS232 seltsames Verhalten....

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Morgen früh wollte ich mir mal einen zweiten USB/RS232-Adapter besorgen und dann einmal versuchen zwei virtuelle COM-Schnittstellen an meinem PC einzurichten.
    Dann öffne ich zwei Terminal-Programme und sende Daten von dem Einen zum Anderen (COM3 zu COM4) und dann auch mal mit meinem Programm...
    Vielleicht gibt mir das Aufklärung...wenn es denn funktioniert mit den USB-Adaptern wie ich das vorhabe...
    Es sei denn jemand hat noch eine Idee. Das wäre echt toll...ist aber scheinbar ein Fehler, den scheinbar nur wieder ich habe =)
    Oder es liegt an dem Header rs232.h . Aber dann hätten ja schon Andere so ein Problem gehabt...

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Klingt als fehlt Deinem Csharp Sender ein EOL?! (0x0d)

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Hey,
    das EOL-Zeichen wird bei meinem C-Programm gar nicht verwandt, da es ja auch keinen Zeilenumbruch erzeugt.
    Was du sagst ist schon richtig, denn wenn das EOL-Zeichen nicht gesendet wird, dann kann auch eine INPUT-Anweisung in Bascom nicht erfüllt werden,
    da dieser Befehl auf EOL wartet bis das Programm im Controller weiterläuft. Mit EOL hatte ich also auch anfangs in einem anderen Programm Probleme.
    Danke trotzdem für deine Anregung.
    Ich habe mir einen zweiten USB/RS232-Adapter besorgt und einmal versucht eine Verbindung aufzubauen.
    Vorgehensweise:
    -Einstecken beider Adapter in die USB-Ports.
    -Mein C-Programm sucht sich selbstständig nach dem Start den ersten freien COM-Port (COM3)
    -Im üblichen Windows-Hyperterminal erstelle ich eine Kommunikation über COM4
    -Über das C-Programm versende ich ein Zeichen (z.B. 1,2,5,g,d,h,i, usw.) und bestätige die Eingabe mit Enter um scanf zu befriedigen.
    -Im Hyperterminal kommt nichts an.
    -Ich schließe das C-Programm und öffne das Terminal in Bascom mit Kommunikation über COM3.
    -Ich tippe auf der Tastatur auf eine Taste (z.B. 1,2,3, usw.). Bestätigung mit Enter ist hier nicht erforderlich.
    -Das Zeichen wird anstandslos im Hyperterminal angezeigt.
    -Ich öffne nun mein C-Programm und es wird wie zuvor COM3 erkannt.
    -Ich tippe ein Zeichen ein und bestätige die Eingabe mit Enter.
    -Das Zeichen erscheint wundervoll in Hyperterminal.

    Von nun an funktioniert die Kommunikation wunderbar.
    Bis ich dann den Konverter wieder vom USB-Port trenne und neu aufstecke...
    Ich stehe immernoch vor einem Rätsel...
    Kennt jemand vllt ein Terminal-Programmm, dass auch unsichtbare Zeichen wie z.B. das 0x0d nach dem Empfang anzeigt?
    Ich bin mir fast sicher, dass so ein doofes Zeichen bei der ersten Übertragung gesendet wird, welches mein C-Programm nicht sendet.
    Oder spricht das Terminal in Bascom die serielle Schnittstelle anders an????

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Mich wundert dabei eher, dass Dein Terminal irgendetwas anzeigt, denn eigentlich ist ein ECHO an der Stelle sonderbar.

    Aber auch Dein COM-Port scheint etwas durcheinander zu sein. Hast Du mal die USB-Treiber geupdatet?

    Bezüglich der Anzeige von Antworten würde ich auch grundsätzlich kein Terminal nutzen sondern möglichst in Deinem CProg immer die Werte Prüfen. Am einfachsten im Debuggermode mit Haltepunkten und dann alles anzeigenlassen (hex etc).

    Gerade das Bascom sendet 2 Bytes EOLs (und CR oder so) soweit ich mich erinnere. Das kann evt zu Problemen führen.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Okay... da hast du mich leider missverstanden. Bei Eingabe des Zeichens in das Terminal sehe ich das eingegebene Zeichen nicht in dem Terminal, wo ich es eingegeben habe. Das Zeichen sehe ich auf dem Terminal, das meinen COM-Port überwacht, an den ich das Zeichen schicke. Ein Echo gibt es dabei nicht...
    Bezüglich der Anzeige von Antworten würde ich auch grundsätzlich kein Terminal nutzen sondern möglichst in Deinem CProg immer die Werte Prüfen. Am einfachsten im Debuggermode mit Haltepunkten und dann alles anzeigenlassen (hex etc).
    Top! Gute Idee! Darauf bin ich noch gar nicht gekommen... Ich kann also einfach ein zweites Programm in C schreiben, welches dann die gesendeten Daten von meinem eigentlichen C-Programm empfängt...
    Du meinst dann z.B. so:
    Code:
     
    #include rs232.h
    int main(){
    char incoming[10]={NULL};
    int COM=3;
    while(OpenComport(COM,19200)==0){
    printf("Zeichen empangen....\n");
    PollComport(COM,&incoming,sizeof(incoming-1));
    printf("Empangenes Zeichen in hexadezimal: %x\n\n",incoming);
    }
    }
    So sollte ich doch auch alle übertragenen Zeichen sehen können, oder???
    Also auch 0x0d, etc.

    Danke für Eure Hile!!! =)

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Hallo,
    nach endloser googlei habe ich wenige Beiträge gefunden in denen Leidensgenossen ähnliche Probleme wie ich hatten.
    Der Fehler liegt nicht am übertragenen Zeichen sondern schlichtweg an der Initialisierung des COM-Ports beim ersten Benutzen.
    Mit OpenComport(COM,19200) ist es dann doch nicht getan. Das System möchte gerne noch Informationen bez. Parity,StopBits,zu übertragene Bits, etc haben.
    Die rs232.h unterstützt solche Funktionen nicht, da gesagt wird, dass die Header das System automatisch auf den Standard einteacht. (8 Bits, no parity, 1 stopbit).
    Die Windows-Library verfügt doch sicher über solch eine Funktion... Wie bekomme ich heraus, welche Funktion das ist und wie ich sie anwende...
    Ich habe iwas gelesen von GetCommDCB(), aber mein Compiler erkennt die Funktion nicht, trotz windows.h .
    Langsam wird es lästig, dabei wollte ich doch NUR einen COM in mein System einbinden.

    Bitte, ich bin um jede Hilfe dankbar! Und wenn es nur Anhaltspunkte sind....

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    "IScharwaiting()" funktioniert nur sinnvoll, wenn auch "config serialin=buffered" angegeben ist.
    Hast du das ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Ähnliche Themen

  1. seltsames Verhalten am I2C
    Von liquidus im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 06.12.2009, 17:42
  2. Seltsames verhalten
    Von Atmelbeginne im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 6
    Letzter Beitrag: 10.12.2008, 18:37
  3. Seltsames Verhalten vom ADC an RN-Control
    Von MasterFX im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 0
    Letzter Beitrag: 19.04.2008, 17:09
  4. RN Motor seltsames Verhalten
    Von User969 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 30.10.2005, 10:38
  5. Seltsames Verhalten Schrittmotorsteuerung
    Von Baumschubser im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 03.07.2005, 21:12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress