PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS232 durchschleifen



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

x-ryder
07.04.2007, 10:38
wasn das problem? nachm waitkey einfach nochn print tempbyte, #2 ^^

Maddin

Vitis
07.04.2007, 11:17
printbin #2, tempbyte ;)

x-ryder
07.04.2007, 11:55
hups ^^ geht aber auch mit

print #2, tempbyte ;

;) :P

lg maddn ^^

graffiti
07.04.2007, 21:03
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

x-ryder
07.04.2007, 21:16
printbin 2 ; 4 ; 6 ; 8 ; 10

graffiti
08.04.2007, 15:42
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