Naja, wie liest du die Daten ? Lass gucken !
Habe ein problem mit dem Empfangen von einem String.
Ich bekomme immer nur zwei zeichen. das heisst er liest nur 2Bytes und der rest ist irgendwo verschwunden.
habe folgendes drin aber es funktioniert nicht.
Config serialin = buffered, size = 20
er hat trotzdem immer nur 2 zeichen im Buffer, obwohl ich ihm ja platz für 20 gebe. brauch übrigens maximal 5zeichen = 5Byte
habe ich noch etwas vergessen??
Naja, wie liest du die Daten ? Lass gucken !
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
mit inkey() lese ich aus, aber ich habe immer nur 2 zeichen auch wenn ich mehr sendeCode:Config Serialin = Buffered , Size = 20 Enable Interrupts . . If Ischarwaiting() <> 0 Then Zeichen = Inkey() If Zeichen = 10 Then B = 1 Buf = "" Else If B = 1 Then If Zeichen = 13 Then Buf = Buf + Chr(0) Eingang = Val(buf) B = 0 Print "eingang" ; Eingang; Else Buf = Buf + Chr(zeichen) End If End If End If End If
ich denke irgdenwie akzeptiert er meine Buffergrösse nicht, weil ich kann dort angeben was ich will er hat immer nur 2Byte
edit:
kann es möglicherweise daran liegen?
The M32 USART may not work with Bascom Buffered support as the Mega32
has a 2 byte FIFO buffer. I have never used it , but maybe another group
member have tested it
Ohne Buffer mit timeout ein Auszug was läuft:
GentoCode:Dim Char_vergleich(20) As Byte Dim Char_da(20) As Byte Const Timeoutfaktor=100 '100mSek Charzaehler = 0 'Prüfen auf Startstring und IO / Startstring einlesen Timeout = 0 Do Hole_char = Ischarwaiting() 'RS232 Port auf Daten abfragen If Hole_char = 0 Then 'keine Daten da Waitms 1 Incr Timeout Else 'Daten da Timeout = 0 Hole_char = Inkey() 'Byte auslesen Incr Charzaehler 'Feldzähler hoch Char_da(charzaehler) = Hole_char If Char_da(charzaehler) <> Char_vergleich(charzaehler) Then Charzaehler = 100 'Vergleiche Byte im Startsting End If If Timeout > Timeoutfaktor Then Exit Do 'Timeout abfragen Loop Until Charzaehler > 8 'Schleife bis alle 8 Byte vom Startstring ausgelesen oder Timeout If Charzaehler <> 9 Then Datenuebergabe_rs232 = Fehler_im_startstring '10 Exit Sub End If
Lesezeichen