- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 17 von 17

Thema: RS232 seltsames Verhalten....

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Anzeige

    LiFePo4 Akku selber bauen - Video
    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.

  2. #12
    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!!! =)

  3. #13
    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....

  4. #14
    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.

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Wenn Du es Dir leicht machen willst. Ich verwende diese fertige Cpp-Klasse für die Kommunikation der RS232: http://www.hackchina.com/en/cont/16482

    Sie lässt sich sehr leicht einbinden und bedienen, ist aber c++. Vielleicht trotzdem hilfreich für Dich?!

    PS: Du brauchst aus dem Zip im Prinzip nur die Serial.cpp und Serial.h - der Rest hilft zum testen

    Einbindung:
    #include "Serial.h"
    CSerial MySerial;
    ...
    //Call
    MySerial.Open(4,38400); // COM,Boud

    CString test = "xyz";
    MySerial.SendData(test,test.GetLength());

    char EOL[] = {0x0d};
    MySerial.SendData(EOL,1); // Für Bascom
    MySerial.Close();

    Im Serial.cpp wird dann bei Bedarf noch 8N1 umgestellt, ist aber default 8N1
    wsprintf( szComParams, "COM%d:%d,n,8,1, nPort,nBaud);

    Lesen dann respektive> int CSerial::ReadData(void xbuffer, int limit);

    Auf share würde ich den COM-Port nicht stellen, sondern wie gesagt in Deinem Programm die Ausgabe anzeigen lassen - notfalls im Debugger. Also ohne zusätzliches Terminal Programm.
    Geändert von pin117 (19.04.2012 um 13:19 Uhr)

  6. #16
    Benutzer Stammmitglied
    Registriert seit
    09.01.2012
    Beiträge
    75
    Danke Dir pin, nett dass du mir den Vorschlag machst!
    Ich habe den Fehler gefunden! Und jetzt wird es interessant: Der Fehler lag weder an meinem Programm, noch an meinem µC oder am Terminal oder iwelchen Zeichen, die nicht gesendet werden.
    Achtung:
    Mit rs232.h bekommt man eine wirklich ausreichende Library+Header für die Ansteuerung der COM. Sehr einfach und daher leicht anzuwenden.
    ABER: Die Initalisierung des Ports klappt nicht, denn in der rs232.c - Datei, die von rs232.h verwendet wird und die Funktionen enthält, steckt ein Bug!
    Der Fehler steckt zw. Zeile 280 und 300, bei der Definition der Funktion int OpenComport(COM,baud)
    Hab gerade die Datei nicht zur Hand, da ich nicht zuhause bin, aber hier ein ungefährer Auszug:
    Code:
    /*GANZ VIEL CODE/*
    if(OpenComport(com,baud)){
    printf("unable to open comport");
    return(1);}
    else{
    return(0);}
    /*GANZ VIEL CODE/*
    Das return(0) muss weg!!!
    Wenn das weg ist, dann wird die Funktion auch weiter abgearbeitet und nicht kurz vor BuildCommDCBA() abgebrochen.

    Naja =) Jetzt klappts!

    Danke euch allen!!!

  7. #17
    Benutzer Stammmitglied
    Registriert seit
    08.04.2012
    Beiträge
    37
    Das return(x) ist ja nur für die Fehlerbehandlung in Deinem Call. Also der Rückgabewert, mit dem Du prüfen kannst, ob OpenComport(com,baud) geklappt hat oder nicht. Wenn er 0 postet, dann weil es nicht geklappt hat. Wenn Du die 0 löscht klappt es aber immer noch nicht bzw. macht die nichts, ausser Dich informieren?!?

Seite 2 von 2 ErsteErste 12

Ä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
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad