我正在为 octoprint 服务器编写 opc 服务器。opc 服务器必须与 octoprint 服务器通信。一种 opc 方法是通过在 opc 客户端 gui 上传递 stl 文件的路径来发出切片过程。由于我是本节的菜鸟,我不知道如何定义输入参数的名称和类型。
inargs = []
for name, dtype in {"File Path": VariantType.String,
"Output Path": VariantType.String,
"Config File": VariantType.String,
"Auto Upload": VariantType.Boolean}.items():
# inarg = ua.Argument()
# inarg.Name = name
inargs.append(dtype)
outargs = [VariantType.String, VariantType.Boolean]
self.sliceStl: Node = self.processData.add_method(self.addrSpace, "Slice STL", self._sliceStl, inargs, outargs)
@uamethod
def _sliceStl(self, parent, filePath: str="~/Uploads/CalibrationCube.stl",
outputPath: str="~/GCODE/",
configFile: str="~/Slic3r/tevo_config.ini",
autoUpload=True,
select=False,
_print=False):
if not filePath.endswith(".stl"):
raise Exception("Slic3rError: File must have *.stl format!")
command = f"~/Slic3r/slic3r {filePath} " \
f"--load {configFile} -o {outputPath} " \
"--output-filename-format [input_filename_base].gcode"
os.system(command)
if autoUpload:
return self._uploadGcode(filePath.replace(".stl", ".gcode"), select, print)
else:
return True
当在 opc-client gui OPC Client Gui Method Form中调用 sliceStl() 时,会弹出一个带有 4 个输入字段的表单。但是它们都没有名称或类型。我希望每个输入字段都有一个名称和一个数据类型。