python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助
說(shuō)明:
安卓手機(jī)開(kāi)啟USB調(diào)試模式,具體如何開(kāi)啟,百度自己手機(jī)即可
安裝ADB工具
安裝python2.7
步驟:
1、安裝adb工具
下載地址:https://download.csdn.net/download/qq_29769263/10420731
下載后解壓到便于記憶的地方即可,以解壓到桌面為例:
如圖,我們記住他的地址,
C:Users.GungnirDesktopplatform-tools-latest-windowsplatform-tools
下面我們驗(yàn)證一下是否能夠正常工作。
將手機(jī)通過(guò)數(shù)據(jù)線連接電腦,按住Windows + R鍵,輸入cmd,點(diǎn)擊確定,進(jìn)入命令行界面
輸入cd加剛才我們記住的地址,進(jìn)入我們解壓后的地址,記得在cd和地址之間加一個(gè)空格。
下面我們輸入
adb devices
如圖,如果出現(xiàn)尋找到device,說(shuō)明已經(jīng)連接成功了,如果出現(xiàn)下圖,
List of devices attached
說(shuō)明我們連接沒(méi)有成功,那就要查看你是否開(kāi)啟了usb調(diào)試或adb打開(kāi)是否正確。
adb工具的命令不止這兩個(gè),下面舉兩個(gè)例子,也是我們一會(huì)即將用到的。
adb shell screencap -p /sdcard/screen.png
adb pull /sdcard/screen.png C:Users.GungnirDesktopscreen.png
第一個(gè)指令的意思是截圖,此截圖將會(huì)保存到sdcard目錄下,名字為screen.png,第二條指令的意思是將sdcard目錄下名稱(chēng)為screen.png的文件pull到C:Users.GungnirDesktop目錄下,名稱(chēng)為screen.png,C:Users.GungnirDesktop這一個(gè)地址根據(jù)你們電腦實(shí)際位置而定。
當(dāng)然,這樣還是很麻煩,因?yàn)槲覀兠看问褂胊db指令時(shí),都需要cd到adb工具所在的目錄,這在我們使用開(kāi)發(fā)過(guò)程中都很不方便,下面介紹一下他的配置方法。
右擊 我的電腦 -> 屬性 ,選擇系統(tǒng)設(shè)置
進(jìn)入 高級(jí) 頁(yè)面,選擇 環(huán)境變量
在下方 系統(tǒng)變量 處選擇 Path ,點(diǎn)擊 編輯
點(diǎn)擊 新建 后,在左側(cè)列表中輸入我們adb工具解壓的目錄
C:Users.GungnirDesktopplatform-tools-latest-windowsplatform-tools
然后一路 確定 即可。
此時(shí),我們?cè)俅芜M(jìn)入命令行界面后,即可直接輸入adb命令,而無(wú)需cd到adb目錄。當(dāng)然,如果電腦是win10 的話,也可以通過(guò)Windows power shell執(zhí)行adb命令。
2、python2.7安裝
安裝完adb工具后,我們下載python2.7及所需要的庫(kù)
下載地址:python2.7下載地址
在下方的列表中,選擇 Python 2.7.15 - 2018-05-01 下的 Download Windows x86-64 MSI installer 選項(xiàng),下載完成后直接安裝即可。
python本身提供了一個(gè)IDLE,可以直接在其界面下使用
當(dāng)然,我們也可以在命令行界面下運(yùn)行,不過(guò),我們同樣需要在 Path下添加python2.7的位置,如果選擇默認(rèn)安裝的話,python2.7的默認(rèn)目錄為
C:Python27
可以直接將這個(gè)地址添加到 Path 目錄下,這樣,我們就可以直接在命令行界面 或者 Windows power shell下進(jìn)入python的環(huán)境
除了安裝python2.7外,我們還需要裝一些我們?cè)谶\(yùn)行過(guò)程中所需要的一些庫(kù),如果python2.7選擇在默認(rèn)目錄下安裝的話,進(jìn)入目錄
C:Python27Scripts
然后我們?cè)俅未蜷_(kāi)命令行界面,cd進(jìn)該文件夾后,輸入 pip,如果出現(xiàn)該界面而不是找不到pip命令,就說(shuō)明電腦上已經(jīng)存在pip包管理工具了,如果不存在的話,就需要下載一個(gè)
然后依次在命令行界面輸入下面命令,安裝相應(yīng)的庫(kù)
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
安裝成功后就可以進(jìn)入下面的步驟。
3、下載實(shí)驗(yàn)
下載地址:https://download.csdn.net/download/qq_29769263/10421958
下載解壓后,打開(kāi) wechat_jump.py 文件,可以用python自帶的IDLE運(yùn)行,也可以用其他編譯軟件運(yùn)行,在運(yùn)行之前
ser = serial.Serial('com5',9600)
需要將 com5 更改為連接到電腦的串口號(hào),同時(shí)將串口(CH340)與電腦連接好后方可運(yùn)行。
同時(shí),還需要注意
def send(distance):
distance = int(distance)
ser.write('[')
ser.write(str(distance))
ser.write(']')
這一段代碼規(guī)定了我們向串口發(fā)送數(shù)據(jù)的格式,即以 字符 ‘ [ ’ 開(kāi)頭,以 字符 ’ ] ’ 結(jié)尾,我們?cè)赟TM32編寫(xiě)代碼時(shí)要根據(jù)這個(gè)確定我們串口接收后的程序。
如以下:
void USART1_IRQHandler(void)? ? ? ? ? ? ? ? ? ? //串口1中斷服務(wù)程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Res =USART_ReceiveData(USART1); //讀取接收到的數(shù)據(jù)
if(USART_RX_STA == 1)
{
Distance[rectim]? = Res - 48;? ? //發(fā)送的數(shù)據(jù)為char類(lèi)型,需要 - 48
rectim ++;? ? ? ? ? ? ? ? ? ? ? //用于記錄位數(shù)
if(Res == 0x5D)? ? ? ?//如果接收到了 ‘ ] ’,接收完成
{
if(rectim == 2)? //接收到了兩位,最后一位置 0xFF,用于后續(xù)檢測(cè)位數(shù)
{
Distance[1] = 0xFF;
}
else
if(rectim == 1)? ?//如果接收到了個(gè)位數(shù)
{
Distance[1] = 0xFF;
Distance[2] = 0xFF;
}
USART_RX_STA = 0;? ? ?//接收完畢,清標(biāo)志位
rectim = 0;
RecOK = 1;? ? ? ? ? ? //接收成功,置標(biāo)志位
}
}
if(Res == 0x5B)? ? ? //如果接收到了 ‘ [ ’,置標(biāo)志位,開(kāi)始傳輸
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;
}
這只是一個(gè)例子,串口將數(shù)據(jù)存儲(chǔ)到Distance數(shù)組,再將數(shù)組數(shù)據(jù)轉(zhuǎn)為距離即可,具體編寫(xiě)可按實(shí)際情況來(lái),通常情況下,傳輸數(shù)據(jù)為兩點(diǎn)之間的距離,只需要再將一個(gè)舵機(jī)與STM32連接,即可通過(guò)STM32控制舵機(jī)按壓屏幕時(shí)間來(lái)控制跳躍時(shí)間和距離。
當(dāng)然,我們可以通過(guò)adb指令直接按壓屏幕,這樣就無(wú)需我們使用STM32通過(guò)舵機(jī)按壓,
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)
這一段代碼即為通過(guò)adb指令實(shí)現(xiàn)按壓屏幕,實(shí)驗(yàn)時(shí),需要將
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 函數(shù)中的
send(distance)
更改為
jump(distance)
同時(shí),為了獲得更好的效果,可以更改按壓時(shí)間與距離的比例系數(shù)
press_time = distance * 1.35
總結(jié)
以上是生活随笔為你收集整理的python开发stm32软件_ADB+Python+STM32 实现 微信跳一跳辅助的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关键词怎么分类(关键词怎么分类汇总)
- 下一篇: 游拍怎么拍电脑游戏(游拍怎么直播电脑游戏