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 ???
Hi Michael, das Problem liegt sicherlich an einer falsch initialisierten Schnittstelle. Prüfe vor allem den Wert für RThreshold. Hier ein VB6 Beispiel:
1 | Private Sub Form_Load() |
2 | With MSComm1 |
3 | '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. |
4 | .DTREnable = False |
5 | |
6 | '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. |
7 | .EOFEnable = False |
8 | |
9 | 'Handshaking Legt fest oder gibt zurück, welches Handshaking-Protokoll die Hardware verwendet. |
10 | 'comNone 0 (Voreinstellung) Kein Handshaking. |
11 | 'comXOnXOff 1 XON/XOFF-Handshaking. |
12 | 'comRTS 2 RTS/CTS-Handshaking (Request To Send/Clear To Send-Handshaking). |
13 | 'comRTSXOnXOff 3 Sowohl RTS/CTS- als auch XON/XOFF-Handshaking. |
14 | .Handshaking = comNone |
15 | |
16 | 'InBufferSize Legt fest und gibt zurück, wie groß der Empfangspuffer in Bytes ist. |
17 | .InBufferSize = 1024 |
18 | |
19 | 'InputLen Legt fest oder gibt zurück, wie viele Zeichen die Input-Eigenschaft aus dem Empfangspuffer liest. |
20 | .InputLen = 1 |
21 | |
22 | 'InputMode Legt den Typ der durch die Input-Eigenschaft abgerufenen Daten fest oder gibt diesen zurück. |
23 | 'comInputModeText 0 (Voreinstellung) Daten werden durch die Input-Eigenschaft als Text abgerufen. |
24 | 'comInputModeBinary 1 Daten werden durch die Input-Eigenschaft als Binärdaten abgerufen. |
25 | .InputMode = comInputModeBinary |
26 | |
27 | 'OutBufferSize Legt fest und gibt zurück, wie groß (in Bytes) der Sendepuffer ist. |
28 | .OutBufferSize = 512 |
29 | |
30 | 'ParityReplace Legt fest und gibt zurück, welches Zeichen ein im Datenstrom entdecktes unzulässiges Zeichen ersetzt, wenn ein Paritätsfehler auftritt. |
31 | .ParityReplace = "?" |
32 | |
33 | '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. |
34 | .RThreshold = 1 |
35 | |
36 | '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. |
37 | .RTSEnable = False |
38 | |
39 | '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. |
40 | .SThreshold = 0 |
41 | End With |
42 | End Sub |
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.