-
RS232 durchschleifen
Hallo, wer kann mir helfen
ich empfange verschiedene Strings über die serielle Schnittstelle (COMD.0) und immer wenn ein Zeichenempfang mit beginnend 35 kommt wird es vom attiny2313 bearbeitet (das funktioniert auch)
es soll aber zusätzlich alles was an
Open "COMD.0:9600,8,n,2" For Input As #1
ankommt, an
Open "COMD.2:9600,8,n,2" For Output As #2
durchgeschleift werden ohne Überprüfung
Daten die z.B ankommen können 27 255 64 3 0
kann mir bitte jemand einen Tip für die Routine geben
der Sinn darin liegt, von einem vorherigen MC werden Daten ausgesendet, ich möchte aber noch zusätzliche Signale von Tastern mit einschleusen in die RS232
Code:
Do ' Mainloop, hier dreht der Controller seine Runden
Tempbyte = Waitkey(#1) ' ware auf Zeichenempfang über Soft-UART
Gosub Zeichenempfang ' gehe zu Zeichenverarbeitung
If Flag = 1 Then ' Protokoll ist komplett ?
Gosub Protox
Flag = 0 ' Protokollflag wieder rücksetzen
Zeiger = 1
Elseif Flag = 2 Then ' Protokoll ist komplett ?
Gosub Protoy ' Protokoll abarbeiten
Flag = 0 ' Protokollflag wieder rücksetzen
Zeiger = 1 ' zeiger für Speicherung des nächsten eingehenden Zeichens rücksetzen
End If
Loop
Zeichenempfang:
'Tempbyte = Udr
Protokoll(zeiger) = Tempbyte ' empfangenes Byte in Protokoll ablegen
If Tempbyte = 0 Then ' Protokollende erreicht
Zeiger = 1 ' Protokollzeiger zurücksetzen
End If
If Protokoll(1) = 27 Then ' Wenn Protokollbeginn erkannt
If Tempbyte = 0 Then ' und aktuell empfangenes Byte ist Protokollende
Flag = 1 ' Protokollabarbeitung veranlassen
End If
Incr Zeiger ' sonst nächste Speicherstelle für Protokoll auswählen
Elseif Protokoll(1) = 35 Then ' Wenn Protokollbeginn erkannt
If Tempbyte = 0 Then ' und aktuell empfangenes Byte ist Protokollende
Flag = 2 ' Protokollabarbeitung veranlassen
End If
Incr Zeiger
Else
Zeiger = 1 ' Protokoll wieder von vorne beginnen
Timer0 = 0 ' Timer 0 resetten
Start Timer0 ' timer 0 starten
Enable Timer0 ' und Interrupt aktivieren
End If
Return
End
-
wasn das problem? nachm waitkey einfach nochn print tempbyte, #2 ^^
Maddin
-
-
hups ^^ geht aber auch mit
print #2, tempbyte ;
;) :P
lg maddn ^^
-
ich habe jetzt auch schon eine Lösung gefunden, nach ewigem testen und kleiner Hilfe eines Bekannten
die Hardware UART habe ich wieder verwendet und mit udr = Tempbyte durchgeschleift
weitere Signale aus dem Tiny habe ich mit printbin versendet
noch ne Frage
ich habe jetzt 5 Printbin nacheinander, geht das in einem Befehl auch ?
aktuelles im Programm:
printbin 002
printbin 004
printbin 006
printbin 008
printbin 010
-
printbin 2 ; 4 ; 6 ; 8 ; 10
-
das ist ja einfach
in der Bascom Help habe ich es nicht gefunden oder nur nicht gesehen
nur noch zur Info: ich bin Anfänger XXL, also deshalb die dummen Fragen
gruß Gerhard