日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助

發布時間:2023/12/3 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python开发stm32软件_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

總結

以上是生活随笔為你收集整理的python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。