From 1429e85dfc9eead7d746c00f816fe20cf6a184db Mon Sep 17 00:00:00 2001 From: Dima Date: Mon, 6 May 2024 19:32:29 +0300 Subject: [PATCH] =?UTF-8?q?[WIP]=20=D0=9F=D1=80=D0=BE=D0=B1=D1=83=D0=B5?= =?UTF-8?q?=D0=BC=20=D1=81=D1=87=D0=B8=D1=82=D0=B0=D1=82=D1=8C=20=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=BD=D1=8B=D0=B5=20=D1=81=20=D0=BF=D0=BB=D0=B0?= =?UTF-8?q?=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) 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