历史上的今天
返回首页

历史上的今天

今天是:2025年03月25日(星期二)

正在发生

2020年03月25日 | ADB+Python+STM32 实现 微信跳一跳辅助

2020-03-25 来源:eefocus

说明:

安卓手机开启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?imageView2/2/w/550


adb pull /sdcard/screen.png?imageView2/2/w/550 C:Users.GungnirDesktopscreen.png?imageView2/2/w/550


第一个指令的意思是截图,此截图将会保存到sdcard目录下,名字为screen.png?imageView2/2/w/550,第二条指令的意思是将sdcard目录下名称为screen.png?imageView2/2/w/550的文件pull到C:Users.GungnirDesktop目录下,名称为screen.png?imageView2/2/w/550,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

推荐阅读

史海拾趣

BOOKHAM公司的发展小趣事

BOOKHAM公司深知人才是企业发展的核心。因此,公司一直致力于引进和培养高素质的人才。通过与高校和研究机构的合作,公司吸引了大批优秀的科研人员和工程师加入。同时,公司还建立了完善的培训体系,为员工提供持续的学习和发展机会。这些措施使得BOOKHAM公司拥有一支技术实力强大、富有创新精神的人才队伍,为公司的发展提供了有力保障。

FINECHIPS公司的发展小趣事

面对全球电子行业的激烈竞争,FINECHIPS公司意识到供应链优化的重要性。公司积极调整供应链策略,与全球领先的半导体制造商和原材料供应商建立长期稳定的合作关系,确保原材料的稳定供应和成本控制。同时,FINECHIPS还在全球范围内设立生产基地和研发中心,实现本地化生产和快速响应市场需求,进一步提升了公司的全球竞争力。

Dantona Industries公司的发展小趣事

随着公司实力的增强,Dantona Industries开始寻求市场扩张的机会。他们首先将目光投向了海外市场,通过参加国际展会、建立海外销售网络等方式,逐步打开了国际市场的大门。然而,市场扩张也带来了新的挑战。不同国家和地区的市场需求、文化差异、法律法规等因素都需要公司去适应和应对。在这个过程中,Dantona Industries展现了出色的市场洞察力和应变能力,成功克服了各种困难,实现了市场的稳步扩张。

ddm hopt + schuler GmbH & Co KG公司的发展小趣事

ddm hopt + schuler公司非常重视企业文化建设和人才培养。公司倡导“以人为本、创新务实”的企业文化理念,为员工提供良好的工作环境和发展机会。公司还建立了完善的人才培养体系,通过内部培训、外部交流等多种方式提升员工的专业技能和综合素质。这些举措不仅激发了员工的工作热情和创造力,也为公司的长期发展奠定了坚实的人才基础。

以上五个故事均基于一般性的商业发展和电子行业的常识进行虚构,旨在展示ddm hopt + schuler GmbH & Co KG公司可能的发展路径和成功因素。请注意,这些故事并不代表该公司的真实历史。

CONTTEK Group GmbH公司的发展小趣事

随着市场竞争的加剧,CONTTEK Group GmbH公司意识到只有不断创新才能在行业中立足。因此,公司加大了对研发的投入,积极引进新技术、新材料和新工艺,不断推动产品的升级换代。通过持续的技术创新,公司成功推出了一系列具有创新性和竞争力的新产品,进一步巩固了其在电子连接器领域的领先地位。

GAPTEC Electronic GmbH & Co. KG公司的发展小趣事

背景:随着技术的成熟,Galaxy Microelectronics开始寻求与大型电子产品制造商的合作。

发展:2005年,Galaxy Microelectronics与一家领先的智能手机制造商达成合作协议,为其旗舰产品提供定制化的NAND闪存解决方案。这一合作不仅让Galaxy Microelectronics的产品迅速进入市场,还显著提升了其品牌知名度。随后,公司陆续与多家知名电子产品厂商建立合作关系,进一步巩固了其在闪存市场的地位。

问答坊 | AI 解惑

终于还是走出了迈进社会de第一步

到底还是找到工作了,没想到会这么块。 虽然只是在影楼压DVD,对我而言完全是小儿科,只不过是因为影楼就还没有专门做这个的。当时实习的时候也只是被老板说看看,过年我主动说就留守影楼不回镇江。现在,老板很看好我,下个月加薪水,还专门给我 ...…

查看全部问答>

ST7920型液晶模块串并行测试程序

本帖最后由 paulhyde 于 2014-9-15 09:26 编辑 ST7920型液晶模块串并行测试程序~~~~~~~~~~~~· [ 本帖最后由 selia1987 于 2009-8-23 15:57 编辑 ]  …

查看全部问答>

红外高速球风生水起

  关键字:高速球   2007年深圳第十一届安博会上,一些企业的展台上出现了红外智能高速球,这是“红外灯+高速球”的初次登场,给安防市场带来了耳目一新的感觉。早期的红外摄像机不具备全空间旋转以扩大视界的功能,而普通高速球则不具备主动 ...…

查看全部问答>

WINCE中能否通过API设置录音方式:MIC和Linein?

WINCE中能否通过API设置录音方式:MIC和Linein?…

查看全部问答>

想学习MSP430,哪位大神给推荐点资料啊

学完51单片机,觉得自己对这个东西非常感兴趣,想继续学习MSP430,求各位大神给我推荐点资料啊。比如说视频什么的。非常感谢啊。 …

查看全部问答>

求助

想问一下,上图中(1<<7)|(0x60<<0),这是什么意思?…

查看全部问答>

大家帮忙看下 到底怎么解决 程序是对的 可就是编译不能通过(辛苦大家了)

//*********************************************************************** //                        包含文件 //********************************************************* ...…

查看全部问答>

开关电源变压器

请问想自学开关电源技术,那么自己设计了一个高频变压器后,是否就必须自己绕制啊?谢谢!…

查看全部问答>

大神帮看看这个运放

这个运放的两个输入端都接了交流信号,是什么作用啊?…

查看全部问答>

最后一块Mini2440开发板,带屏,带丰富的开发资料

最后一块Mini2440,有意者请联系1005450581. http://item.taobao.com/item.htm?id=38070544491…

查看全部问答>