本文目录一览:
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、物联网平台端设备信息查看
再次前往物联网平台的设备信息页面,若设备运行正确,此时应该可以看到设备名右侧的状态由“未激活”变为“在线”。选中“实时刷新”,可以看到数据实时从设备上报到物联网平台,设备上云成功。