import socket
import time
import datetime
import os
HOST = "192.168.100.1"
PORT = 23
LOG_FILE = "C:/laser_time/report.csv"
IDLE_LIMIT = 3.0
os.makedirs(os.path.dirname(LOG_FILE), exist_ok=True)
def connect_to_station():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
s.connect((HOST, PORT))
s.settimeout(1)
return s
print(f"Подключаемся к {HOST}:{PORT}...")
while True:
try:
station = connect_to_station()
print("✅ Подключено. Ожидаю команды от UniCut...")
break
except Exception as e:
print(f"❌ Не удалось подключиться: {e}")
print("Повтор через 5 секунд...")
time.sleep(5)
start_time = None
last_activity = time.time()
while True:
try:
data = station.recv(4096)
now = time.time()
if data:
if start_time is None:
start_time = datetime.datetime.now()
print("▶ Резка началась:", start_time.strftime("%H:%M:%S"))
last_activity = now
print(f"[{datetime.datetime.now().strftime('%H:%M:%S')}] {len(data)} байт")
if start_time and (now - last_activity > IDLE_LIMIT):
end_time = datetime.datetime.now()
duration = end_time - start_time
with open(LOG_FILE, "a", encoding="utf-8") as f:
f.write(f"{start_time.date()};{start_time.time()};{end_time.time()};{duration.total_seconds():.1f}\n")
print("■ Резка завершена. Длительность:", duration)
start_time = None
except socket.timeout:
pass
except (ConnectionResetError, BrokenPipeError, OSError):
print("⚠️ Соединение разорвано. Пробую переподключиться...")
time.sleep(3)
while True:
try:
station = connect_to_station()
print("✅ Переподключено")
break
except:
print("❌ Станок недоступен, жду...")
time.sleep(5)
except KeyboardInterrupt:
print("\nОстановлено вручную")
break