From 9ff5347b05d430f941b053d4acccc7076b3e7b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=AD=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D0=BE=D0=BC=D0=BE=D0=B2?= Date: Fri, 14 Jun 2024 19:31:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=A1=D0=9F=D0=95=D0=A5!!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 90 ++++++++++++++++++++++++--------------------- project/project.ino | 15 ++++---- 2 files changed, 57 insertions(+), 48 deletions(-) diff --git a/main.py b/main.py index 7be9fa6..e005588 100644 --- a/main.py +++ b/main.py @@ -1,46 +1,54 @@ -from fastapi import FastAPI +from fastapi import FastAPI from pymodbus.client import ModbusSerialClient -import threading -import time +import threading +import time import logging +import sys -serial_port = "COM6" -baud_rate = 9600 -modbus_client = ModbusSerialClient(serial_port, baudrate=baud_rate) -modbus_data = "0" +serial_port = "COM6" +baud_rate = 9600 +modbus_client = ModbusSerialClient(serial_port, baudrate=baud_rate) +modbus_data = "0" -logging.basicConfig() -log = logging.getLogger() -log.setLevel(logging.DEBUG) +# logging.basicConfig() +# log = logging.getLogger() +# log.setLevel(logging.DEBUG) -def poll_modbus(): - global modbus_data - modbus_client.connect() - while True: - try: - response = modbus_client.read_discrete_inputs(10001, 1, slave=1) - #print(response) - - if not response.isError(): - modbus_data = response.registers[0] - print(modbus_data) - except: - pass - - - -threading.Thread(target=poll_modbus, daemon=True).start() - -app = FastAPI() - -@app.get("/modbus_data") -async def get_modbus_data(): - return {"modbus_data": modbus_data} - -@app.get("/") -async def root(): - return {"message": "Welcome to FastAPI with Modbus"} - -if __name__ == "__main__": - import uvicorn - uvicorn.run(app, host="0.0.0.0", port=12345) \ No newline at end of file + +def poll_modbus(): + global modbus_data + while True: + try: + modbus_client.connect() + time.sleep(3.0) + response = modbus_client.read_discrete_inputs(0, 1, slave=1) + #print(response.bits[0]) + + if not response.isError(): + #modbus_data = response.registers[0] + modbus_data = response.bits[0] + print(modbus_data) + + except: + pass + + +threading.Thread(target=poll_modbus, daemon=True).start() + +app = FastAPI() + + +@app.get("/modbus_data") +async def get_modbus_data(): + return {"modbus_data": int(modbus_data)} + + +@app.get("/") +async def root(): + return {"message": "Welcome to FastAPI with Modbus"} + + +if __name__ == "__main__": + import uvicorn + + uvicorn.run(app, host="0.0.0.0", port=12345) diff --git a/project/project.ino b/project/project.ino index e927247..455d895 100644 --- a/project/project.ino +++ b/project/project.ino @@ -15,14 +15,15 @@ void setup() { ; mb.config (9600); + mb.addIsts(0); } void loop() { - // mb.setIsts(0, digitalRead(pinToRead)); - // mb.task(); - int r = Serial.read(); - if (r >= 0){ - Serial.write(r); - Serial.write(r); - } + mb.setIsts(0, digitalRead(pinToRead)); + mb.task(); + // int r = Serial.read(); + // if (r >= 0){ + // Serial.write(r); + // Serial.write(r); + // } } \ No newline at end of file