From eff00d235140fd28bc5ea654b0f58c1f121a3e72 Mon Sep 17 00:00:00 2001 From: Andrey Egorov Date: Sun, 15 Sep 2024 20:21:57 +0300 Subject: [PATCH] Add: 1251 5x7 font --- display/mt-12232a.go | 3 + drawer/drawer.go | 12 -- drawer/font.go | 324 +++++++++++++++++++++++++++++++ drawer/text.go | 26 --- go.mod | 2 +- main.go | 28 +-- pkg/mt12232a/mt12232a.go | 6 +- pkg/parallel8bit/parallel8bit.go | 17 +- 8 files changed, 349 insertions(+), 69 deletions(-) create mode 100644 drawer/font.go delete mode 100644 drawer/text.go diff --git a/display/mt-12232a.go b/display/mt-12232a.go index 73ea9a7..cedd4b9 100644 --- a/display/mt-12232a.go +++ b/display/mt-12232a.go @@ -200,6 +200,8 @@ func (d *displayMt12232a) GetBounds() image.Rectangle { } func (d *displayMt12232a) Flush(img *image.Gray) error { + st := time.Now() + for p := byte(0); p < 4; p++ { d.dev.WriteCode(0, (3-p)|0xB8) d.dev.WriteCode(0, 0x13) @@ -230,6 +232,7 @@ func (d *displayMt12232a) Flush(img *image.Gray) error { }) } } + d.logger.Println("Flush time:", time.Since(st)) return nil } diff --git a/drawer/drawer.go b/drawer/drawer.go index 58a0428..c83e2a9 100644 --- a/drawer/drawer.go +++ b/drawer/drawer.go @@ -5,21 +5,15 @@ import ( "sync" "gitea.unprism.ru/yotia/display-test/display" - - "golang.org/x/image/font" - "golang.org/x/image/font/inconsolata" ) type drawer struct { - font font.Face - dev display.Display img *image.Gray imgMutex sync.Mutex } type Drawer interface { - GetFont() font.Face // Lowlevel image GetImg() *image.Gray @@ -37,8 +31,6 @@ type Drawer interface { func New(dev display.Display) Drawer { return &drawer{ - font: inconsolata.Regular8x16, - dev: dev, img: image.NewGray(dev.GetBounds()), } @@ -48,10 +40,6 @@ func (d *drawer) GetImg() *image.Gray { return d.img } -func (d *drawer) GetFont() font.Face { - return d.font -} - func (d *drawer) Lock() { d.imgMutex.Lock() } diff --git a/drawer/font.go b/drawer/font.go new file mode 100644 index 0000000..62f6804 --- /dev/null +++ b/drawer/font.go @@ -0,0 +1,324 @@ +package drawer + +import ( + "log" + + "golang.org/x/text/encoding/charmap" +) + +const ( + CharGap = 1 + LineGap = 1 + FontCharW = 5 + FontCharH = 7 +) + +// Standard ASCII 5x7 font +var stdFont = []byte{ + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty Cell + 0x3e, 0x5b, 0x4f, 0x5b, 0x3e, // Sad Smiley + 0x3e, 0x6b, 0x4f, 0x6b, 0x3e, // Happy Smiley + 0x1c, 0x3e, 0x7c, 0x3e, 0x1c, // Heart + 0x18, 0x3c, 0x7e, 0x3c, 0x18, // Diamond + 0x1c, 0x57, 0x7d, 0x57, 0x1c, // Clubs + 0x1c, 0x5e, 0x7f, 0x5e, 0x1c, // Spades + 0x18, 0x3c, 0x18, 0x0, 0x0, // Bullet Point + 0xff, 0xe7, 0xc3, 0xe7, 0xff, // Rev Bullet Point + 0x18, 0x24, 0x18, 0x0, 0x0, // Hollow Bullet Point + 0xff, 0xe7, 0xdb, 0xe7, 0xff, // Rev Hollow BP + 0x30, 0x48, 0x3a, 0x6, 0xe, // Male + 0x26, 0x29, 0x79, 0x29, 0x26, // Female + 0x40, 0x7f, 0x5, 0x5, 0x7, // Music Note 1 + 0x40, 0x7f, 0x5, 0x25, 0x3f, // Music Note 2 + 0x5a, 0x3c, 0xe7, 0x3c, 0x5a, // Snowflake + 0x7f, 0x3e, 0x1c, 0x1c, 0x8, // Right Pointer + 0x8, 0x1c, 0x1c, 0x3e, 0x7f, // Left Pointer + 0x14, 0x22, 0x7f, 0x22, 0x14, // UpDown Arrows + 0x5f, 0x5f, 0x0, 0x5f, 0x5f, // Double Exclamation + 0x6, 0x9, 0x7f, 0x1, 0x7f, // Paragraph Mark + 0x66, 0x89, 0x95, 0x6a, 0x0, // Section Mark + 0x60, 0x60, 0x60, 0x60, 0x60, // Double Underline + 0x94, 0xa2, 0xff, 0xa2, 0x94, // UpDown Underlined + 0x8, 0x4, 0x7e, 0x4, 0x8, // Up Arrow + 0x10, 0x20, 0x7e, 0x20, 0x10, // Down Arrow + 0x8, 0x8, 0x2a, 0x1c, 0x8, // Right Arrow + 0x8, 0x1c, 0x2a, 0x8, 0x8, // Left Arrow + 0x1e, 0x10, 0x10, 0x10, 0x10, // Angled + 0xc, 0x1e, 0xc, 0x1e, 0xc, // Squashed # + 0x30, 0x38, 0x3e, 0x38, 0x30, // Up Pointer + 0x6, 0xe, 0x3e, 0xe, 0x6, // Down Pointer + 0x0, 0x0, 0x0, 0x0, 0x0, // Space + 0x5f, 0x0, 0x0, 0x0, 0x0, // ! + 0x3, 0x0, 0x3, 0x0, 0x0, // " + 0x14, 0x3e, 0x14, 0x3e, 0x14, // # + 0x24, 0x6a, 0x2b, 0x12, 0x0, // $ + 0x63, 0x13, 0x8, 0x64, 0x63, // % + 0x36, 0x49, 0x56, 0x20, 0x50, // & + 0x3, 0x0, 0x0, 0x0, 0x0, // ' + 0x1c, 0x22, 0x41, 0x0, 0x0, // ( + 0x41, 0x22, 0x1c, 0x0, 0x0, // ) + 0x28, 0x18, 0xe, 0x18, 0x28, // * + 0x8, 0x8, 0x3e, 0x8, 0x8, // + + 0xb0, 0x70, 0x0, 0x0, 0x0, // , + 0x8, 0x8, 0x8, 0x8, 0x0, // - + 0x60, 0x60, 0x0, 0x0, 0x0, // . + 0x60, 0x18, 0x6, 0x1, 0x0, // / + 0x3e, 0x41, 0x41, 0x3e, 0x0, // 0 + 0x42, 0x7f, 0x40, 0x0, 0x0, // 1 + 0x62, 0x51, 0x49, 0x46, 0x0, // 2 + 0x22, 0x41, 0x49, 0x36, 0x0, // 3 + 0x18, 0x14, 0x12, 0x7f, 0x0, // 4 + 0x27, 0x45, 0x45, 0x39, 0x0, // 5 + 0x3e, 0x49, 0x49, 0x30, 0x0, // 6 + 0x61, 0x11, 0x9, 0x7, 0x0, // 7 + 0x36, 0x49, 0x49, 0x36, 0x0, // 8 + 0x6, 0x49, 0x49, 0x3e, 0x0, // 9 + 0x50, 0x0, 0x0, 0x0, 0x0, // : + 0x80, 0x50, 0x0, 0x0, 0x0, // ; + 0x10, 0x28, 0x44, 0x0, 0x0, // < + 0x14, 0x14, 0x14, 0x0, 0x0, // = + 0x44, 0x28, 0x10, 0x0, 0x0, // > + 0x2, 0x59, 0x9, 0x6, 0x0, // ? + 0x3e, 0x49, 0x55, 0x5d, 0xe, // @ + 0x7e, 0x11, 0x11, 0x7e, 0x0, // A + 0x7f, 0x49, 0x49, 0x36, 0x0, // B + 0x3e, 0x41, 0x41, 0x22, 0x0, // C + 0x7f, 0x41, 0x41, 0x3e, 0x0, // D + 0x7f, 0x49, 0x49, 0x41, 0x0, // E + 0x7f, 0x9, 0x9, 0x1, 0x0, // F + 0x3e, 0x41, 0x49, 0x7a, 0x0, // G + 0x7f, 0x8, 0x8, 0x7f, 0x0, // H + 0x41, 0x7f, 0x41, 0x0, 0x0, // I + 0x30, 0x40, 0x41, 0x3f, 0x0, // J + 0x7f, 0x8, 0x14, 0x63, 0x0, // K + 0x7f, 0x40, 0x40, 0x40, 0x0, // L + 0x7f, 0x2, 0xc, 0x2, 0x7f, // M + 0x7f, 0x4, 0x8, 0x10, 0x7f, // N + 0x3e, 0x41, 0x41, 0x3e, 0x0, // O + 0x7f, 0x9, 0x9, 0x6, 0x0, // P + 0x3e, 0x41, 0x41, 0xbe, 0x0, // Q + 0x7f, 0x9, 0x9, 0x76, 0x0, // R + 0x46, 0x49, 0x49, 0x32, 0x0, // S + 0x1, 0x1, 0x7f, 0x1, 0x1, // T + 0x3f, 0x40, 0x40, 0x3f, 0x0, // U + 0xf, 0x30, 0x40, 0x30, 0xf, // V + 0x3f, 0x40, 0x38, 0x40, 0x3f, // W + 0x63, 0x14, 0x8, 0x14, 0x63, // X + 0x7, 0x8, 0x70, 0x8, 0x7, // Y + 0x61, 0x51, 0x49, 0x47, 0x0, // Z + 0x7f, 0x41, 0x0, 0x0, 0x0, // [ + 0x1, 0x6, 0x18, 0x60, 0x0, // + 0x41, 0x7f, 0x0, 0x0, 0x0, // ] + 0x2, 0x1, 0x2, 0x0, 0x0, // ^ + 0x40, 0x40, 0x40, 0x40, 0x0, // _ + 0x1, 0x2, 0x0, 0x0, 0x0, // ` + 0x20, 0x54, 0x54, 0x78, 0x0, // a + 0x7f, 0x44, 0x44, 0x38, 0x0, // b + 0x38, 0x44, 0x44, 0x28, 0x0, // c + 0x38, 0x44, 0x44, 0x7f, 0x0, // d + 0x38, 0x54, 0x54, 0x18, 0x0, // e + 0x4, 0x7e, 0x5, 0x0, 0x0, // f + 0x98, 0xa4, 0xa4, 0x78, 0x0, // g + 0x7f, 0x4, 0x4, 0x78, 0x0, // h + 0x44, 0x7d, 0x40, 0x0, 0x0, // i + 0x40, 0x80, 0x84, 0x7d, 0x0, // j + 0x7f, 0x10, 0x28, 0x44, 0x0, // k + 0x41, 0x7f, 0x40, 0x0, 0x0, // l + 0x7c, 0x4, 0x7c, 0x4, 0x78, // m + 0x7c, 0x4, 0x4, 0x78, 0x0, // n + 0x38, 0x44, 0x44, 0x38, 0x0, // o + 0xfc, 0x24, 0x24, 0x18, 0x0, // p + 0x18, 0x24, 0x24, 0xfc, 0x0, // q + 0x7c, 0x8, 0x4, 0x4, 0x0, // r + 0x48, 0x54, 0x54, 0x24, 0x0, // s + 0x4, 0x3f, 0x44, 0x0, 0x0, // t + 0x3c, 0x40, 0x40, 0x7c, 0x0, // u + 0x1c, 0x20, 0x40, 0x20, 0x1c, // v + 0x3c, 0x40, 0x3c, 0x40, 0x3c, // w + 0x44, 0x28, 0x10, 0x28, 0x44, // x + 0x9c, 0xa0, 0xa0, 0x7c, 0x0, // y + 0x64, 0x54, 0x4c, 0x0, 0x0, // z + 0x8, 0x36, 0x41, 0x0, 0x0, // { + 0x7f, 0x0, 0x0, 0x0, 0x0, // | + 0x41, 0x36, 0x8, 0x0, 0x0, // } + 0x8, 0x4, 0x8, 0x4, 0x0, // ~ + 0x0, 0x0, 0x0, 0x0, 0x0, // Hollow Up Arrow + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x0, 0x0, 0x0, 0x0, 0x0, // Empty + 0x7e, 0x11, 0x11, 0x7e, 0x0, // А + 0x7f, 0x49, 0x49, 0x31, 0x0, // Б + 0x7f, 0x49, 0x49, 0x36, 0x0, // В + 0x7f, 0x1, 0x1, 0x1, 0x0, // Г + 0xc0, 0x7e, 0x41, 0x7f, 0xc0, // Д + 0x7f, 0x49, 0x49, 0x41, 0x0, // Е + 0x77, 0x8, 0x7f, 0x8, 0x77, // Ж + 0x22, 0x41, 0x49, 0x36, 0x0, // З + 0x7f, 0x20, 0x10, 0x7f, 0x0, // И + 0x7f, 0x20, 0x11, 0x7d, 0x0, // Й + 0x7f, 0x8, 0x14, 0x63, 0x0, // К + 0x40, 0x3c, 0x2, 0x7f, 0x0, // Л + 0x7f, 0x2, 0xc, 0x2, 0x7f, // М + 0x7f, 0x8, 0x8, 0x7f, 0x0, // Н + 0x3e, 0x41, 0x41, 0x3e, 0x0, // О + 0x7f, 0x1, 0x1, 0x7f, 0x0, // П + 0x7f, 0x9, 0x9, 0x6, 0x0, // Р + 0x3e, 0x41, 0x41, 0x22, 0x0, // С + 0x1, 0x1, 0x7f, 0x1, 0x1, // Т + 0x47, 0x48, 0x48, 0x3f, 0x0, // У + 0xe, 0x11, 0x7f, 0x11, 0xe, // Ф + 0x63, 0x14, 0x8, 0x14, 0x63, // Х + 0x7f, 0x40, 0x40, 0x7f, 0xc0, // Ц + 0xf, 0x8, 0x8, 0x7f, 0x0, // Ч + 0x7f, 0x40, 0x7c, 0x40, 0x7f, // Ш + 0x7f, 0x40, 0x7c, 0x40, 0xff, // Щ + 0x1, 0x7f, 0x48, 0x48, 0x30, // Ъ + 0x7f, 0x48, 0x30, 0x0, 0x7f, // Ы + 0x7f, 0x48, 0x48, 0x30, 0x0, // Ь + 0x41, 0x49, 0x49, 0x3e, 0x0, // Э + 0x7f, 0x8, 0x3e, 0x41, 0x3e, // Ю + 0x46, 0x29, 0x19, 0x7f, 0x0, // Я + 0x20, 0x54, 0x54, 0x78, 0x0, // а + 0x3c, 0x4a, 0x4a, 0x31, 0x0, // б + 0x7e, 0x59, 0x56, 0x20, 0x0, // в + 0x7c, 0x4, 0x4, 0x4, 0x0, // г + 0xc0, 0x78, 0x44, 0x7c, 0xc0, // д + 0x38, 0x54, 0x54, 0x18, 0x0, // е + 0x6c, 0x10, 0x7c, 0x10, 0x6c, // ж + 0x48, 0x84, 0x94, 0x68, 0x0, // з + 0x7c, 0x20, 0x10, 0x7c, 0x0, // и + 0x7c, 0x21, 0x11, 0x7c, 0x0, // й + 0x7c, 0x10, 0x28, 0x44, 0x0, // к + 0x40, 0x38, 0x4, 0x7c, 0x0, // л + 0x7c, 0x8, 0x10, 0x8, 0x7c, // м + 0x7c, 0x10, 0x10, 0x7c, 0x0, // н + 0x38, 0x44, 0x44, 0x38, 0x0, // о + 0x7c, 0x4, 0x4, 0x7c, 0x0, // п + 0xfc, 0x24, 0x24, 0x18, 0x0, // р + 0x38, 0x44, 0x44, 0x28, 0x0, // с + 0x4, 0x7c, 0x4, 0x0, 0x0, // т + 0x9c, 0xa0, 0xa0, 0x7c, 0x0, // у + 0x18, 0x24, 0xfc, 0x24, 0x18, // ф + 0x44, 0x28, 0x10, 0x28, 0x44, // х + 0x7c, 0x40, 0x40, 0x7c, 0xc0, // ц + 0x1c, 0x10, 0x10, 0x7c, 0x0, // ч + 0x7c, 0x40, 0x70, 0x40, 0x7c, // ш + 0x7c, 0x40, 0x70, 0x40, 0xfc, // щ + 0x4, 0x7c, 0x48, 0x48, 0x30, // ъ + 0x7c, 0x48, 0x30, 0x0, 0x7c, // ы + 0x7c, 0x48, 0x48, 0x30, 0x0, // ь + 0x44, 0x54, 0x54, 0x38, 0x0, // э + 0x7c, 0x10, 0x38, 0x44, 0x38, // ю + 0x48, 0x34, 0x14, 0x7c, 0x0, // я +} + +func IntMin(a, b int) int { + if a < b { + return a + } + return b +} + +func (d *drawer) putChar(x0, y0 int, c byte) { + if int(c) > len(stdFont)/5 { + return + } + + if y0 >= d.img.Rect.Dy() || x0 >= d.img.Rect.Dx() { + return + } + + maxYi := IntMin(y0+7, d.img.Rect.Dy()) - y0 + maxXi := IntMin(x0+5, d.img.Rect.Dx()) - x0 + + for yi := range maxYi { + lineaddr := (y0+yi)*d.img.Stride + x0 + for xi := range maxXi { + d.img.Pix[lineaddr+xi] = ((stdFont[int(c)*5+xi] >> yi) & 1) * 255 + } + } +} + +func convertStr(str string) []byte { + out, err := charmap.Windows1251.NewEncoder().Bytes([]byte(str)) + if err != nil { + log.Println("ENCODE ERROR: ", err.Error()) + } + return out +} + +func (d *drawer) PutText(x0, y0 int, text string) { + d.Lock() + defer d.Unlock() + + asciiStr := convertStr(text) + //asciiStr := []byte(text) + + // Create font drawer + x := x0 + for _, c := range asciiStr { + d.putChar(x, y0, c) + x += CharGap + FontCharW + } +} diff --git a/drawer/text.go b/drawer/text.go deleted file mode 100644 index 81be22e..0000000 --- a/drawer/text.go +++ /dev/null @@ -1,26 +0,0 @@ -package drawer - -import ( - "image" - "image/color" - - "golang.org/x/image/font" - "golang.org/x/image/math/fixed" -) - -func (d *drawer) PutText(x, y int, text string) { - d.Lock() - defer d.Unlock() - - // Create font drawer - col := color.Gray{255} - point := fixed.Point26_6{X: fixed.I(x), Y: fixed.I(y)} - - drawer := &font.Drawer{ - Dst: d.img, - Src: image.NewUniform(col), - Face: d.font, - Dot: point, - } - drawer.DrawString(text) -} diff --git a/go.mod b/go.mod index e82ddb3..52c0bfa 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.22.5 require ( gitea.unprism.ru/KRBL/sim-modem v0.1.7 github.com/stianeikeland/go-rpio/v4 v4.6.0 - golang.org/x/image v0.19.0 + golang.org/x/text v0.17.0 periph.io/x/conn/v3 v3.7.1 periph.io/x/devices/v3 v3.7.1 periph.io/x/host/v3 v3.8.2 diff --git a/main.go b/main.go index fc74a9f..617047e 100644 --- a/main.go +++ b/main.go @@ -47,9 +47,9 @@ func DrawProgress(ctx context.Context, timeout time.Duration) error { // Draw outline x := 0 - y := d.GetFont().Metrics().Height.Ceil() + 4 + y := drawer.FontCharH + 4 w := d.GetImg().Rect.Dx() - h := d.GetFont().Metrics().Height.Ceil() - 4 + h := drawer.FontCharH - 4 d.PutBar(x, y, x+w, y+h, 255) gap := 3 @@ -90,14 +90,16 @@ func Init(ctx context.Context) error { } logger.Println("Display inited") - //// Create drawer - //d := drawer.New(dev) - // - //d.Clear() - ////d.FillBar(0, 0, 10, 10, 1) - //d.PutText(0, 10, "CGSG") - //d.PutText(0, 24, "forever!!!") - //d.Flush() + // Create drawer + d := drawer.New(dev) + + d.Clear() + //d.FillBar(0, 0, 10, 10, 1) + d.PutText(0, 0, "можно 4 строки впихнуть") + d.PutText(0, drawer.FontCharH+drawer.LineGap, "каждая буква 5x7") + d.PutText(0, (drawer.FontCharH+drawer.LineGap)*2, "+ русский через жопу") + d.PutText(0, (drawer.FontCharH+drawer.LineGap)*3, "KRBL forever!!") + d.Flush() // Modem init //mInitCtx, mInitCtxCancel := context.WithCancel(ctx) @@ -169,9 +171,9 @@ func mainE(ctx context.Context) error { if err := Init(ctx); err != nil { return err } - if err := dev.Test(ctx); err != nil { - return err - } + //if err := dev.Test(ctx); err != nil { + // return err + //} defer Close() // if err := MainLoop(ctx); err != nil { // return err diff --git a/pkg/mt12232a/mt12232a.go b/pkg/mt12232a/mt12232a.go index b550458..66897cd 100644 --- a/pkg/mt12232a/mt12232a.go +++ b/pkg/mt12232a/mt12232a.go @@ -10,6 +10,10 @@ import ( "github.com/stianeikeland/go-rpio/v4" ) +const ( + waitReadyTimeout = time.Microsecond +) + type mt12232a struct { logger *log.Logger @@ -154,7 +158,7 @@ func (d *mt12232a) readByte(cd, cs rpio.State) (byte, error) { func (d *mt12232a) waitReady(cs rpio.State) error { // d.pinCS.Write(cs) // Select cristals // return d.dev.WaitReady() - time.Sleep(time.Microsecond) + time.Sleep(waitReadyTimeout) return nil } diff --git a/pkg/parallel8bit/parallel8bit.go b/pkg/parallel8bit/parallel8bit.go index 7da33e0..6a41175 100644 --- a/pkg/parallel8bit/parallel8bit.go +++ b/pkg/parallel8bit/parallel8bit.go @@ -80,13 +80,11 @@ func (d *device) Reset() { } func (d *device) WriteByte(b byte, cd rpio.State) { - // d.logger.Println("Write byte", b, cd, l, r) d.busOutput() d.PinRW.Low() // We write d.PinA0.Write(cd) // Write bus - //d.logger.Printf("Write byte %x\n", b) d.PinDB0.Write(rpio.State((b >> 0) & 1)) d.PinDB1.Write(rpio.State((b >> 1) & 1)) d.PinDB2.Write(rpio.State((b >> 2) & 1)) @@ -103,16 +101,12 @@ func (d *device) WriteByte(b byte, cd rpio.State) { d.PinE.High() // Strobe end time.Sleep(gapTimeout - dataStrobeTimeout - adressWriteTimeout) - //time.Sleep(time.Millisecond) } func (d *device) WriteBytes(b []byte, cd rpio.State) { - // d.logger.Println("Write byte", b, cd, l, r) - - d.logger.Println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") d.busOutput() - d.PinA0.Write(cd) d.PinRW.Low() // We write + d.PinA0.Write(cd) // Write bus d.PinDB0.Write(rpio.State(b[0])) @@ -154,15 +148,6 @@ func (d *device) ReadByte(cd rpio.State) byte { (uint8(d.PinDB5.Read()) << 5) | (uint8(d.PinDB6.Read()) << 6) | (uint8(d.PinDB7.Read()) << 7) - //d.logger.Printf("Read ---- %d%d%d%d%d%d%d%d\n", - // d.PinDB0.Read(), - // d.PinDB1.Read(), - // d.PinDB2.Read(), - // d.PinDB3.Read(), - // d.PinDB4.Read(), - // d.PinDB5.Read(), - // d.PinDB6.Read(), - // d.PinDB7.Read()) // Strobe end d.PinE.High()