本文目錄一覽:
Python下Pywin32的使用教程
你可以直接到lib的site-packages下面的win32目錄下,有一個demos。另外幾個win32開頭的目錄里也有demos子目錄。進去看他們寫好的例子。
幾個簡單的教程:
使用
查詢句柄
# 根據類名及標題名查詢句柄,
hwnd = win32gui.FindWindow(“Tfrm_YzzPlayer”,”葉子豬手游模擬器”)
# 查找指定句柄的子句柄,後兩個參數為子類的類名與標題,如果沒有或不確定,可以寫None
hwnd = win32gui.FindWindow(hwnd,None,”sub_class”,”sub_title”)
修改窗口大小
# 沒有直接修改窗口大小的方式,但可以曲線救國,幾個參數分別表示句柄,起始點坐標,寬高度,是否重繪界面 ,如果想改變窗口大小,就必須指定起始點的坐標,沒果對起始點坐標沒有要求,隨便寫就可以;如果還想要放在原先的位置,就需要先獲取之前的邊框位置,再調用該方法即可
win32gui.MoveWindow(hwnd,20,20,405,756,True)
前台後台
# 指定句柄設置為前台,也就是激活
win32gui.SetForegroundWindow(hwnd)
# 設置為後台
win32gui.SetBkMode(hwnd, win32con.TRANSPARENT)
esp32 vscode lauch 設置
第一步:安裝 VSCode C/C++ 擴展
1.在應用商店裡搜索 C++
2.安裝C/C++ IntelliSense, debugging, and code browsing
第二步:安裝 VSCode ESP-IDF 擴展
1.在應用商店裡搜索 Espressif
2.安裝 Develop and debug applications for Espressif ESP32, ESP32-S2 chips with ESP-IDF (帶樂鑫圖標)
第三步:配置ESP-IDF 擴展
1.按 F1 或Ctrl+Shift+P 打開命令面板
2.輸入 ESP-IDF: Configure ESP-IDF extension
載入初始設置時間較長,耐心等待
3.根據實際情況選擇不同的配置方式
Express: IDF 版本 配置Python環境,擴展將安裝IDF
Advanced: 手動配置已安裝的開發環境
Using Existing Setup : 使用擴展檢測出的環境
配置完成後顯示:All settings have been configured. You can close this window.
第四步:創建項目模板,檢測設置
1.按 F1 或Ctrl+Shift+P 打開命令面板 輸入ESP-IDF:Create project 或按Ctrl+E+C
2.選擇工程創建目錄
3.選擇模板類型
第五部:設置工作區的json文件
在settings.json文件中添加以下內容
“terminal.integrated.shell.windows”: “cmd.exe”,
“terminal.integrated.shellArgs.windows”: [“/k”, “c:\\esp\\esp-idf\\export.bat”],
“terminal.integrated.shell.linux”: “/bin/bash”,
“terminal.integrated.shellArgs.linux”: [“–init-file”, “~/esp/esp-idf/export.sh”, “-i”],
“terminal.integrated.shell.osx”: “/bin/bash”,
“terminal.integrated.shellArgs.osx”: [“–init-file”, “~/esp/esp-idf/export.sh”, “-i”],
“files.associations”: {undefined
“*.md”: “markdown”,
“*.mdx”: “tdx”,
“stdio.h”: “c”
},
可以在VSCode 終端中正常使用idf的各種命令。
第六步:編譯工程
可以使用ESP擴展下的各個按鈕完成項目的串口選擇、項目配置、Full Clearn、編譯、下載、監視
也可以使用命令行方式:
1.按Ctrl+` (~按鍵的位置)打開終端(第一次運行時擴展會有提示,選擇允許 其實質就是運行~/esp/esp-idf/export.sh)
2.選擇終止終端
3.重新打開終端 會看到export.sh運行的結果
Go to the project directory and run:
idf.py build
4.運行各種idf命令
第七部:下載程序並監測程序運行
1. 按Select Device Port 按鈕 或運行 ESP-IDF:Device configuration命令
按提示選擇/dev/ttyUSB1作為下載口
2.編譯完成後,可使用下載按鈕進行程序下載。此時會出現提示:
PermissionError: [Errno 13] Permission denied: ‘/dev/ttyUSB1’
原因:
$ ls -l /dev/ttyUSB*
crw-rw—- 1 root dialout 188, 0 2月 3 11:21 /dev/ttyUSB0
crw-rw—- 1 root dialout 188, 1 2月 3 11:21 /dev/ttyUSB1
發現ttyUSB* 設備屬於root用戶 dialout 用戶組,當前用戶不屬於dialout用戶組
解決方案:
(1).執行以下命令
$sudo chmod 666 /dev/ttyUSB*
修改ttyUSB設備許可權為其它用戶可讀可寫。
缺點:電腦重啟後,又會出現這種問題,還要重新設置
(2).為了能讓普通用戶也能使用串口,可以增加udev規則來實現
$sudo vim /etc/udev/rules.d/70-ttyusb.rules
增加如下內容:
KERNEL==”ttyUSB[0-9]*”,MODE=”0666″
保存,重新插入USB轉串口,普通用戶就能搞定了
缺點:該方法會讓所有的普通用戶都具有訪問這些串口設備的許可權,存在一定的安全隱患
(3).將目標用戶加入dialout用戶組,可以使用以下任意一個命令
$sudo usermod -aG dialout 目標用戶名
或:
sudo gpasswd –add 目標用戶名 dialout
重啟系統即可
第八部:跟蹤調試程序
1.按 OpenOCD Server 按鈕 輸出提示:
❌ Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
❌ Error: no device foun
按照 文檔解釋做如下操作:
(1). 將~/.espressif/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/share/openocd/contrib/
目錄下的 60-openocd.rules 拷貝至 /etc/udev/rules.d/ 目錄下
(2).確保當前用戶屬於 plugdev 用戶組。 提示:運行 groups 命令可以查看當前用戶所屬的用戶組
(3).重啟系統
2.配置Debug 環境
參考:
註:該文檔中的模板有坑。
問題:
使用 ESP-IDF Debug Adapter 配置時出現如下提示:
pygdbmi.gdbcontroller.NoGdbProcessError: gdb process has already finished with return code: 127
按照 esp_debug_adapter 說明文檔 在~/.vscode/extensions/espressif.esp-idf-extension-0.6.1/esp_debug_adapter/ 目錄下
$pip install -r requirements.txt
問題依然存在 暫無解決思路
使用 Microsoft C/C++ extension to debug 配置時出現如下提示:
error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
實質是系統中沒有python2.7的庫,解決:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libpython2.7
問題解決
同時也解決了使用 ESP-IDF Debug Adapter 配置時出現的問題 故是否需要pip install …… 不能確定
在使用 Microsoft C/C++ extension to debug 配置時 會提示出現異常,不用理會可正常跟蹤調試。
有時會提示
Error: couldn』t bind tcl to socket: Address already in use
則證明 剛剛啟動的 進程未被終止。
解決辦法:
a).查看當前活動進程
netstat為顯示網路相關信息 a(all:默認顯示所有,如果加了其他選項此項不生效) n(number:以數字形式顯示) t(僅僅顯示tcp連接),p(process:顯示該項是由哪個程序建立起來的)
$ sudo netstat -antp
b). 強制殺死它(假設進程號為3560,-9為強制殺死)
$ sudo kill -9 3560
Debug正常運行時,狀態欄由藍色變為棕色。
附:scode的各個json文件
c_cpp_properties.json
======================================
{undefined
“configurations”: [
{undefined
“name”: “ESP-IDF”,
“compilerPath”: “${default}”,
“cStandard”: “c11”,
“cppStandard”: “c++17”,
“includePath”: [
“${config:idf.espIdfPath}/components/**”,
“${config:idf.espIdfPathWin}/components/**”,
“${workspaceFolder}/**”
],
“browse”: {undefined
“path”: [
“${config:idf.espIdfPath}/components”,
“${config:idf.espIdfPathWin}/components”,
“${workspaceFolder}”
],
“limitSymbolsToIncludedHeaders”: false
}
}
],
“version”: 4
}
settings.json
======================================
{undefined
“terminal.integrated.shell.windows”: “cmd.exe”,
“terminal.integrated.shellArgs.windows”: [“/k”, “c:\\esp\\esp-idf\\export.bat”],
“terminal.integrated.shell.linux”: “/bin/bash”,
“terminal.integrated.shellArgs.linux”: [“–init-file”, “~/esp/esp-idf/export.sh”, “-i”],
“terminal.integrated.shell.osx”: “/bin/bash”,
“terminal.integrated.shellArgs.osx”: [“–init-file”, “~/esp/esp-idf/export.sh”, “-i”],
“files.associations”: {undefined
“*.md”: “markdown”,
“*.mdx”: “tdx”,
“stdio.h”: “c”
},
“C_Cpp.clang_format_style”: “Visual Studio”,
“editor.formatOnSave”: false,
“[cpp]”: {undefined
“editor.quickSuggestions”: true
},
“[c]”: {undefined
“editor.quickSuggestions”: true
},
“C_Cpp.intelliSenseEngine”: “Tag Parser”,
//配置下載介面
“idf.port”: “/dev/ttyUSB1”,
//配置下載方式
“idf.flashType”: “UART”,
//openOcd配置,根據開發板確定
“idf.openOcdConfigs”: [
//新版建議用「board/XXX」 配置
“interface/ftdi/esp32_devkitj_v1.cfg”,
“target/esp32.cfg”
]
}
launch.json
======================================
{undefined
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit:
“version”: “0.2.0”,
“configurations”: [
{undefined
“type”: “espidf”,
“name”: “ESP_Debug”,
“request”: “launch”,
“debugPort”: 43474,
“logLevel”: 2,
//模板中有坑的地方,模板內容為 “mode”: “manual”,
//這樣不能自動啟動 Debug Adapter
“mode”: “auto”,
“initGdbCommands”: [
“target remote :3333”,
“symbol-file ${workspaceFolder}/build/${command:espIdf.getProjectName}.elf”,
“set remote hardware-watchpoint-limit 2”,
“mon reset halt”,
“flushregs”,
“thb app_main”,
“c”
],
“env”: {undefined
“PATH”: “${env:PATH}:${config:idf.customExtraPaths}”
}
},
{undefined
“name”: “GDB”,
“type”: “cppdbg”,
“request”: “launch”,
“MIMode”: “gdb”,
“miDebuggerPath”: “${command:espIdf.getXtensaGdb}”,
“program”: “${workspaceFolder}/build/${command:espIdf.getProjectName}.elf”,
“windows”: {undefined
“program”: “${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf”
},
“cwd”: “${workspaceFolder}”,
“environment”: [{ “name”: “PATH”, “value”: “${config:idf.customExtraPaths}” }],
“setupCommands”: [
{ “text”: “-enable-pretty-printing”,
“ignoreFailures”: true },
{ “text”: “file ‘${workspaceFolder}/build/${command:espIdf.getProjectName}.elf'”},
{ “text”: “target remote :3333” },
{ “text”: “set remote hardware-watchpoint-limit 2”},
{ “text”: “mon reset halt” },
{ “text”: “thb app_main” },
{ “text”: “flushregs” }
//{ “text”: “c”}
],
“externalConsole”: false,
“logging”: {undefined
“engineLogging”: true
}
}
]
}
tasks.json 這個文用系統生成的即可 略
————————————————
版權聲明:本文為CSDN博主「FuShaofeng」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:
esp32關閉沒用外設
硬體準備
ESP32開發板一套
1、一分鐘上雲體驗
打開「支付寶」掃描下圖二維碼
在案例詳情中,點擊「立即體驗」
是不是感覺挺神奇的,手摸一摸就能在手機上顯示摸了哪幾個引腳。
只需要以下幾步
2、物聯網平台開發
整個過程包含以下4個步驟:
1、開通公共實例
2、創建產品(設備模型)
3、定義產品功能(物模型)
4、創建設備及獲取三元組
2.1、開通公共實例
對於第一次使用物聯網平台的讀者,需要開通實例以使用物聯網平台的功能。這裡可以使用免費的公共實例進行開發。在物聯網平台中,左上角選擇「華東2-上海」,點擊「公共實例」,即可開通。開通後點擊「公共實例」,即可進入控制台進行產品創建。
2.2、創建產品(設備模型)
進入公共實例控制台,點擊「創建產品」按鈕,即可進入新建產品頁面。
進入新建產品頁面,設定「產品名稱」,這裡我們命名為「nodemcu32S」,讀者也可以根據自己的喜好來命名。在「所屬品類」中,選擇「自定義品類」。
產品的節點類型選擇「直連設備」,數據格式選擇「ICA標準數據格式」,檢驗類型和認證方式選擇默認設定即可。開發者可根據自己的需求在「產品描述」頁面添加針對此產品的描述。
對於ESP32等搭載Wi-Fi的設備而言,聯網方式選擇「Wi-Fi」。
點擊「確認」按鈕,即可完成產品創建。
點擊「前往定義物模型」
2.3、定義產品功能(物模型)
開發者可以使用準備好的物模型文件來進行快速導入。點擊左上角「快速導入」,選擇物模型文件並上傳,就能夠生成案例對應的物模型。
生成後的效果如下:
定義好物模型後,需要發布物模型上線,並發布產品,以使變更生效。
產品及其物模型創建完成後就可以創建這個產品的設備了。
2.4、創建設備及獲取三元組
點擊左側欄中「設備」,在篩選框中選擇需要添加的產品,點擊「添加設備」,這裡我們命名為「test_device」,開發者可以根據自己的喜好來命名。
開發者也可以選擇「批量添加」,一次性添加多個設備,並聲稱隨機的DeviceName。
生成的設備如下:
點擊前往「產看」按鈕,就可以看到此設備的詳細信息了。
點擊左上角的「查看」按鈕,就能看到設備的三元組信息了。
三元組是物聯網設備與雲端關聯的唯一標識符,在設備端連到雲端的時候會使用三元組信息和雲端進行鑒權,鑒權通過之後雲端會認為設備已激活並上線。
3、設備端開發
在進行下一步之前請確保ESP32開發環境已經搭建完畢。詳情請參考「ESP32快速開始」的說明。
3.1、創建解決方案
如下圖所示,打開VSCode之後再新建一個基於helloword的python工程,設定好工程名稱(「test_demo」)及工作區路徑之後,硬體類型選擇ESP32,點擊立即創建,創建一個Python輕應用的解決方案。
將腳本壓縮包解壓後,複製該文件夾下的所有文件,覆蓋”test_demo”工程目錄下,main.py文件:
Python腳本的詳細說明請參考腳本內嵌的文字注釋。
修改路由器名稱及密碼
修改工程里main.py中wifiSsid和WifiPassword的值為讀者實際要鏈接的路由器名稱及密碼(請注意名稱和密碼都需要放在””符號中間)。
# Wi-Fi SSID和Password設置
wifiSsid = “請填寫您的路由器名稱”
wifiPassword = “請填寫您的路由器密碼”
修改完成後get_wifi_status函數中的wlan.connect(wifiSsid,wifipassword)語句就會連接讀者自己設定的路由器。
修改設備端三元組
# 物聯網平台相關的key和serect定義
ProductKey = ‘ProductKey’
DeviceName = ‘DeviceName’
DeviceSecret = ‘DeviceSecret’
點擊「部署運行」,等待程序運行。
3.2、物聯網平台端設備信息查看
再次前往物聯網平台的設備信息頁面,若設備運行正確,此時應該可以看到設備名右側的狀態由「未激活」變為「在線」。選中「實時刷新」,可以看到數據實時從設備上報到物聯網平台,設備上雲成功。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/236947.html