www.mikrocontroller.net

Forum: PC-Programmierung Schnitstelle (FT232) mit VB6 auslesen


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Ich habe folgendes Problem :

Nachdem die gute RS232 scheinbar langsam zum aussterben verdammt ist 
habe
ich angefangen meine Daten mit einem FT 232 RL aus dem Atmel Mega 8 
rauszuschaufeln.

Die Schnittstelle wird von XP einwandfrei erkannt und kann unter VB6 
parametriert und geöffnet werden (scheinbar ?).

Allerdings wird kein "On Comm" Event ausgelöst.

Setze ich die Baudrate auf 19200 Baud obwohl die Schnittstelle mit 9600 
Baud sendet werden zumindest Trümmer empfangen...das gleiche passiert 
bei 4800 Baud.

Ich will dazu noch sagen, daß das nicht meine erste RS232 ist und ich 
die Schnittstelle auch programmmässig viele Male problemlos auf Anhieb 
verwurstet habe.

Als Sahnehäubchen kommt noch hinzu, daß das Terminalprogramm Commtest 
von B&B die Schnittstelle einwandfrei mit 9600 Baud lesen kann.

Ein Hardwarefehler scheidet also scheinbar aus !?

Kann Irgendwer helfen ???

Autor: Manfred Becker (manib)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Michael,

das Problem liegt sicherlich an einer falsch initialisierten 
Schnittstelle.
Prüfe vor allem den Wert für RThreshold.

Hier ein VB6 Beispiel:
Private Sub Form_Load()
    With MSComm1
        'DTREnable  Legt fest oder gibt zurück, ob die Leitung "Endgerät betriebsbereit" (Data Terminal Ready, DTR) während eines Kommunikationsvorgangs aktiviert ist. Üblicherweise sendet ein Computer das Signal "Endgerät betriebsbereit" an ein Modem, um diesem mitzuteilen, daß er bereit ist, ankommende Daten zu empfangen.
        .DTREnable = False
        
        'EOFEnable  Die EOFEnable-Eigenschaft bestimmt, ob das Kommunikation-Steuerelement (MSComm) während der Eingabe auf EOF (End Of File) überprüft. Wenn ein EOF-Zeichen gefunden wird, wird die Eingabe angehalten, und das OnComm-Ereignis wird ausgelöst, wobei die CommEvent-Eigenschaft auf comEvEOF festgelegt ist.
        .EOFEnable = False
        
        'Handshaking    Legt fest oder gibt zurück, welches Handshaking-Protokoll die Hardware verwendet.
        'comNone        0 (Voreinstellung) Kein Handshaking.
        'comXOnXOff     1 XON/XOFF-Handshaking.
        'comRTS         2 RTS/CTS-Handshaking (Request To Send/Clear To Send-Handshaking).
        'comRTSXOnXOff  3 Sowohl RTS/CTS- als auch XON/XOFF-Handshaking.
        .Handshaking = comNone
        
        'InBufferSize   Legt fest und gibt zurück, wie groß der Empfangspuffer in Bytes ist.
        .InBufferSize = 1024
        
        'InputLen   Legt fest oder gibt zurück, wie viele Zeichen die Input-Eigenschaft aus dem Empfangspuffer liest.
        .InputLen = 1
        
        'InputMode  Legt den Typ der durch die Input-Eigenschaft abgerufenen Daten fest oder gibt diesen zurück.
        'comInputModeText   0 (Voreinstellung) Daten werden durch die Input-Eigenschaft als Text abgerufen.
        'comInputModeBinary 1 Daten werden durch die Input-Eigenschaft als Binärdaten abgerufen.
        .InputMode = comInputModeBinary
        
        'OutBufferSize  Legt fest und gibt zurück, wie groß (in Bytes) der Sendepuffer ist.
        .OutBufferSize = 512
        
        'ParityReplace  Legt fest und gibt zurück, welches Zeichen ein im Datenstrom entdecktes unzulässiges Zeichen ersetzt, wenn ein Paritätsfehler auftritt.
        .ParityReplace = "?"
        
        'RThreshold Legt fest und gibt zurück, wie viele Zeichen im Empfangspuffer angekommen sein sollen, bevor das Kommunikation-Steuerelement (MSComm) die CommEvent-Eigenschaft auf comEvReceive festlegt und ein OnComm-Ereignis auslöst.
        .RThreshold = 1
        
        'RTSEnable  Bestimmt, ob die Leitung "Sendeteil einschalten" (Request To Send, RTS) aktiviert werden soll bzw. aktiviert ist. Das Signal "Sendeteil einschalten" fordert die Erlaubnis an, Daten übertragen zu dürfen, und wird üblicherweise von einem Computer an ein angeschlossenes Modem gesendet.
        .RTSEnable = False
        
        'SThreshold Legt fest und gibt zurück, welche Anzahl an Zeichen unterschritten werden muß, bevor das Kommunikation-Steuerelement (MSComm) die CommEvent-Eigenschaft auf comEvSend festlegt und das OnComm-Ereignis auslöst.
        .SThreshold = 0
    End With
End Sub

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Manfred !

Ja Du hast recht!!! (auch wenn ich's nicht wirklich verstehe...wie 
peinlich...)

Die RThreshold und SThreshold Eigenschaft müssen beide auf 1 gesetzt 
werden, obwohl ich nur Daten sende. Sobald einer der Werte über 1 liegt 
gibt es Probleme.....

Der Witz :

Verbinde ich den Atmel direkt (zB. Mit einem MAX232) mit dem PC scheint
diese Einstellung nicht so wichtig zu sein und hat "nur" Einfluss auf 
die Performance der Schnittstelle. Nutze ich einen FT232, dessen Treiber 
für Windows ja auch nicht mehr als einen virtuellen COM Port zu 
Verfügung stellt muss diese Einstellung scheinbar korrekt gesetzt 
werden.

Danke für die Hilfe, Dein Beitrag hängt jetzt quasi als "Erste Hilfe" 
neben dem Rechner - man lernt scheinbar nie aus

Michael

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.