使用ESP8266连接中文wifi
使用XCOM串口调试助手调试ESP8266时,想要连接学校的wifi,通过AT+CWLAP可以显示出附近所有wifi的列表,可是XCOM以ascii码格式显示文本,所以中文就乱码了.
一开始我不知道这是什么编码格式,所以我特意在Notepad++中以utf8编码格式输入中文wifi名,然后改变为ascii编码显示就是这个乱码了.我原本还打算看XCOM的源码,想看看能不能改改,让XCOM可以处理中文,毕竟ESP8266的固件可以识别到中文wifi,然后串口发送的也都是字节数据,所以只要有办法把中文转成ESP8266处理中文所用的编码格式就行.因为不会逆向,所以只好自己写个串口调试的Python脚本了.原本以为很简单的事,却有一个小坑,坑了我一天,就是所谓发送新行,即发送的内容后要加\r\n(回车换行)
import serial
import re
if __name__ == "__main__": portx = "COM3" bps = 115200 #esp_obj = Serial_Handler(portx, bps, timeout) esp_obj=serial.Serial(portx,bps,timeout=0.5) time.sleep(0.5) print(esp_obj.name) print(esp_obj.baudrate) print(esp_obj.stopbits) print(esp_obj.bytesize) print(esp_obj.parity) while(1): command=input("send: ") if(command=='exit'): break esp_obj.write(command.encode('utf-8')) esp_obj.write("\r\n".encode('utf-8')) esp_obj.flush() size=esp_obj.inWaiting() recv_byte=esp_obj.read(size) esp_obj.flushInput() recv_str=recv_byte.decode('utf-8') pattern=re.compile('(?<=\\r\\n)[^\\r\\n]+(?=\\r\\n)')#接收的数据都带有\r\n所以需要用正则获取回车换行之间的数据 recv=pattern.findall(recv_str) for i in recv: print(i) esp_obj.close() exit(0)
最后连接,效果图
本文来自博客园,作者:pie_thn,转载请注明原文链接:https://www.cnblogs.com/pie-o/p/14474231.html