我正在尝试自动运行" Teststand"来自Windows服务的脚本。 到目前为止,我已通过从命令提示符调用以下内容来完成自动化:
C:\Program Files (x86)\National Instruments\TestStand 2013\Bin>
SeqEdit.exe /runEntryPoint "Single Pass" "c:\Users\pathtofile\MyTests.seq" /quit
我使用的是Python,因此我使用子进程模块实现了这一点。它可以打开,运行,保存结果,并自行关闭。 完美!!!但是,因为它启动了Teststand GUI,所以它不能在Windows服务中工作。我甚至不需要GUI(因为我不接触它,结果存储在一个文件夹),但我似乎无法在没有它的情况下运行Teststand。
我使用win32搞乱了CreateProcessAsUser(),但我似乎无法使用任何东西。 任何人都可以在Python中提供使用上述命令从Windows服务运行Teststand序列的解决方案(Windows 10)
答案 0 :(得分:0)
On选项可以是使用TestStand API直接使用引擎运行序列。这是example from the NI Knowledge Base:
import win32com.client
tsEngine = win32com.client.Dispatch('TestStand.Engine.1')
print('TestStand %s.%s ready' % (tsEngine.MajorVersion, tsEngine.MinorVersion))
sequencePath = 'C:\\Users\\Desktop\\Sequence File 1.seq'
seqFile = tsEngine.GetSequenceFileEx(sequencePath)
execution = tsEngine.NewExecution(seqFile, "MainSequence", None, False, 0)
execution.WaitForEndEx(60000)
print(execution.ResultStatus)
tsEngine.ReleaseSequenceFileEx(seqFile, 0x4)
通过使用它,我发现要关闭它,我必须使用del
来清除对execution
和seqFile
的引用,并还要处理UIMessages以确保存在在执行结束时没有未完成的操作。