cmvr-es/python/hand_eye_calibration/libs/auxiliary.py

117 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import logging
import platform
import subprocess
import os
from datetime import datetime
import matplotlib.pyplot as plt
import re
from libs.log_setting import CommonLog
logger_ = logging.getLogger(__name__)
logger_ = CommonLog(logger_)
def ping(ip):
# 根据操作系统选择合适的 ping 命令
if platform.system().lower() == 'windows':
ping_cmd = f'ping -n 1 {ip}'
else:
ping_cmd = ["ping","-c","1",f"{ip}"]
logger_.info(f'command:{ping_cmd}')
# 执行命令并获取输出
response = subprocess.run(ping_cmd, stdout=subprocess.PIPE)
# 检查响应结果
if response.returncode == 0:
return True
else:
return False
# 主函数依次尝试ping两个IP地址
def get_ip():
ip1 = "192.168.1.18"
ip2 = "192.168.10.18"
if ping(ip1):
print(f"Successfully pinged {ip1}")
return ip1
elif ping(ip2):
print(f"Successfully pinged {ip2}")
return ip2
else:
print("Unable to ping both IP addresses")
return False
def create_folder_with_date():
# 获取当前日期格式为YYYYMMDD
today = datetime.now().strftime('%Y%m%d')
prefix_files = "eye_hand_data"
# 构建基础文件夹名称
base_folder_name = os.path.join(prefix_files,f"data{today}")
# 初始化索引和文件夹完整路径
index = 0
folder_path = base_folder_name
# 检查是否需要添加数字后缀来避免重名
while os.path.exists(folder_path):
index += 1
folder_path = f"{base_folder_name}{str(index).zfill(2)}"
# 创建文件夹
os.makedirs(folder_path)
logger_.info(f"create folder {folder_path}")
return folder_path
def popup_message(title, message):
plt.figure(figsize=(6,2))
plt.text(0.5, 0.5, f"{title}\n{message}", fontsize=12, ha='center', va='center')
plt.axis('off')
plt.show()
def find_latest_data_folder(path):
# 正则表达式匹配 "dataYYYYMMDD" 和 "dataYYYYMMDDNN"
pattern = re.compile(r'^data(\d{8})(\d*)$')
# 列出路径下所有项并筛选出符合模式的文件夹
folders = [f for f in os.listdir(path) if os.path.isdir(os.path.join(path, f)) and pattern.match(f)]
# 如果没有找到符合条件的文件夹则返回None
if not folders:
return None
print(folders)
# 使用自定义排序规则:先按日期排序,如果日期相同,则按随后的数字排序(如果存在)
folders.sort(key=lambda x: (pattern.match(x).group(1), pattern.match(x).group(2)), reverse=True)
# 返回第一个元素,即日期最大且数字最大(如果有)的文件夹名称
return folders[0]
if __name__ == "__main__":
create_folder_with_date()