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

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

34
main.py
View File

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