Also mein Projekt ist noch nicht ganz fertig aber funktioniert soweit:
Der Sender startet eine Anfrage an den entsprechenden Slave.
Also wenn der MASTER von Slave1 den Strom wissen will sieht das so aus:
Print "#S1,Strom"
__________________________________________________ __________
Der Empfang ist etwas aufwändiger:
zuerst wird nachgesehen ob die empfangene Nachricht auch für diesen slave ist. Als nächstes wird nachgesehen was der Master wisssen will: zb. Strom. Dann wird gesendet: von (Slave1) was (Strom) und natürlich der Wert, der ja die eigentliche Anfrage ist Da das Programm noch im test ist wird alles auf LCD ausgegeben also nicht verwirren lassen. Zur Reichweite kann ich noch nichts sagen. zur Zeit habe ich fliegnde verdrahtung mit 1m klingeldraht und die µC direkt verbunden also auf 5V Pegel und ein Max232 zur kontrolle am PC.
Code:
Main:
'auf Empfang reagieren:
If E_flag = 4 Then 'Empfangsstring komplett
If Slave = "S1" Then 'wenn Daten für Slave1
Select Case Parameter
Case "Strom" : Print "#S1,Strom:" ; Strom
Locate 1 , 1
Lcd "S..." ; Slave ; "," ; Parameter ; ":" ; Strom
Case "Volt" : Print "#S1,Volt:" ; Volt
Locate 1 , 1
Lcd "S..." ; Slave ; "," ; Parameter ; ":" ; Volt
Case Else : Print "Err."
End Select
End If
'Daten auf jedenfall löschen
Slave = "" 'Slave löschen
Parameter = "" 'Parameter löschen
Wert = "" 'Wert löschen
E_flag = 0 'Empfang neu setzen
End If
goto Main
'_________
Onrxd:
E_byte = Udr
Select Case E_byte
Case 35 : E_flag = 1 '"#" = Slave wird gesendet
Case 44 : E_flag = 2 '"," = Parameter kommt
Case 58 : E_flag = 3 '":" =
Case 13 : E_flag = 4 '"ENTER" = Empfang komplett
Case Else : If E_flag = 1 Then Slave = Slave + Chr(e_byte)
If E_flag = 2 Then Parameter = Parameter + Chr(e_byte)
If E_flag = 3 Then Wert = Wert + Chr(e_byte)
End Select
Der Master hat natürlich auch eine so ähnliche Empfangsprogrammierung - logisch sonst könnte er ja die eigene Anfrage an den Slave nicht empfangen.
Das meiste davon kannst du ja weglassen, da du ja nur in eine Richtung senden möchtest
viel Erfolg,
Tobias
Lesezeichen