其他分享
首页 > 其他分享> > 六一节,赋诗一首

六一节,赋诗一首

作者:互联网

上周四开始感冒发烧,到今天还在咳嗽,所以也就完美错过带女儿过六一节。想想还是不甘心,翻箱倒柜一番又找出了之前做的墨水屏盒子,赋诗一首看看能不能骗过幼儿园小朋友。

盒子里面是个树莓派Zero WH。

老规矩,一步步分解任务:
1、做个python脚本用来显示内容。简单起见有三个参数,标题、第一行、第二行;
2、从windows自带的字体库中复制相应的字体文件给树莓派供墨水屏显示时使用;
3、可以访问树莓派上的一个网页,自行定义要展示的内容。具体实现本质上就是还需要一个php调用第一步中的python。


第一步里,点亮墨水屏可以参考 https://blog.csdn.net/ki1381/article/details/89929279?spm=1001.2014.3001.5501。官方也提供了示例,想要显示自己的文字参照着改写代码就行。
python脚本接收参数也不难,用好sys.argv[]即可。sys.argv[0]是脚本本身,自定的参数从1开始编号。

第二步里,直接复制windows\fonts目录下相关ttc或ttf(比如msyh就是微软雅黑)文件到树莓派的某个目录(比如创建/usr/share/fonts/msfonts目录),然后cd到该目录,运行下mkfontscale命令即可。

第三步里有坑。我遇到了php调用python不支持中文参数的问题。网上找了几种解决方案,最终采用了php里urlencode中文,python脚本里urllib.parse.unquote的办法。

以下为测试代码:

1、HTML:

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title>test</title>
</head>
<body>
    <form action="show.php" method="post">
    标题:<input type="text" style="width:300px" name="txt1"/>
    <br/>

    行一:<input type="text" style="width:300px" name="txt2" />
    <br />

    行二:<input type="text" style="width:300px" name="txt3" />
        <br />

        <hr/>
        <input type="submit" value="upload"/> <input type="reset" value="reset" />
    </form>
</body>
</html>

 2、PHP:

<?php

$t = $_POST['txt1'];
$l1 = $_POST['txt2'];
$l2 = $_POST['txt3'];

$t = urlencode($t);
$l1 = urlencode($l1);
$l2 = urlencode($l2);

$cmd = "sudo python3 /home/pi/src/ePaper/python3/show.py $t $l1 $l2";
#echo $cmd;
exec($cmd);

?>

 3、PYTHON:


#!/usr/bin/python3
# -*- coding:utf-8 -*-

import epd2in9
import time
import sys
from PIL import Image,ImageDraw,ImageFont
import traceback
import urllib.parse

epd = epd2in9.EPD()
epd.init(epd.lut_full_update)

lineTitle = '';
lineC1 = '';
lineC2 = '';

if len(sys.argv) == 4:
	lineTitle = urllib.parse.unquote(sys.argv[1])
	lineC1 = urllib.parse.unquote(sys.argv[2])
	lineC2 = urllib.parse.unquote(sys.argv[3])


try:
    epd.Clear(0xFF)
    
    Himage = Image.new('1', (epd2in9.EPD_HEIGHT, epd2in9.EPD_WIDTH), 255)  # 255: clear the frame
    draw = ImageDraw.Draw(Himage)
    fontTitle = ImageFont.truetype('/usr/share/fonts/msfonts/msyh.ttc', 18)
    fontMain = ImageFont.truetype('/usr/share/fonts/truetype/wqy/wqy-microhei.ttc', 25)
    fontMain7 = ImageFont.truetype('/usr/share/fonts/msfonts/STSONG.TTF',18)

    draw.text((0, 0), lineTitle, font = fontTitle, fill = 0)    
    draw.line((0, 30, 295, 26), fill = 0)
    draw.text((0, 36), lineC1, font = fontMain7, fill = 0)
    draw.text((0, 80), lineC2, font = fontMain7, fill = 0)
    
   
    epd.display(epd.getbuffer(Himage))
      
    Himage = None
    draw = None
except:
    print('traceback.format_exc():\n%s',traceback.format_exc())
    exit()


 

标签:一节,draw,python,argv,sys,一首,import,赋诗,epd
来源: https://blog.csdn.net/ki1381/article/details/117484851