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 实现 微信跳一跳辅助的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关键词怎么分类(关键词怎么分类汇总)
- 下一篇: 游拍怎么拍电脑游戏(游拍怎么直播电脑游戏