@@ -23,7 +23,7 @@ def __init__(self, address: str = None, msg: str = None):
2323
2424 def from_string (self , message_string : str ):
2525 self .address = message_string [:4 ]
26- self .msg = message_string [5 :]
26+ self .msg = message_string [4 :]
2727 print ("{}: {}" .format (self .address , self .msg ))
2828
2929 def to_string (self ):
@@ -73,6 +73,9 @@ def __init__(self):
7373 self .serial_worker = serial .threaded .ReaderThread (self .ser , self )
7474 self .serial_worker .start ()
7575
76+ # set the not busy
77+ self .device_busy : bool = False
78+
7679 # serial buffer
7780 self .buffer = bytearray ()
7881 self .transport = None
@@ -136,6 +139,12 @@ def handle_packet(self, packet: bytes):
136139
137140 print (incoming_packet )
138141
142+ # set device busy state
143+ if incoming_packet == "AT,SENDING" :
144+ self .device_busy = True
145+ if incoming_packet == "AT,SENDED" :
146+ self .device_busy = False
147+
139148 # check if packet is a message
140149 if incoming_packet [:2 ] == "LR" :
141150 msg : Message = Message (
@@ -162,18 +171,20 @@ def send_message(self, msg: str, dest_address: str = "FFFF") -> None:
162171 :param msg: messages
163172 :param dest_address: address
164173 """
174+ self .wait_till_device_is_ready ()
175+ print ("{}: {}" .format (dest_address , msg ))
165176 time .sleep (0.1 )
166177 self .ser .write ("AT+DEST={}\r \n " .format (dest_address ).encode ())
167178 time .sleep (0.1 )
168179 self .ser .write ("AT+SEND={}\r \n " .format (len (msg )).encode ())
169180 time .sleep (0.1 )
170181 self .ser .write ("{}\r \n " .format (msg ).encode ())
171- time .sleep (2 )
172182
173183 def add_messages_to_queue (self , address : str , msg : str ):
174184 self .message_queue .append (Message (address = address , msg = msg ))
175185
176186 def send_rti (self ):
187+ self .wait_till_device_is_ready ()
177188 print ("send RTI: {}" .format (datetime .datetime .now ()))
178189 time .sleep (0.1 )
179190 self .ser .write ("AT+DEST=FFFF\r \n " .encode ())
@@ -185,6 +196,10 @@ def send_rti(self):
185196 # set time for next RTI broadcast
186197 self .next_rti_broadcast : float = time .time () + random .randint (30 , 61 )
187198
199+ def wait_till_device_is_ready (self ):
200+ while self .device_busy :
201+ time .sleep (0.1 )
202+
188203 def run (self ):
189204 """ main threat to send RTI & messages """
190205 while self .active :
@@ -218,6 +233,5 @@ def run(self):
218233 message : Message = Message ()
219234 message .from_string (message_queue [1 ].decode ("utf-8" ))
220235 self .lora_daemon .message_queue .append (message )
221- print (message .to_string ())
222236 except TypeError :
223237 continue
0 commit comments