From 0921848fbea71cfd37193e7734b827baff6d0804 Mon Sep 17 00:00:00 2001 From: Hua Haiming <840473807@qq.com> Date: Sun, 11 May 2025 21:08:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0NMR=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unilabos/devices/NMR/NMR.py | 61 ++++++++++++++++++++++++++++++++ unilabos/devices/NMR/NMR_test.py | 49 +++++++++++++++++++++++++ unilabos/devices/NMR/__init__.py | 0 3 files changed, 110 insertions(+) create mode 100644 unilabos/devices/NMR/NMR.py create mode 100644 unilabos/devices/NMR/NMR_test.py create mode 100644 unilabos/devices/NMR/__init__.py diff --git a/unilabos/devices/NMR/NMR.py b/unilabos/devices/NMR/NMR.py new file mode 100644 index 0000000..2b105cc --- /dev/null +++ b/unilabos/devices/NMR/NMR.py @@ -0,0 +1,61 @@ +import os +import time +import pandas as pd +import json +import shutil +import sys +import time + +# define class ATR30007 +# this class is used to control the ATR30007 Raman workstation + +class NMR_400: + def __init__(self): + self.machine = None + + def start_NMR(self, user: str = "admin", holder: int = 1, + name: str = "Samplename1", expno: int = 1, + solvent: str = "D2O", experiment: str = "PROTON16", + title: str = "test_1H", save_root: str = None,): + #打开仪器 + content = f"""USER {user} +HOLDER {holder} +NAME {name} +EXPNO {expno} +SOLVENT {solvent} +EXPERIMENT {experiment} +TITLE {title} +END +""" + # 生成文件名(当前日期) + filename = datetime.now().strftime("%Y%m%d%H%M") + ".txt" + + # 创建输出目录(如果不存在) + os.makedirs(save_root, exist_ok=True) + + # 写入文件 + filepath = os.path.join(save_root, filename) + with open(filepath, "w") as f: + f.write(content) + + print(f'文件{filename}保存到{save_root}') + + def NMR_cmd(self, command: str): + print(f"接收到命令: {command}") + # replace !=! to " + command = command.replace("!=!", "\"") + command = command.replace('\\', '\\\\') + command = command.replace("True", "true").replace("False", "false") + try: + cmd_dict = json.loads(command) + print(f"命令参数: {cmd_dict}") + # 解析命令参数 + save_root = cmd_dict.get("save_root", r"D:\UniLab\results\250414") + # FIXME: use EIS for test. Add parameter for other tests + + self.start_NMR(**cmd_dict) # , file_name=file_name, save_root=save_root + print(f"实验完成,数据已保存到 {save_root}") + except Exception as e: + print(f"命令执行失败: {e}") + raise f"error: {e}" + \ No newline at end of file diff --git a/unilabos/devices/NMR/NMR_test.py b/unilabos/devices/NMR/NMR_test.py new file mode 100644 index 0000000..55c5e7f --- /dev/null +++ b/unilabos/devices/NMR/NMR_test.py @@ -0,0 +1,49 @@ +import os +from datetime import datetime + +def generate_experiment_file( # 必填参数:输出路径 + user: str = "admin", # 默认值参数 + holder: int = 1, # 默认值参数 + name: str = "Samplename1", # 默认值参数 + expno: int = 1, # 默认值参数 + solvent: str = "D2O", # 默认值参数 + experiment: str = "PROTON16", # 默认值参数 + title: str = "test_1H", + save_root: str = None, # 默认动态生成 +): + + # 生成文件内容 + content = f"""USER {user} +HOLDER {holder} +NAME {name} +EXPNO {expno} +SOLVENT {solvent} +EXPERIMENT {experiment} +TITLE {title} +END +""" + # 生成文件名(当前日期) + filename = datetime.now().strftime("%Y%m%d%H%M") + ".txt" + + # 创建输出目录(如果不存在) + os.makedirs(save_root, exist_ok=True) + + # 写入文件 + filepath = os.path.join(save_root, filename) + with open(filepath, "w") as f: + f.write(content) + + return filepath + +# 使用示例 + +generate_experiment_file( + user="chem_user", + holder=1, + name="MySample", + expno=2, + solvent="CDCl3", + experiment = "PROTON16", + save_root=r"D:\Uni-lab\NMR", +) + diff --git a/unilabos/devices/NMR/__init__.py b/unilabos/devices/NMR/__init__.py new file mode 100644 index 0000000..e69de29