diff --git a/main.py b/main.py index 3b1eb98..dcc669d 100644 --- a/main.py +++ b/main.py @@ -1,23 +1,24 @@ from fastapi import FastAPI from pymodbus.client import ModbusSerialClient -import time import threading -from queue import Queue +import time -serial_port = "COM4" +serial_port = "COM5" baud_rate = 9600 modbus_client = ModbusSerialClient(method='rtu', port=serial_port, baudrate=baud_rate) -modbus_queue = Queue() +modbus_data = "0" def poll_modbus(): - while True: - if modbus_client.connect(): - response = modbus_client.read_holding_registers(address=0, count=1, unit=1) - if not response.isError(): - modbus_queue.put(response.registers[0]) - modbus_client.close() - time.sleep(1) + global modbus_data + modbus_client.connect() + while True: + response = modbus_client.read_holding_registers(0, 1, unit=1) + if not response.isError(): + modbus_data = response.registers[0] + print(modbus_data) + + threading.Thread(target=poll_modbus, daemon=True).start() @@ -25,17 +26,12 @@ app = FastAPI() @app.get("/modbus_data") async def get_modbus_data(): - if not modbus_queue.empty(): - modbus_value = modbus_queue.get() - return {"modbus_data": modbus_value} - else: - return {"error": "No data received"} + return {"modbus_data": modbus_data} @app.get("/") async def root(): - return {"message": "Welcome to Modbus with FastAPI"} - + return {"message": "Welcome to FastAPI with Modbus"} if __name__ == "__main__": import uvicorn - uvicorn.run(app, host="0.0.0.0", port=12345) + uvicorn.run(app, host="0.0.0.0", port=12345) \ No newline at end of file