[WIP] Пробуем считать данные с платы

This commit is contained in:
Dima 2024-05-06 19:32:29 +03:00
parent b31ab46c79
commit 1429e85dfc

30
main.py
View File

@ -1,23 +1,24 @@
from fastapi import FastAPI from fastapi import FastAPI
from pymodbus.client import ModbusSerialClient from pymodbus.client import ModbusSerialClient
import time
import threading import threading
from queue import Queue import time
serial_port = "COM4" serial_port = "COM5"
baud_rate = 9600 baud_rate = 9600
modbus_client = ModbusSerialClient(method='rtu', port=serial_port, baudrate=baud_rate) modbus_client = ModbusSerialClient(method='rtu', port=serial_port, baudrate=baud_rate)
modbus_queue = Queue() modbus_data = "0"
def poll_modbus(): def poll_modbus():
global modbus_data
modbus_client.connect()
while True: while True:
if modbus_client.connect(): response = modbus_client.read_holding_registers(0, 1, unit=1)
response = modbus_client.read_holding_registers(address=0, count=1, unit=1) if not response.isError():
if not response.isError(): modbus_data = response.registers[0]
modbus_queue.put(response.registers[0]) print(modbus_data)
modbus_client.close()
time.sleep(1)
threading.Thread(target=poll_modbus, daemon=True).start() threading.Thread(target=poll_modbus, daemon=True).start()
@ -25,16 +26,11 @@ app = FastAPI()
@app.get("/modbus_data") @app.get("/modbus_data")
async def get_modbus_data(): async def get_modbus_data():
if not modbus_queue.empty(): return {"modbus_data": modbus_data}
modbus_value = modbus_queue.get()
return {"modbus_data": modbus_value}
else:
return {"error": "No data received"}
@app.get("/") @app.get("/")
async def root(): async def root():
return {"message": "Welcome to Modbus with FastAPI"} return {"message": "Welcome to FastAPI with Modbus"}
if __name__ == "__main__": if __name__ == "__main__":
import uvicorn import uvicorn