Hallo
Ich hatte ja schon mal ein Problem mit dieser Funktion allerdings war da ein MAX485 beteiligt.
Aktuell stolperte ich über eine an sich nur offene TTL-Schnittstelle.
Soll heißen, +UB-RX-TX-GND sind an eine SUB-D 9pol Buchse herausgeführt um dort bei Bedarf einen Bluetooth-Dongle anzuschließen.
Das funktioniert auch fehlerfrei und erwartungsgemäß.
Nun war es aber so, dass dieser Dongle nicht angesteckt war und die Übertragungsfunktion wieder an der IsCharWaiting-Funktion scheiterte, weil diese wieder mal "meinte" es befinden sich wartende Zeichen im Buffer was aber definitiv nicht der Fall ist.
Komischerweise wird am Beginn der Sub eine Schleife korrekt durchlaufen, bleibt dann aber im Anschluss in der nachfolgenden Schleife hängen weil die Variable iTumer (die wird im IRQ herunter gezählt um einen Timeout zu realisieren) immer wieder neu gesetzt wird obwohl weder Zeichen vorhanden sind noch überhaupt Hardware angeschlossen ist.
Abhilfe hat auch hier ein Widerstand mit 10k von RX gegen GND gebracht.
Offenbar braucht die Funktion IsCharWaiting diese Maßnahme obwohl ich sicher bin, dass das in der Vergangenheit auch mit der aktuellen Schaltung ohne diesen Widerstand auch funktioniert hat.
Ist das normal und stört nur mich oder ist das noch niemand aufgefallen?
Alles anzeigen
Ich hatte ja schon mal ein Problem mit dieser Funktion allerdings war da ein MAX485 beteiligt.
Aktuell stolperte ich über eine an sich nur offene TTL-Schnittstelle.
Soll heißen, +UB-RX-TX-GND sind an eine SUB-D 9pol Buchse herausgeführt um dort bei Bedarf einen Bluetooth-Dongle anzuschließen.
Das funktioniert auch fehlerfrei und erwartungsgemäß.
Nun war es aber so, dass dieser Dongle nicht angesteckt war und die Übertragungsfunktion wieder an der IsCharWaiting-Funktion scheiterte, weil diese wieder mal "meinte" es befinden sich wartende Zeichen im Buffer was aber definitiv nicht der Fall ist.
Komischerweise wird am Beginn der Sub eine Schleife korrekt durchlaufen, bleibt dann aber im Anschluss in der nachfolgenden Schleife hängen weil die Variable iTumer (die wird im IRQ herunter gezählt um einen Timeout zu realisieren) immer wieder neu gesetzt wird obwohl weder Zeichen vorhanden sind noch überhaupt Hardware angeschlossen ist.
Abhilfe hat auch hier ein Widerstand mit 10k von RX gegen GND gebracht.
Offenbar braucht die Funktion IsCharWaiting diese Maßnahme obwohl ich sicher bin, dass das in der Vergangenheit auch mit der aktuellen Schaltung ohne diesen Widerstand auch funktioniert hat.
Ist das normal und stört nur mich oder ist das noch niemand aufgefallen?
Quellcode
- While IsCharWaiting(#2) = 1 ' Buffer leeren
- fA = WaitKey(#2)
- Wend
- .
- .
- .
- .
- If IsCharWaiting(#2) = 1 Then
- iTimer = MS_1000
- fS = ""
- fA = 0
- While iTimer <> 0 And fA <> 13 And Len(fS) < 64
- If IsCharWaiting(#2) = 1 Then
- fA = WaitKey(#2)
- If fA = 10 Then
- fA = 13
- End If
- If fA > 32 Then
- fS = fS + Chr(fA)
- End If
- lcd "X"
- iTimer = MS_1000
- End If
- Wend
- End If