在Python中同时使用多个程序

2024-09-27 21:28:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还比较陌生,我正在尝试编写一个脚本来自动化测试。你知道吗

工作原理: 程序A:通过串口发送命令,等待响应,然后执行下一个命令 程序B:使用TCP_客户端.exe应用程序使用子进程模块将参数(ip、端口、数据包数、大小)与应用程序一起发送到命令提示符并读取输出。你知道吗

它应该做什么:

  1. 在通过串行端口(Pyserial模块)访问的设备上启动tcp服务器===========>;程序A
  2. “发送”tcpclient.exe“…”命令提示。这将绑定套接字,然后提示我通过串行端口向设备发送更多命令。==========>;程序B
  3. 向设备发送其他命令========>;程序A
  4. 输入一个数字以继续tcpclient.exe发送数据包的下一个阶段。==========>;程序B
  5. 等待数据包被发送。程序发送一个提示,说“完成但不退出”。等待我读取设备上的数据========>;程序B
  6. 通过串口发送命令读取数据========>;程序A
  7. 回到tcpclient.exe然后退出程序。(基本上需要先打一个数字,然后再继续完成。你知道吗

你知道吗

RunSer2Command(lines2[21])
time.sleep(1)       
ls_output = subprocess.Popen(['tcpclient.exe','192.168.22.33','5000','100000','1400'],stdout=subprocess.PIPE)
time.sleep(1)
RunSer2Command(lines2[22])
RunSer2Command(lines2[23])
time.sleep(1)
ls_output = subprocess.Popen(['3'],stdout = subprocess.PIPE)
ls_output.communicate()

RunSer2Command(lines2[24])

ser2.close()

像这样的

有人能告诉我,我应该读多线程还是这个太小,不需要它? 如果是,我应该找什么?你知道吗

提前谢谢


Tags: 端口命令gt程序应用程序outputtimesleep
1条回答
网友
1楼 · 发布于 2024-09-27 21:28:31

回答我自己的问题。 简而言之,线程就可以了。这也是不必要的。子流程模块有足够的资源让我工作。我只是做得不对

RunSer2Command(lines2[21])
time.sleep(1)   
ls_output = subprocess.Popen(['tcpclient.exe','192.168.4.110','8000','10000','1400'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,bufsize=3)
time.sleep(2)
RunSer2Command(lines2[22])
RunSer2Command(lines2[23])
time.sleep(1)
ls_output.communicate(input = '3')
ls_output.wait()
RunSer2Command(lines2[24])

对于那些关心我的人来说,这条路线确实让我达到了某种程度,我要补充一点,但是我没有达到最后的状态,因为。。。我找到了更简单的路线

def start_tcp_client(cond): 
    ls_output = subprocess.Popen(['tcpclient.exe','192.168.4.110','8000','1000','1400'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,bufsize=3)
    with cond:
        cond.wait()
        ls_output.communicate(input = '3')
        ls_output.communicate()

def TCPSettings(cond):
    with cond:
        RunSer2Command(lines2[22])
        RunSer2Command(lines2[23])
        cond.notify()

    condition = threading.Condition()
    condition1 = threading.Condition()
    Client_thread=threading.Thread(name='Client_thread', target=start_tcp_client, args=(condition,))
    TCP_thread=threading.Thread(name='TCP_thread', target=TCPSettings, args=(condition,))
    RunSer2Command(lines2[21])
    time.sleep(2)   
    Client_thread.start()
    time.sleep(2)
    TCP_thread.start()
    time.sleep(1)
    Client_thread.join()
    time.sleep(10)
    RunSer2Command(lines2[24])

我还是没能解决所有的问题。似乎有一些时间问题。我会更新它一旦我得到它完美的工作。你知道吗

相关问题 更多 >

    热门问题