[WIP] Пробуем считать данные с платы
This commit is contained in:
parent
b31ab46c79
commit
1429e85dfc
34
main.py
34
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)
|
Loading…
Reference in New Issue
Block a user