Add: 1251 5x7 font

This commit is contained in:
Andrey Egorov 2024-09-15 20:21:57 +03:00
parent 5d67d667d7
commit eff00d2351
8 changed files with 349 additions and 69 deletions

View File

@ -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
}

View File

@ -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()
}

324
drawer/font.go Normal file
View File

@ -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
}
}

View File

@ -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)
}

2
go.mod
View File

@ -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

28
main.go
View File

@ -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

View File

@ -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
}

View File

@ -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()