跳到主要内容

python调用

使用环境python3.9
ios_at_api.py 封装好的api接口
main.py 使用pyqt做的例子
main_form.py 窗体单元 由pyuic通过main_form.ui自动生成
main_form.ui 由QtDesigner 生成的qt界面文件

ios_at_api.py 需要安装以下依赖库
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install websocket-client -i https://pypi.tuna.tsinghua.edu.cn/simple/

使用pyqt做的例子 需要安装以下依赖库
pip install pyqt6 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pyqt6-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install PyQt6-WebEngine -i https://pypi.tuna.tsinghua.edu.cn/simple/

简单的例子

  • 使用http协议调用接口
import base64
import gzip
import io
import ios_at_api # 导入ios_at_api模块
import time


# 将base64字符串保存成图片
def base64_to_bmp(data: dict):
image_base64 = data['data']['img']
is_gzip = data['data']['gzip']
is_jpg = data['data']['isjpg']
imgdata = base64.b64decode(image_base64)
if is_gzip:
with gzip.GzipFile(fileobj=io.BytesIO(imgdata)) as f:
imgdata = f.read()
if is_jpg:
img_path = "{}.jpg".format(time.strftime("%Y-%m-%d-%H%M%S", time.localtime()))
else:
img_path = "{}.bmp".format(time.strftime("%Y-%m-%d-%H%M%S", time.localtime()))
with open(img_path, 'wb') as f:
f.write(imgdata)
del data['data']['img']
print(data)
print("保存图片成功:" + img_path)


# 实例化HttpApi类,传入内核服务端ip地址作为参数
api = ios_at_api.HttpApi('127.0.0.1')
# 调用截图接口
image_data = api.get_device_screenshot(deviceid='F4:0F:24:D8:42:24')
if image_data['status'] > 0:
print('截屏调用失败,原因:{}'.format(image_data['message']))
else:
print('截屏调用成功')
base64_to_bmp(image_data)

  • 使用websocket协议调用接口
# 文本消息回调函数
def on_message(data: dict):
if data["fun"] == "get_device_screenshot":
if data['status'] > 0:
print('截屏调用失败,原因:{}'.format(data['message']))
else:
print('截屏调用成功')
if "img" in data['data']: # 有图片数据保存成文件
base64_to_bmp(data)
return # 截图的消息太长不打印所以这里return
print("收到回调消息{}".format(data))


# 二进制消息回调函数
def on_binary(data: bytes):
deviceid = data[:261].decode(encoding="utf-8").split('\x00')[0]
isjpg = int.from_bytes(data[261:265], "little")
bmp = data[265:]
print("收到设备{}的屏幕数据".format(deviceid))
if isjpg == 1:
img_path = "{}.jpg".format(time.strftime("%Y-%m-%d-%H%M%S", time.localtime()))
else:
img_path = "{}.bmp".format(time.strftime("%Y-%m-%d-%H%M%S", time.localtime()))
with open(img_path, 'wb') as f:
f.write(bmp)
print("保存图片成功:" + img_path)


# 实例化WsApi类,传入内核服务端ip地址、文本消息回调函数、二进制消息回调函数最为参数
api = ios_at_api.WsApi('127.0.0.1', on_message=on_message, on_binary=on_binary)
# 开始连接内核
api.start()
# 等待连接成功
while not api.is_onnect():
time.sleep(1)


# 同步调用截图接口,使用base64字符串返回
ret = api.get_device_screenshot(deviceid='5C:1D:D9:ED:D9:DE')
if ret['status'] > 0:
print('截屏调用失败,原因:{}'.format(ret['message']))
else:
print('截屏调用成功')
base64_to_bmp(ret)

'''
#异步调用截图接口,使用base64字符串返回
ret = api.get_device_screenshot(deviceid='5C:1D:D9:ED:D9:DE', sync=False)
print(ret)
'''

'''
# 异步调用截图接口,使用二进制返回
ret = api.get_device_screenshot(deviceid='5C:1D:D9:ED:D9:DE', binary=True)
print(ret)
'''

input("按任意键退出")
api.stop()

#pyqt带界面的例子

  • 具体代码查看main.py