def barcode_displayer(displayed_code: str) -> None: try: epd = epd2in9.EPD() epd.init(epd.lut_full_update) epd.Clear(0xFF) ean = barcode.get('code39', displayed_code, writer = barcode.writer.ImageWriter()) image = ean.render() epd.display(epd.getbuffer(image.resize((epd.height, epd.width)))) time.sleep(1) except IOError as e: logging.info(e) except KeyboardInterrupt: logging.info("ctrl + c:") epd2in9.epdconfig.module_exit() exit() except Exception as e: logging.info(str(e)) finally: epd.Clear(0xFF)
def close_epd(channel): global loop loop = False logging.info("Clear...") epd = epd2in9.EPD() epd.init(epd.lut_full_update) epd.Clear(0xFF) GPIO.remove_event_detect(channel)
def __init__(self): # Initialise epd self.epd = epd2in9.EPD() self.epd.init(self.epd.lut_full_update) self.epd.Clear(0XFF) self.midpoint = (self.epd.height // 2, self.epd.width // 2) self.font = ImageFont.truetype('Font.ttc', 36)
def __init__(self, queue): self.queue = queue self.epd = epd2in9.EPD() self.epd.init(self.epd.lut_full_update) self.epd.Clear(0xFF) self.smol_font = ImageFont.truetype('DejaVuSansMono.ttf', 10) self.medium_font = ImageFont.truetype('DejaVuSansMono.ttf', 16) self.large_font = ImageFont.truetype('DejaVuSansMono.ttf', 34) self.pressures = np.array([])
def updateScreen(): logging.info(">> updating screen") global current_height logging.info("collect data") data = Data() logging.info("clear screen") epd = epd2in9.EPD() MAX_W, MAX_H = epd.width, epd.height epd.init(epd.lut_full_update) logging.info("write data to screen") image = Image.new('1', (epd.width, epd.height), 255) draw = ImageDraw.Draw(image) writeInfo(draw, 'Time:', data.time) writeInfo(draw, 'Uptime:', data.uptime) writeInfo(draw, 'Online:', data.connectionStatus) writeInfo(draw, 'IP:', data.ip) writeInfo(draw, 'Temp:', "{:.2f}C".format(data.temp)) writeInfo(draw, 'Humidity:', "{:.2f}%".format(data.humidity)) writePowerLevels(draw, data.powerLevel1.title, data.powerLevel1.voltage, data.powerLevel1.power, data.powerLevel1.current, data.powerLevel1.shunt_voltage) writePowerLevels(draw, data.powerLevel2.title, data.powerLevel2.voltage, data.powerLevel2.power, data.powerLevel2.current, data.powerLevel2.shunt_voltage) writePowerLevels(draw, data.powerLevel3.title, data.powerLevel3.voltage, data.powerLevel3.power, data.powerLevel3.current, data.powerLevel3.shunt_voltage) image = image.transpose(Image.ROTATE_180) epd.display(epd.getbuffer(image)) epd.sleep() current_height = 0 logging.info("<< screen updated")
def showtime(): global loop loop = True logging.basicConfig(level=logging.DEBUG) GPIO.add_event_detect(TouchPin, GPIO.RISING, callback=close_epd, bouncetime=200) try: logging.info("epd2in9 Demo") epd = epd2in9.EPD() logging.info("init and Clear") epd.init(epd.lut_full_update) epd.Clear(0xFF) font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) epd.init(epd.lut_partial_update) epd.Clear(0xFF) # 24h update time_image = Image.new('1', (epd.height, epd.width), 255) time_draw = ImageDraw.Draw(time_image) #paste image logging.info("4.read bmp file on window") bmp1 = Image.open(os.path.join(picdir, '789.bmp')) bmp = Image.open(os.path.join(picdir, '2in13d.bmp')) bmp.thumbnail((106, 52)) bmp1.thumbnail((130.9, 56.28)) time_image.paste(bmp1, (241, 75)) time_image.paste(bmp, (142, 92)) time_draw.line([(135, epd.height - 10), (epd.height - 10, epd.width)], fill=0, width=3) #date,week,time time_now = datetime.datetime.now() date_string = time_now.strftime('%Y-%m-%d') week_string = [ u'MONDAY', u'TUESDAY', u'WEDNESDAY', u'THUESDAY', u'FRIDAY', u'SATURDAY', u'SUNDAY' ][time_now.isoweekday() - 1] time_draw.text((10, 70), date_string, font=font18, fill=0) time_draw.text((10, 95), week_string, font=font18, fill=0) #畫直線 time_draw.line([(135, 0), (135, epd.height)], fill=0, width=3) while loop: #溫溼度計 temp, hum = getDHTdata() temp_val = str(temp) hum_val = str(hum) time_draw.rectangle((195, 85, 235, 20), fill=255) time_draw.text((144, 19), "Temp: " + temp_val + " *C", font=font18, fill=0) time_draw.text((144, 55), "Hum : " + hum_val + " %", font=font18, fill=0) newimage_1 = time_image.crop([195, 85, 235, 20]) time_image.paste(newimage_1, (144, 19)) num = 0 # partial update logging.info("5.show time") while (num < 9 and loop): time_draw.rectangle((10, 10, 120, 50), fill=0) time_draw.text((10, 15), time.strftime('%H:%M:%S'), font=font24, fill=255) newimage_3 = time_image.crop([10, 10, 120, 50]) time_image.paste(newimage_3, (10, 15)) epd.display(epd.getbuffer(time_image)) num = num + 1 logging.info("Clear...") epd.init(epd.lut_full_update) epd.Clear(0xFF) #logging.info("Goto Sleep...") #epd.sleep() except IOError as e: logging.info(e) except KeyboardInterrupt: logging.info("ctrl + c:") epd2in9.epdconfig.module_exit() exit()
import os import time import random from PIL import Image dir = '/home/pi/code/e-paper' import sys sys.path.append(dir) from waveshare_epd import epd2in9 path = '/home/pi/code/e-paper/calendar/bmps' epd = epd2in9.EPD() epd.init(lut=epd.lut_full_update) images = os.listdir(path) images_order = [int(os.path.splitext(img)[0].split("-")[1]) for img in images] images_ordered = [images[index] for index in images_order] images_ordered.append(images_ordered[0]) for img in images_ordered[1:]: print(img) epd.init(lut=epd.lut_full_update) time.sleep(1) epd.reset() time.sleep(1) img = Image.open(os.path.join(path, img)) epd.display(epd.getbuffer(img)) time.sleep(60)
def main_func(): #host_file_url = "https://ralph.bakerlab.org/stats/host.gz" host_file_url = "https://boinc.bakerlab.org/rosetta/stats/host.gz" print("Downloading") r = requests.get(host_file_url, stream=True) with open("/home/pi/download.gz", "wb") as data: total_length = int(r.headers.get('content-length')) for chunk in progress.bar(r.iter_content(chunk_size=1024), expected_size=(total_length / 1024) + 1): if chunk: data.write(chunk) print("Decompressing") with open('/home/pi/download.xml', 'wb') as f_out, gzip.open('/home/pi/download.gz', 'rb') as f_in: shutil.copyfileobj(f_in, f_out) print("Parsing") arm_count = 0 credit = 0.0 arm_flag = 0 tree = ET.iterparse("/home/pi/download.xml", events=("start", "end")) is_first = True for event, elem in tree: if elem.tag == "total_credit" and event == "end": tcredit = float(elem.text) elem.clear() if elem.tag == "p_vendor" and event == "end" and elem.text == "ARM": arm_flag = 1 elem.clear() elif elem.tag == "p_vendor" and event == "end" and elem.text != "ARM": arm_flag = 0 elem.clear() if arm_flag == 1 and elem.tag == "os_name" and event == "end" and elem.text != "Android": arm_count = arm_count + 1 credit = credit + tcredit print(elem.text) elem.clear() if elem.tag == "host" and event == "end": elem.clear() if elem.tag == "hosts" and event == "end": elem.clear() print("Non Android ARM machine count = %s" % arm_count) print("Combined Credit = %f" % credit) logging.basicConfig(level=logging.DEBUG) try: logging.info("epd2in9 Demo") epd = epd2in9.EPD() logging.info("init and Clear") epd.init(epd.lut_full_update) epd.Clear(0xFF) font24 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 24) font18 = ImageFont.truetype(os.path.join(picdir, 'Font.ttc'), 18) logging.info("1.Drawing on the Horizontal image...") Himage = Image.new('1', (epd.height, epd.width), 255) # 255: clear the frame draw = ImageDraw.Draw(Himage) draw.text((10, 0), "Linux-Aarch64 Machines:", font=font24, fill=0) draw.text((10, 20), str(arm_count), font=font24, fill=0) draw.text((10, 50), "Linux-Aarch64 Credits:", font=font24, fill=0) draw.text((10, 70), str("%.1f" % credit), font=font24, fill=0) epd.display(epd.getbuffer(Himage)) except IOError as e: logging.info(e)