58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
#python d:\Антоше\Универ\Гит\Software_and_hardware\Версия_3.0\Server.py
|
||
|
||
|
||
import serial
|
||
import serial.tools.list_ports
|
||
import minimalmodbus
|
||
from flask import Flask, jsonify, render_template
|
||
|
||
app = Flask(__name__)
|
||
|
||
def find_arduino_port():
|
||
ports = list(serial.tools.list_ports.comports())
|
||
for port in ports:
|
||
if "Arduino" in port.description or "CH340" in port.description:
|
||
return port.device
|
||
return None
|
||
|
||
# Настройки порта
|
||
port = find_arduino_port() # Укажите порт, к которому подключен Arduino
|
||
slave_id = 1 # ID устройства (адрес Arduino)
|
||
baudrate = 9600
|
||
timeout = 1 # Время ожидания в секундах
|
||
|
||
if port is None:
|
||
print("Arduino не подключено или не найдено")
|
||
else:
|
||
print(f"Подключено к порту: {port}")
|
||
|
||
|
||
|
||
@app.route('/')
|
||
def index():
|
||
return render_template('index.html') # Отдача HTML файла
|
||
|
||
# Настроим модбас клиента
|
||
client = minimalmodbus.Instrument(port, slave_id) # Создаем объект клиента Modbus
|
||
client.serial.baudrate = baudrate # Устанавливаем скорость
|
||
client.serial.timeout = timeout # Время ожидания ответа
|
||
client.mode = minimalmodbus.MODE_RTU # Используем RTU
|
||
|
||
@app.route('/status', methods=['GET'])
|
||
def get_status():
|
||
try:
|
||
# Чтение 4 регистров с адреса 0
|
||
result = client.read_registers(0, 1, functioncode=3)
|
||
pin_state = result[0] # Состояние пина
|
||
return jsonify({
|
||
'port': port,
|
||
'pinState': pin_state
|
||
})
|
||
except minimalmodbus.NoResponseError:
|
||
return jsonify({'error': 'Нет ответа от устройства'})
|
||
except Exception as e:
|
||
return jsonify({'error': str(e)})
|
||
|
||
if __name__ == '__main__':
|
||
app.run(host='0.0.0.0', port=5000)
|