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
|
import busio
|
||||||
from digitalio import DigitalInOut, Direction, Pull
|
from digitalio import DigitalInOut, Direction, Pull
|
||||||
|
@ -10,7 +10,7 @@ CS = DigitalInOut(board.CE1)
|
||||||
RESET = DigitalInOut(board.D25)
|
RESET = DigitalInOut(board.D25)
|
||||||
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
|
spi = busio.SPI(board.SCK, MOSI=board.MOSI, MISO=board.MISO)
|
||||||
#rfm = adafruit_rfm69.RFM69(spi, CS, RESET, 868.0)
|
#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 = '/tmp/rfmtty'
|
||||||
addr_client = '/tmp/rfmtty_client'
|
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)
|
socat_proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||||
time.sleep(1)
|
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:
|
baudrate = 115200
|
||||||
packet = None
|
packet_len = 251
|
||||||
packet = rfm.receive()
|
|
||||||
ser_data = bytearray()
|
reader_thread = threading.Thread(target=serial_port_reader, args=(ser,rfm), daemon=True)
|
||||||
while ser.inWaiting() > 0 and len(ser_data) <= 252:
|
reader_thread.start()
|
||||||
recieved_byte = ser.read(1)
|
writer_thread = threading.Thread(target=serial_port_writer, args=(ser,rfm), daemon=True)
|
||||||
ser_data += recieved_byte
|
writer_thread.start()
|
||||||
if ser_data == b'':
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
pass
|
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