当前位置: 首页 > article >正文

外接串口板,通过串口打开adb模式

一、依赖库

import subprocess
import serial
from serial.tools import list_ports
import logging
import time

二、代码

import subprocess

import serial
from serial.tools import list_ports
import logging
import time

def openAdb(com):
    # com = []
    # for i in list_ports.comports():
    #     if 'USB Serial' in i.description:
    #         print(i.description)
    #         com = i.name
    #         print(com)
    #         logging.debug(f'serial port:{com}')
    #         break

    print("try to open adb")

    ser = serial.Serial(com, 115200, timeout=0.1)
    if ser.is_open:
        ser.write(b"\n")
        time.sleep(1)
        ser.write(b"root\n")
        ser.write(b"\n")
        time.sleep(1)
        ser.write(b"Visteon@JMC23651\n")
        time.sleep(1)
        ser.write(b"dtach -a /tmp/glconsole\n")
        ser.write(b"su\n")
        ser.write(b"Vist@jmc789\n")
        time.sleep(1)
        ser.write(b"start setmode_device\n")
        time.sleep(1)
    ser.close()

def check_adb(com):
    count = 0
    while True:
        try:
            subprocess.run(["adb", "kill-server"], check=True)
            subprocess.run(["adb", "start-server"], check=True)

            output = subprocess.check_output("adb devices", shell=True).decode('utf-8')
            # print("Output of adb devices:", output.strip())
            devices = []
            lines = output.strip().split('\n')
            for line in lines[1:]:
                if '\tdevice' in line:
                    device_info = line.split('\t')[0]
                    devices.append(device_info)
            print(devices)

            if devices is not None and len(devices) > 0:
                print("Device found. Performing operations...")

                break
            else:
                print("Device not found. Switching modes and retrying...")
                openAdb(com)
                count += 1
                if count >= 5:
                    print("Please check if the environment is OK")
                    break

        except subprocess.CalledProcessError as e:
            print("An error occurred while executing adb command:", e)
            break

if __name__ == '__main__':
    com = 'COM24'
    # openAdb(com)
    check_adb(com)

三、使用场景

需要外接继电器,通过串口命令打开车机调试模式


http://www.kler.cn/a/291715.html

相关文章:

  • (OCPP服务器)SteVe编译搭建全过程
  • 13.罗意文面试
  • 从监控异常发现网络安全
  • ubuntu18.04升级到ubuntu20.04
  • 浅谈目前我开发的前端项目用到的设计模式
  • 拼多多电子面单接入:常见问题及专业解决方案
  • 今日(2024 年 9 月 4 日)科技新闻
  • macos 系统 降级, 重装, 升级图文教程
  • 【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!
  • Elasticsearch倒排索引
  • springweb获取请求数据、spring中拦截器
  • 构建数据安全防线:MySQL数据备份策略的文档化实践
  • JavaScript接下来的小项目
  • 【SLAM】GNSS的定义,信号原理以及RTK在多传感器融合中的使用方法
  • 代码随想录算法训练营第五十七天 | 图论part07
  • Eclipse+Java+Swing实现学生信息管理系统
  • Learn ComputeShader 07 Post Processing
  • git 回滚的三种方式
  • js实现lua解释器,类似halcon代码编辑器一行一行解释执行
  • Cubase操作:就地渲染 配和弦技巧 合并多段音频 隐藏标记轨序号 删除素材池多余音频
  • Synchronized、Reetrantlock
  • 【ESP32 】VScode -window环境配置(adruino开发)(点亮LED)
  • softmax里边的exp用拟合验证精度。
  • Java算法之冒泡排序(Bubble Sort)
  • [NOI1998] 免费的馅饼(三维偏序转二维偏序)
  • 【python爬虫】超越Selenium的自动化爬虫神器--DrissionPage语法解析与应用实战