发布于2021-06-07 19:50 阅读(1480) 评论(0) 点赞(27) 收藏(2)
上周四开始感冒发烧,到今天还在咳嗽,所以也就完美错过带女儿过六一节。想想还是不甘心,翻箱倒柜一番又找出了之前做的墨水屏盒子,赋诗一首看看能不能骗过幼儿园小朋友。
盒子里面是个树莓派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()
-
-
作者:jjjjjjjj
链接:http://www.phpheidong.com/blog/article/89406/08bf5a943dc80441065e/
来源:php黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 php黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-4
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!