From 98a526c3cd14fa9486df36c6941ed7e2a933f5da Mon Sep 17 00:00:00 2001 From: Korneliusz Osmenda Date: Tue, 6 Sep 2022 21:33:51 +0200 Subject: [PATCH] Make display controlled via uart --- scripts/image.py | 31 +++++++++++++++++++++++++++++++ scripts/test.png | Bin 0 -> 1668 bytes src/display.hpp | 2 +- src/main.cpp | 23 +++++++++++++++-------- src/uart.cpp | 11 +++++++++++ 5 files changed, 58 insertions(+), 9 deletions(-) create mode 100755 scripts/image.py create mode 100644 scripts/test.png diff --git a/scripts/image.py b/scripts/image.py new file mode 100755 index 0000000..9d18086 --- /dev/null +++ b/scripts/image.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import tlay2_client +import struct +from PIL import Image + +def send_image(img): + img = img.convert("1") + w,h = img.size + if w != 200 or h != 128: + raise Exception("bad format") + + + data = [] + for i in range(h//8): + data.append(bytearray([255])*w) + for x in range(w): + for y in range(h): + if img.getpixel((x,y)) == 0: + data[y//8][x] &= ~(1<<(7-y%8)) + + a=tlay2_client.Tlay2_msg(2) + for i in range(len(data)): + line = data[i] + for j in range(0, len(line), 32): + chunk = line[j:j+32] + a.msg(struct.pack("0>6&1idogv1TPQC6NwHcDt%gNgCC*G@tU92hG1M5N0~~CC zc9h<;=i1u)T@+sQx$^1v`#je^cTFLfO7h~K>Drj>7V9bOT|u7wL2P#_lxmw^sf3WyK-)Z4T^&N{WXJfIkQT_Pp1@?2LCx(QWtzHJ=GP5`vNVhJZ8NGwVi6bzs*{4#?~KZ=Yl_K%1P20 zs1gprr9KC!@*r|tmZ|R8%J?;5gY8WLr$jqoTZgErlrp&(2U0~XGZD*dn;pb z*>+W60d~~LnZe<~!j=<^y1@Y&01ImC?`$Y(J-{^ksss+8rba8bHPtRsA7>Xe9AH!c zFQZJr`p10jPuwfsJq*n(Lm8j9Ym2UoegENpMolvoS%Ur1C5AF~Gf|mty1+k+qhN%jKy3|yoW0MuUCR=xPYZ?#xhx)SL2blE8(}1 zc~Se4}A>qXlXgl{aKLd9ZTb1&(QZRG@V=1C+=TsBdZBHJ2+IF3`EDyef;& z!3Z-N_5R^Jos@Zwkh4MYERGM?L+Mj0{uU)b=0_J@^3fU5cqVZiXZH+>?TPdCE zp#09c#-RwTZFei=vuPv&^~3x z2Q0ZZkt6~~Le~|U%K}TTPY@Dj_;lNyoU8#o`JN?2&?L;tOdDv406c9A8?IO2%wi}N zfe8^oALfP>Z9hQy3;=D@382hugQ2(~PTNY`1OtFU77NscdC^RSa&z1yfZ?B^HlxhEvGhSGlQH8==3r+w zL!J_n%{*H~c!5W+Qe?0gk))t@mW)zxMr3QrEb}O&0JqI9+?rY1M79pe+$TccKCyM} zv)ZW4w1kip&YH>1L-)>%3uorx6n*CThH|AuVyN%lhI5N?MQg{>`5+)Yz28o^PreUJ_vm?P35gI1Lw*2D|K!f{%q1c~{-0PJ zU)CMV-asJ#1ilCLjjr94*}4GwdMtHcnY*M*ho|2tYA=@lZu4OJ9gYCZ`2vfh+wgdw zbQGs;b}YWH%+vQXO9R~oEP-DQqCYEhy0M(RZAzV_6HNnM^-V0Db#8Hl?#59noK?|w z(m(>+d2*AA`Un==n484xMWkMmCS{wBO!RQv^nUH6ft=A6DrnHEc2b`=(ZT_lg`J1SMWc$DGz_;tW?GT O0000* obj, uint8_t*data,size_t len) obj->tx_end(); break; } + case 2: // display + { + uint16_t offset = obj->rx_u16(&data[2]); + { + uint8_t *buffptr = &display.buff[offset]; + memcpy(buffptr,&data[4],len-4); + } + obj->tx_init_reply(); + obj->tx_end(); + break; + } default: break; }