graffiti
02.04.2007, 06:08
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
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
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
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