Compare commits
9 Commits
pyLoraRFM9
...
main
Author | SHA1 | Date |
---|---|---|
|
f80676e266 | |
|
ece7a3941b | |
|
d8cae4b086 | |
|
2cae787e2a | |
|
94be82dca6 | |
|
6b8187c2a4 | |
|
a72aa16333 | |
|
549e74daff | |
|
ea3879fbde |
64
main.py
64
main.py
|
@ -1,4 +1,4 @@
|
|||
import serial, subprocess, time
|
||||
import serial, time, threading
|
||||
|
||||
import busio
|
||||
from digitalio import DigitalInOut, Direction, Pull
|
||||
|
@ -10,7 +10,7 @@ CS = DigitalInOut(board.CE1)
|
|||
RESET = DigitalInOut(board.D25)
|
||||
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
|
||||
#rfm = adafruit_rfm69.RFM69(spi, CS, RESET, 868.0)
|
||||
rfm = adafruit_rfm9x.RFM9x(spi, CS, RESET, 868.0)
|
||||
rfm = adafruit_rfm9x.RFM9x(spi, CS, RESET, 868.0, baudrate=20000000)
|
||||
|
||||
addr = '/tmp/rfmtty'
|
||||
addr_client = '/tmp/rfmtty_client'
|
||||
|
@ -20,25 +20,49 @@ cmd=['/usr/bin/socat','-d','-d','PTY,link=%s,raw,echo=0' %
|
|||
socat_proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
time.sleep(1)
|
||||
|
||||
ser = serial.serial_for_url(addr)
|
||||
print("Serieller Port: %s" % addr)
|
||||
ser = serial.Serial(addr, baudrate=baudrate)
|
||||
|
||||
def serial_port_reader(ser, rfm):
|
||||
while True:
|
||||
ser_data = bytearray()
|
||||
while ser.inWaiting() > 0 and len(ser_data) <= packet_len:
|
||||
recieved_byte = ser.read(1)
|
||||
ser_data += recieved_byte
|
||||
if ser_data == b'':
|
||||
pass
|
||||
else:
|
||||
print(f'Received serial data: {ser_data}')
|
||||
rfm.send(ser_data)
|
||||
|
||||
def serial_port_writer(ser, rfm):
|
||||
while True:
|
||||
packet = None
|
||||
packet = rfm.receive()
|
||||
if packet is None:
|
||||
pass
|
||||
else:
|
||||
print(f'Received lora RSSI: {rfm.last_rssi} SNR: {rfm.last_snr} data: {packet}')
|
||||
ser.write(packet)
|
||||
|
||||
|
||||
while True:
|
||||
packet = None
|
||||
packet = rfm.receive()
|
||||
ser_data = bytearray()
|
||||
while ser.inWaiting() > 0 and len(ser_data) <= 252:
|
||||
recieved_byte = ser.read(1)
|
||||
ser_data += recieved_byte
|
||||
if ser_data == b'':
|
||||
baudrate = 115200
|
||||
packet_len = 251
|
||||
|
||||
reader_thread = threading.Thread(target=serial_port_reader, args=(ser,rfm), daemon=True)
|
||||
reader_thread.start()
|
||||
writer_thread = threading.Thread(target=serial_port_writer, args=(ser,rfm), daemon=True)
|
||||
writer_thread.start()
|
||||
|
||||
try:
|
||||
while True:
|
||||
pass
|
||||
else:
|
||||
print(f'Received serial data: {ser_data}')
|
||||
rfm.send(ser_data)
|
||||
if packet is None:
|
||||
pass
|
||||
else:
|
||||
print(f'Received lora byte: {packet}')
|
||||
ser.write(packet)
|
||||
|
||||
socat_proc.kill()
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("Programm durch Benutzer unterbrochen.")
|
||||
|
||||
finally:
|
||||
ser.close()
|
||||
reader_thread.join()
|
||||
writer_thread.join()
|
|
@ -0,0 +1,51 @@
|
|||
import socket
|
||||
import random
|
||||
import string
|
||||
import time
|
||||
|
||||
def generate_random_data(size):
|
||||
return ''.join(random.choices(string.ascii_letters + string.digits, k=size)).encode('utf-8')
|
||||
|
||||
def start_client():
|
||||
# Definiere Host und Port
|
||||
host = '127.0.0.1'
|
||||
port = 12345
|
||||
|
||||
while True:
|
||||
# Erstelle einen Socket
|
||||
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
try:
|
||||
# Verbinde zum Server
|
||||
client_socket.connect((host, port))
|
||||
print(f"Connected to {host}:{port}")
|
||||
|
||||
# Generiere eine zufällige Bytefolge
|
||||
data_to_send = generate_random_data(50)
|
||||
|
||||
# Sende die Daten an den Server
|
||||
client_socket.sendall(data_to_send)
|
||||
print(f"Sent data: {data_to_send.decode('utf-8')}")
|
||||
|
||||
# Empfange die Antwort
|
||||
received_data = client_socket.recv(1024)
|
||||
print(f"Received data: {received_data.decode('utf-8')}")
|
||||
|
||||
# Überprüfe, ob die Antwort die gesendeten Daten sind
|
||||
if received_data == data_to_send:
|
||||
print("Server response matches the sent data.")
|
||||
else:
|
||||
print("Server response does not match the sent data.")
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
|
||||
finally:
|
||||
# Schließe die Verbindung zum Server
|
||||
client_socket.close()
|
||||
|
||||
# Warte für eine kurze Zeit, bevor die nächste Anfrage gesendet wird
|
||||
time.sleep(2)
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_client()
|
|
@ -0,0 +1,35 @@
|
|||
import socket
|
||||
|
||||
def start_server():
|
||||
# Definiere Host und Port
|
||||
host = '127.0.0.1'
|
||||
port = 12345
|
||||
|
||||
# Erstelle einen Socket
|
||||
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
|
||||
# Binde den Socket an Host und Port
|
||||
server_socket.bind((host, port))
|
||||
|
||||
# Warte auf Verbindungen
|
||||
server_socket.listen()
|
||||
|
||||
print(f"Server listening on {host}:{port}...")
|
||||
|
||||
while True:
|
||||
# Warte auf eine Verbindung
|
||||
client_socket, client_address = server_socket.accept()
|
||||
print(f"Connection from {client_address}")
|
||||
|
||||
# Empfange und sende Daten zurück
|
||||
data = client_socket.recv(1024)
|
||||
print(f"Received data: {data.decode('utf-8')}")
|
||||
|
||||
# Sende die erhaltenen Daten zurück
|
||||
client_socket.sendall(data)
|
||||
|
||||
# Schließe die Verbindung zum Client
|
||||
client_socket.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
start_server()
|
Loading…
Reference in New Issue