Template: RPi User Guides for 4.2inch e-Paper Cloud

From Waveshare Wiki
Revision as of 01:35, 4 December 2020 by Waveshare-eng11 (talk | contribs) (Created page with "=安装库= <pre> #python3 sudo apt-get update sudo apt-get install python3-pip sudo apt-get install python3-pil sudo apt-get install python3-tqdm sudo apt-get install python3...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

安装库

#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-tqdm
sudo apt-get install python3-numpy
sudo apt-get install python3-progressbar

下载测试程序

打开树莓派终端,执行:

sudo apt-get install p7zip-full
sudo wget https://www.waveshare.net/w/upload/2/2e/Cloud_RPI.7z
7z x Cloud_RPI.7z
cd Cloud_RPI 

python

  • 本例程仅可使用python3
  • 请务必在Cloud_RPI 文件,再运行一下命令
#该程序会自动从微雪官网爬取图片并发送给从机显示
sudo python3 ./examples/display_WS.py 
#该程序会根据程序生成图形并发送给从机显示
sudo python3 ./examples/display_EPD.py 

API详解

在lib目录下有三个文件夹分别为http_get、tcp_server和waveshare_epd,分别对应抓取http图片、TCP服务器、墨水屏相关的函数 Cloud ESP32 e-Paper Board manual 10.png

tcp_sver.py

目录:Cloud_RPI/lib/tcp_server
在tcp_sver.py中创建了一个tcp_sver类,使用过程中需要对其进行继承,并重构它的handle函数

def handle(self)

每次有新客户端连接到服务器都会调用handle函数进行处理

接收信息函数

  • 其会自动解析返回格式,并返回原信息,具体可以参考用户手册第二章的返回格式部分
def Get_msg(self)
接收信息 返回信息
'$'+数据+'#' 数据

指令发送函数

  • 其会自动生成帧头、帧尾和校验发送并校验返回值,具体可以参考用户手册第二章的指令格式部分
def Send_cmd(self,cmd)

参数cmd为需要发送的字符串

需要发送内容 实际发送内容
cmd ‘;’+cmd+'/'+校验

数据发送函数

  • 其会自动生成帧头、帧尾和校验发送并校验返回值,具体可以参考用户手册第二章的数据格式部分
def Send_data(self,data)

参数data为需要发送的队列信息(包含地址长度等信息),具体可以参考用户手册第二章的数据格式部分,建议使用下方的flush_buffer函数

需要发送内容 实际发送内容
data 0x57+data+校验

可以将Send_cmd和Send_data这两函数理解为两种封包模式

设置画面大小函数

def set_size(self,w,h)

参数w为图像宽度,参数h为图像高度,用于确定需要发送的数据长度
因为我们以黑白墨水屏为例,一个像素点的数据长度为1bit,不难推出一下公式

数据总长=图像宽度(w)*图像高度(h)/8

参考4.2inch e-Paper Module

刷新画面函数(仅指令模式下使用)

  • 其会将图像队列拆分成指定长度,并发送给从机显示
#ID含有中文时,可能导致进度条出现错位现象
def flush_buffer(self,DATA)

参数DATA为需要为图像队列,图像队列可以由image对象经过下文中的getbuffer函数转化而来

发送数据 发送次数 单帧数据长度(len) 发送内容
DATA(图像队列) 数据总长/单帧数据长度(len) 1024 Byte(用户可定义) 0x57+4 Byte addr+ 4 Byte len +1 Byte num + len Byte data+校验

每次传输数据长度不应超过1100Byte,否则将会导致数据丢失.

具体请参考用户手册第二章通讯协议

电池电压检测函数

  • 返回当前电压值
def check_batter(self)

http_get.py

目录:Cloud_RPI/lib/http_get

  • 下载图片函数
def Get_PNG(Url,Name)

该函数会从Url参数对应的网址下载图片,将其以Name参数为文件名,存储到当前目录下。

epd4in2.py

目录:Cloud_RPI/lib/waveshare_epd

  • 将图片信息转为队列
def getbuffer(self, image):