ADB+Python+STM32 实现 微信跳一跳辅助

2020-03-25来源: eefocus关键字:ADB  Python  STM32  微信跳一跳辅助

说明:

安卓手机开启USB调试模式,具体如何开启,百度自己手机即可

安装ADB工具

安装python2.7

步骤:

1、安装adb工具

下载地址:https://download.csdn.net/download/qq_29769263/10420731 

下载后解压到便于记忆的地方即可,以解压到桌面为例:

这里写图片描述

如图,我们记住他的地址,


C:Users.GungnirDesktopplatform-tools-latest-windowsplatform-tools


下面我们验证一下是否能够正常工作。 

 这里写图片描述 

将手机通过数据线连接电脑,按住Windows + R键,输入cmd,点击确定,进入命令行界面

这里写图片描述

输入cd加刚才我们记住的地址,进入我们解压后的地址,记得在cd和地址之间加一个空格。 


下面我们输入


adb devices

这里写图片描述

如图,如果出现寻找到device,说明已经连接成功了,如果出现下图, 

这里写图片描述

List of devices attached


说明我们连接没有成功,那就要查看你是否开启了usb调试或adb打开是否正确。


adb工具的命令不止这两个,下面举两个例子,也是我们一会即将用到的。


adb shell screencap -p /sdcard/screen.png


adb pull /sdcard/screen.png C:Users.GungnirDesktopscreen.png


第一个指令的意思是截图,此截图将会保存到sdcard目录下,名字为screen.png,第二条指令的意思是将sdcard目录下名称为screen.png的文件pull到C:Users.GungnirDesktop目录下,名称为screen.png,C:Users.GungnirDesktop这一个地址根据你们电脑实际位置而定。


当然,这样还是很麻烦,因为我们每次使用adb指令时,都需要cd到adb工具所在的目录,这在我们使用开发过程中都很不方便,下面介绍一下他的配置方法。

这里写图片描述

右击 我的电脑 -> 属性 ,选择系统设置 

这里写图片描述 

进入 高级 页面,选择 环境变量 

这里写图片描述 

在下方 系统变量 处选择 Path ,点击 编辑 

这里写图片描述 

点击 新建 后,在左侧列表中输入我们adb工具解压的目录


C:Users.GungnirDesktopplatform-tools-latest-windowsplatform-tools 

然后一路 确定 即可。


此时,我们再次进入命令行界面后,即可直接输入adb命令,而无需cd到adb目录。当然,如果电脑是win10 的话,也可以通过Windows power shell执行adb命令。

这里写图片描述

2、python2.7安装

安装完adb工具后,我们下载python2.7及所需要的库 

下载地址:python2.7下载地址 

在下方的列表中,选择 Python 2.7.15 - 2018-05-01 下的 Download Windows x86-64 MSI installer 选项,下载完成后直接安装即可。 

python本身提供了一个IDLE,可以直接在其界面下使用 

这里写图片描述 

当然,我们也可以在命令行界面下运行,不过,我们同样需要在 Path下添加python2.7的位置,如果选择默认安装的话,python2.7的默认目录为


C:Python27


可以直接将这个地址添加到 Path 目录下,这样,我们就可以直接在命令行界面 或者 Windows power shell下进入python的环境 

这里写图片描述

除了安装python2.7外,我们还需要装一些我们在运行过程中所需要的一些库,如果python2.7选择在默认目录下安装的话,进入目录


C:Python27Scripts


然后我们再次打开命令行界面,cd进该文件夹后,输入 pip,如果出现该界面而不是找不到pip命令,就说明电脑上已经存在pip包管理工具了,如果不存在的话,就需要下载一个 

这里写图片描述

然后依次在命令行界面输入下面命令,安装相应的库


pip install backports.functools-lru-cache==1.4

pip install cycler==0.10.0

pip install matplotlib==2.1.1

pip install numpy==1.13.3

pip install olefile==0.44

pip install opencv-python==3.4.0.12

pip install Pillow==4.3.0

pip install pyparsing==2.2.0

pip install python-dateutil==2.6.1

pip install pytz==2017.3

pip install six==1.11.0

pip install tensorflow==1.4.0

pip install pandas==0.22.0

pip install scipy==1.0.0

pip install scikit_learn==0.19.1

pip install pyserial


安装成功后就可以进入下面的步骤。


3、下载实验

下载地址:https://download.csdn.net/download/qq_29769263/10421958


下载解压后,打开 wechat_jump.py 文件,可以用python自带的IDLE运行,也可以用其他编译软件运行,在运行之前


ser = serial.Serial('com5',9600)


需要将 com5 更改为连接到电脑的串口号,同时将串口(CH340)与电脑连接好后方可运行。 

同时,还需要注意


def send(distance):

    distance = int(distance)

    ser.write('[')

    ser.write(str(distance))

    ser.write(']')


这一段代码规定了我们向串口发送数据的格式,即以 字符 ‘ [ ’ 开头,以 字符 ’ ] ’ 结尾,我们在STM32编写代码时要根据这个确定我们串口接收后的程序。 

如以下:


void USART1_IRQHandler(void)                    //串口1中断服务程序

    {

    u8 Res;   

    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  

            {

            Res =USART_ReceiveData(USART1); //读取接收到的数据  


            if(USART_RX_STA == 1)

            {


                Distance[rectim]  = Res - 48;    //发送的数据为char类型,需要 - 48


                rectim ++;                      //用于记录位数


                if(Res == 0x5D)       //如果接收到了 ‘ ] ’,接收完成

                {   

                    if(rectim == 2)  //接收到了两位,最后一位置 0xFF,用于后续检测位数

                    {

                        Distance[1] = 0xFF;

                    }

                    else

                        if(rectim == 1)   //如果接收到了个位数

                        {

                            Distance[1] = 0xFF;

                            Distance[2] = 0xFF;                         

                        }

                    USART_RX_STA = 0;     //接收完毕,清标志位

                    rectim = 0;

                    RecOK = 1;            //接收成功,置标志位

                }       

            }

            if(Res == 0x5B)      //如果接收到了 ‘ [ ’,置标志位,开始传输

                USART_RX_STA = 1;

        } 

    if(RecOK)

    {

        if(Distance[1]  == 0xFF)

                Dist = Distance[0]; 

        else if(Distance[2]  == 0xFF)

                Dist = Distance[0] * 10 + Distance[1] ;

        else

              Dist = Distance[0] * 100 + Distance[1] * 10 + Distance[2];

        RecOK = 0;

    }


这只是一个例子,串口将数据存储到Distance数组,再将数组数据转为距离即可,具体编写可按实际情况来,通常情况下,传输数据为两点之间的距离,只需要再将一个舵机与STM32连接,即可通过STM32控制舵机按压屏幕时间来控制跳跃时间和距离。


当然,我们可以通过adb指令直接按压屏幕,这样就无需我们使用STM32通过舵机按压,


def jump(distance):

    press_time = distance * 1.35

    press_time = int(press_time)

    cmd = 'adb shell input swipe 320 410 320 410 ' + str(press_time)

    print(cmd)

    os.system(cmd)


这一段代码即为通过adb指令实现按压屏幕,实验时,需要将


def on_click(event):

    global update    

    global src_x, src_y


    dst_x, dst_y = event.xdata, event.ydata


    distance = (dst_x - src_x)**2 + (dst_y - src_y)**2 

    distance = (distance ** 0.5) / scale

    print('distance = ', distance)

    send(distance)

    update = True


on_click 函数中的


send(distance)


更改为


jump(distance)


同时,为了获得更好的效果,可以更改按压时间与距离的比例系数


press_time = distance * 1.35

关键字:ADB  Python  STM32  微信跳一跳辅助 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic492501.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:工程师的调试法宝之Printf串口输出
下一篇:利用树莓派打造STM32无线在线调试器!

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

国内首用!WEY VV6搭载ADB智能像素大灯,比肩宝马X5
众所周知,车灯不仅可以用来照明,还能够用于车辆间的交流。但同时,它也是一把“双刃剑”。用的好,可以让我们的驾驶路更安全;用的不好,也会给我们带来不必要的麻烦。以远光的使用为例,远光能帮助我们看得更远,但也容易让我们遭受强光闪眼。在此,小编告诉大家一个好消息,这个问题被WEY VV6搭载的ADB智能大灯解决了。ADB智能大灯全程护航,确保夜间行车安全VV6搭载的ADB智能大灯系统可通过智能控制全车36个光学分区,在无形中自动完成这一系列操作,同时保证被照目标的防眩目与驾驶者的清晰远光照明视野。同时,ADB智能大灯系统体贴的行人提醒功能,可根据摄像头识别车辆前方有行人后,相应位置会被远光光束点亮/熄灭/闪烁,提醒驾驶员和行人注意安全
发表于 2019-12-27
国内首用!WEY VV6搭载ADB智能像素大灯,比肩宝马X5
4412开发板用adb命令安装apk
在4412开发板上我们可以安装很多自己喜欢和需要的APK,但是怎么装呢,教您一招用adb命令来安装apk。adb install [-r] [-s]-r 表示重新安装 -s 表示安装到sd卡上 默认是安装到内部存储器上cmd进入adb所在目录                      (ps:我的应用目录在adb目录下)连接设备 设置usb调试模式 先用adb devices查看设备是否连接显示已连接设备列表 安装应用到内部存储器adb install出现此画面表示安装
发表于 2019-11-21
世平集团推出基于NXP和TI技术的汽车防眩目ADB系统解决方案
致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下世平推出基于恩智浦(NXP)S32K144和德州仪器(TI)TPS92662-Q1的汽车防眩目自适应远光灯系统(ADB)解决方案。 当今社会,车辆越来越多导致交通环境日渐复杂,事故频频发生。几乎一半的交通死亡事故发生在夜间让汽车照明找到了新的突破口。随着机器视觉、复杂传感和阵列光源等技术的发展以及市场对智能驾驶辅助功能的需求,自适应远光系统-ADB(Adaptive Driving Beam)应运而生,标志着汽车照明系统进入了一个新时代。欧洲和日本的汽车厂商、一线供应商和光源技术供应商已经开始涌入新兴的自适应远光灯(ADB)市场。自适应远光灯(ADB
发表于 2019-11-12
世平集团推出基于NXP和TI技术的汽车防眩目ADB系统解决方案
大联大品佳推汽车自适应大灯系统ADB方案 提高夜间行驶安全性
。本方案是基于安森美半导体的新一代电源控制芯片开发的一款汽车自适应大灯系统ADB(Adaptive Driving Beam LighTIng System)方案,解决驾驶者在阴雨天、转弯道路、高速公路以及城市道路行驶时由于光线所引发的交通事故或者安全隐患等问题。在矩阵式LED控制单元减少了外部晶振以及相应的负载电容,并且在LED控制单元减少存储类芯片,同时在LED电源驱动部分采用安森美半导体开发的高性能且带有SPI通讯接口的多通道BOOST、BUCK模式LED驱动芯片。符合车厂AEC-Q100认证,适用于自适应远光照明(ADB)、高级前灯照明(AFL)、激光照明等照明系统。采用高亮度(HB)和智能LED解决方案对传
发表于 2019-08-15
大联大品佳推汽车自适应大灯系统ADB方案 提高夜间行驶安全性
华为鸿蒙系统现安卓ADB模式
上周末华为在HDC开发者大会上发布了鸿蒙OS,而对于鸿蒙系统,很多人最期待的是鸿蒙用于华为手机上,但华为官方并不打算很快在智能手机上应用。据发布会上介绍,鸿蒙首款落地产品是荣耀智慧屏,不过这两天有人发现智慧屏的鸿蒙OS中出现了ABD调试授权模式,因此网上出现了许多质疑鸿蒙OS的文章。对此,有不少媒体质疑华为在走的是阿里云OS的套路,本质上就是基于安卓系统开发的第三方OS,类似与小米MIUI。但关于ADB模式的问题网上也有很多讨论,很多人以为安卓有ADB模式就认为这是安卓独有的。不过这事最终还是要华为官方给个解释,智慧屏上的鸿蒙系统到底有多少安卓系统的成分,兼容ADB模式是何考虑等等,这些还是需要华为来进行辟谣。
发表于 2019-08-14
华为鸿蒙系统现安卓ADB模式
欧司朗:2020年汽车智能大灯将快速增长 三大发展趋势详解
类型。卤素大灯是最常见的,现在市面上60%以上的新车都使用了卤素大灯,优点是制造和维修成本低,便于更换,而缺点也很明显,亮度不够。氙气大灯作为过渡产品,亮度高、照射距离远是它最大的优势,劣势也非常明显:在雨雾天气的穿透效果并不理想,特别是大雾天气,驾驶员的眼前基本是一片白茫茫。欧司朗LED汽车照明市场经理何海翔欧司朗LED汽车照明市场经理何海翔表示,汽车前照大灯从最初的卤素灯,到氙气灯,到LED大灯,再到智能大灯,都伴随着技术创新产品实现不断升级。他指出了汽车大灯的发展趋势:第一、汽车大灯原来主要使用传统光源,逐步向LED大灯、智能大灯转变。2020年,智能大灯会有快速的发展。 智能大灯,ADB主要是远光的辅助(ADB 自适应远光系统由摄像头
发表于 2018-06-15
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved