Files
Software_and_hardware/Сервер.py
T

80 lines
2.5 KiB
Python

from flask import Flask, jsonify
from pymodbus.client.serial import ModbusSerialClient
app = Flask(__name__)
# Настройка Modbus клиента
port_Arduino = 'COM3' # Убедитесь, что это правильный порт для вашего компьютера
baudrate = 115200
client = ModbusSerialClient(port=port_Arduino, baudrate=115200, timeout=1, stopbits=1, bytesize=8, parity='N')
# Попытка подключения к Modbus клиенту
try:
if client.connect():
print("Подключение успешно!")
else:
print("Не удалось подключиться к порту.")
except PermissionError as e:
print(f'Ошибка доступа к порту: {e}')
except Exception as e:
print(f'Ошибка подключения: {e}')
STATUS_REGISTER = 0 # Адрес регистра, где хранится статус
@app.route('/modbus-status', methods=['GET'])
def modbus_status():
try:
result = client.read_holding_registers(STATUS_REGISTER, 1)
if result.isError():
return jsonify({'error': 'Не удалось прочитать данные с Arduino'}), 500
else:
connected = bool(result.registers[0])
return jsonify({'connected': connected})
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/')
def index():
return '''
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Статус пина</title>
<style>
#status-circle {
width: 100px;
height: 100px;
border-radius: 50%;
background-color: red;
}
</style>
</head>
<body>
<div id="status-circle"></div>
<script>
function updateStatus() {
fetch('/modbus-status')
.then(response => response.json())
.then(data => {
const circle = document.getElementById('status-circle');
if (data.connected) {
circle.style.backgroundColor = 'green';
} else {
circle.style.backgroundColor = 'red';
}
});
}
setInterval(updateStatus, 1000); // Проверка статуса каждую секунду
</script>
</body>
</html>
'''
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')