Compare commits

...

9 Commits

3 changed files with 130 additions and 20 deletions

64
main.py
View File

@ -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()

51
test_client.py Normal file
View File

@ -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()

35
test_server.py Normal file
View File

@ -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()