- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: RS232 seltsames Verhalten....

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75

    RS232 seltsames Verhalten....

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    mal wieder ein kleines RS232-Problem über das ich seit zwei Tagen brüte...
    Über einer Konsolenanwendung in C (selbsterstelltes Programm in CodeBlocks) sende ich Zeichen, Bytes und Strings zu meinem Mikrocontroller.
    Der Mikrocontroller ist in Bascom programmiert, tut aber eigentlich nichts weiter zur Sache.
    In dem C Programm gebrauche ich die Header-Datei rs232.h.
    Kleines Schema der Programms, das auf dem PC arbeitet:

    Code:
    #include "rs232.h"
    int main(){
    unsigned char zeichen;
    int COM=2; *\Entspricht COM3\*
    if(OpenComport(COM,19200)){
    printf("COM3 nicht erreichbar!");}
    else{
    printf("COM3 aktiv!");}
    printf("Bitte ein zu sendendes Zeichen eingeben: ");
    fflush(stdin);
    scanf("%c",&zeichen);
    SendByte(COM,zeichen);
    printf("\n");
    }
    So in etwa sieht das PC-Programm aus.

    Das µC-Programm (eigentlich mit LCD Display) in BASIC als Schema:

    Code:
    $baud=19200
    Dim Empangen as Byte
    Cls
    Locate 1,1
    Lcd "Empangen:"
    Do
    If Ischarwaiting() = 1 Then
    Empangen = Inkey()
    Locate 2,1
    Lcd Empangen
    Loop
    End
    Folgendes Problem habe ich:

    Wenn ich den USB/RS232-Wandler in den USB-Port einstecke und dann ein Zeichen von meinem C-Programm in den µC schicken möchte erscheint auf meinem LCD-Display immer eine 0
    nachdem ich das Zeichen gesendet habe. Das heißt ja eigentlich, dass mein µC etwas empfangen hat, das aber nur eine 0 ist, die aus dem Puffer geholt wurde.
    Das Problem habe ich solange, bis ich ein Zeichen über das RS232-Terminal in Bascom sende. Egal ob ich eine 0,1,2,3.... sende, nachdem ich über das Terminal ein Zeichen versandt habe, kann ich auch über mein C-Programm ein Zeichen senden, welches dann korrekt auf dem LCD erscheint.
    Nach einem Neustart des Controllers bleibt das immernoch so. Wenn ich allerdings den USB/RS232 Adapter entferne und neu einstecke, kommt das selbe Problem wieder bis ich ein Zeichen über das Terminal sende.
    Ich hab so viel probiert...Hat jemand eine Idee was das ist???

    Danke! =)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Niemand eine Idee? =(

  3. #3
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Ganz schnell geschossen:
    Code:
    $baud=19200
    Dim Empangen as Byte
    Cls
    Locate 1,1
    Lcd "Empangen:"
    Do
         If Ischarwaiting() = 1 Then
              Empangen = Inkey()
              Locate 2,1
              Lcd Empangen
         End If
    Loop
    End
    Grüße
    Thomas

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Danke =)
    Aber abgesehen von den eingefügten Leerzeichen im If/Then Zweig ist das doch das gleiche Programm...Was meinst du damit?
    Gruß,
    Peter

  5. #5
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Zitat Zitat von pete1612 Beitrag anzeigen
    Danke =)
    Aber abgesehen von den eingefügten Leerzeichen im If/Then Zweig ist das doch das gleiche Programm...Was meinst du damit?
    Nein, ich habe per End If die von dir geöffnete If-Bedingung geschlossen. Mich wundert, dass dein Compiler nicht gemeckert hat...
    Grüße
    Thomas

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Nein, nein.... =) Ich habe den Code in der Pause von der Firma aus aus dem Kopf abgetippt...Dumm, dass mir so ein Fehler unterlaufen ist..
    Das End If ist natürlich mit im Code drin.. Wie gesagt, wenn ein Zeichen vom Terminal-Programm aus (also quasi per Hand) eingetippt wird, dann klappt es danach auch mit dem normalen von mir programmierten C-Programm auf dem Rechner...Bis man dann halt den USB/RS232-Adapter wieder vom Rechner trennt und neu aufsteckt...
    Sendet denn ein Terminal-Programm beim ersten Mal eine besondere Zeichenfolge oder eine Art Konfiguration..Weil mein C-Programm sendet ja nur die nackten Bytes...

  7. #7
    Erfahrener Benutzer Roboter Experte Avatar von Thomas E.
    Registriert seit
    29.12.2011
    Beiträge
    638
    Na dann...

    Zitat Zitat von pete1612 Beitrag anzeigen
    Sendet denn ein Terminal-Programm beim ersten Mal eine besondere Zeichenfolge oder eine Art Konfiguration..Weil mein C-Programm sendet ja nur die nackten Bytes...
    Soweit ich weiß nicht.
    Grüße
    Thomas

  8. #8
    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...

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

  10. #10
    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????

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. seltsames Verhalten am I2C
    Von liquidus im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 06.12.2009, 18:42
  2. Seltsames verhalten
    Von Atmelbeginne im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 6
    Letzter Beitrag: 10.12.2008, 19: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, 18:09
  4. RN Motor seltsames Verhalten
    Von User969 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 30.10.2005, 11:38
  5. Seltsames Verhalten Schrittmotorsteuerung
    Von Baumschubser im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 03.07.2005, 22:12

Berechtigungen

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

12V Akku bauen