micropython支持中文啦-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7631|回复: 2

micropython支持中文啦

[复制链接]
发表于 2017-8-9 14:53 | 显示全部楼层 |阅读模式
目前micropython官方版本固件是不支持中文的,经过我们2周加班加点的努力,终于可以支持中文啦

中文支持包含一下几个方面
1. string类型的变量直接可用中文
  比如
   a="中文"
   print(a)
2. 文件可以使用中文注释
  比如
    #这个程序完成了XXXX功能
3. 网络资源获取到中文字符串的时候,可以直接打印
  比如
    本例程会提供一个天气预报的例子,请看完全部教程
4. 可以通过Framebuf将汉字打印到液晶上
  比如
    oled.text("愿Micropython越来越强大",0,0)


本帖子转贴自
    http://www.dfrobot.com.cn/community/thread-26740-1-1.html


学习了一下http的get和post,用get请求完成了一个获取天气的应用,供大家参考学习一.  注册网站
https://www.seniverse.com
使用它的免费服务,一天可以请求400次,基本天气信息都有了


二. 注册完成后会有API-KEY,请保存下来


三. 准备材料
   1. firebeetle-esp32或firebeetle-esp8266主板
   2. uPyCraft 0.24版
四 开始实验
1.  将uPy_Lib目录下的urequests.py拖动到板子的lib目录下(注意这个文件岛主做了更改,官方原版不支持params)
2.  将uPy_Lib目录下的ssd1306.py拖动到板子的lib目录下
3. 使用下面这个代码,保存成py文件,下载到板子上并运行



[mw_shl_code=python,true]import urequests as requests
from machine import Pin,I2C,SPI
import time
import network
import ujson
import ssd1306
import HZK
  
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
spi = SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
cs = Pin(25,Pin.OUT)
HZK.init(spi,cs)
lcd=ssd1306.SSD1306_I2C(128,64,i2c)
   
API_KEY = 'mggxhv8zbogqbmqj'
UID = "UF239A86CE"
   
LOCATION = 'chengdu'
URL = 'https://api.seniverse.com/v3/weather/now.json'
UNIT = 'c'
LANGUAGE = 'zh-Hans'
   
SSID="YOURSSID"
PASSWORD="YOURPASSWORD"
wlan=None
s=None
   
def connectWifi(ssid,passwd):
  global wlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid,passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
  return True
   
def fetchWeather(location):
    result = requests.get(URL, params={
        'key': API_KEY,
        'location': location,
        'language': LANGUAGE,
        'unit': UNIT
    })
    return result.text
   
if __name__ == '__main__':
    connectWifi(SSID,PASSWORD)
    result = fetchWeather(LOCATION)
    print(result)
    j=ujson.loads(result)
    print("\r\n\r\n")
    print(j['results'][0]['location']['name'])
    print(j['results'][0]['now']['text'])
    print(j['results'][0]['now']['temperature'])
    addr=j['results'][0]['location']['name']
    weather=j['results'][0]['now']['text']
    temperature=j['results'][0]['now']['temperature']
    lcd.text("地点:%s"%addr,5,0)
    lcd.text("天气:%s"%weather,5,16)
    lcd.text("温度:%s"%temperature,5,32)
    lcd.show()[/mw_shl_code]



五.  实验效果








这样就能看到大成都的天气啦!

发表于 2017-8-9 16:01 | 显示全部楼层
:P:P:P:P:P:P:P:P[mw_shl_code=python,true]import urequests as requests
from machine import Pin,I2C,SPI
import time
import network
import ujson
import ssd1306
import HZK
   
i2c = I2C(scl=Pin(22), sda=Pin(21), freq=100000)
spi = SPI(baudrate=100000, polarity=1, phase=0, sck=Pin(18), mosi=Pin(23), miso=Pin(19))
cs = Pin(25,Pin.OUT)
HZK.init(spi,cs)
lcd=ssd1306.SSD1306_I2C(128,64,i2c)
   
API_KEY = 'mggxhv8zbogqbmqj'
UID = "UF239A86CE"
   
LOCATION = 'chengdu'
URL = 'https://api.seniverse.com/v3/weather/now.json'
UNIT = 'c'
LANGUAGE = 'zh-Hans'
   
SSID="YOURSSID"
PASSWORD="YOURPASSWORD"
wlan=None
s=None
   
def connectWifi(ssid,passwd):
  global wlan
  wlan=network.WLAN(network.STA_IF)
  wlan.active(True)
  wlan.disconnect()
  wlan.connect(ssid,passwd)
  while(wlan.ifconfig()[0]=='0.0.0.0'):
    time.sleep(1)
  return True
   
def fetchWeather(location):
    result = requests.get(URL, params={
        'key': API_KEY,
        'location': location,
        'language': LANGUAGE,
        'unit': UNIT
    })
    return result.text
   
if __name__ == '__main__':
    connectWifi(SSID,PASSWORD)
    result = fetchWeather(LOCATION)
    print(result)
    j=ujson.loads(result)
    print("\r\n\r\n")
    print(j['results'][0]['location']['name'])
    print(j['results'][0]['now']['text'])
    print(j['results'][0]['now']['temperature'])
    addr=j['results'][0]['location']['name']
    weather=j['results'][0]['now']['text']
    temperature=j['results'][0]['now']['temperature']
    lcd.text("地点:%s"%addr,5,0)
    lcd.text("天气:%s"%weather,5,16)
    lcd.text("温度:%s"%temperature,5,32)
    lcd.show()[/mw_shl_code]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 09:43 , Processed in 0.252301 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表