通过python和qtdesigner来做一个上位机软件:上位机工具发送一个拉闸指令后,下级设备会回复一个拉闸成功的响应报文。写一段python代码实现对一个设备拉闸多次,统计成功率以及拉闸的平均回复时长
时间: 2024-03-25 18:41:55 浏览: 61
用python和C语言完成,包含一个上位机界面编程和STM3232编程 上位机完成参数设置,通过串口通信将控制指令下达给STM3
好的,我可以帮您解答这个问题。首先,您需要使用Python的socket模块来实现与设备的通信。具体的代码实现如下:
```python
import socket
import time
def send_command(command):
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
host = '192.168.1.100' # 下级设备的IP地址
port = 9000 # 下级设备的端口号
client_socket.connect((host, port))
# 发送指令
start_time = time.time()
client_socket.send(command.encode())
# 接收响应
response = client_socket.recv(1024).decode()
end_time = time.time()
# 关闭连接
client_socket.close()
# 返回响应和时间
return response, end_time - start_time
```
这个函数接受一个指令字符串,发送给下级设备,然后接收响应并返回响应内容和通信时间。接下来,您可以编写主函数来实现多次拉闸并统计成功率和平均回复时长。代码如下:
```python
if __name__ == '__main__':
success_count = 0 # 统计成功次数
total_time = 0 # 统计总通信时间
for i in range(10): # 拉闸10次
response, response_time = send_command('pull')
if response == 'success':
success_count += 1
total_time += response_time
success_rate = success_count / 10.0 # 成功率
avg_response_time = total_time / 10.0 # 平均回复时长
# 打印结果
print('成功率:{:.2f}%'.format(success_rate * 100))
print('平均回复时长:{:.2f}s'.format(avg_response_time))
```
这个主函数循环10次,每次发送一个拉闸指令并统计成功率和平均回复时长。最后打印结果。您可以按照自己的需求修改循环次数和指令内容。
阅读全文