from flask import Flask, jsonify from pymodbus.client.sync import ModbusSerialClient as ModbusClient import threading app = Flask(__name__) # Настройка Modbus client = ModbusClient( port='COM4', baudrate=9600, timeout=1) client.close() client.connect() # Хранилище данных состояния пина pin_status = {"state": 0} # Функция для обновления состояния пина с помощью Modbus def read_modbus(): global pin_status while True: result = client.read_holding_registers(0, 1, unit=1) # Чтение первого регистра if result.isError(): print("Ошибка чтения данных Modbus") else: pin_status["state"] = result.registers[0] # 0 - это состояние пина (0 или 1) print(f"Регистр успешно считан: {result.registers}") # Запуск потока для чтения данных modbus_thread = threading.Thread(target=read_modbus) modbus_thread.daemon = True modbus_thread.start() # Эндпоинт для отдачи состояния пина @app.route('/state', methods=['GET']) def get_pin_state(): return jsonify(pin_status) # Главная страница для отображения круга @app.route('/') def index(): return '''
''' if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)