Часы на базе PRS-505

Jul 26, 2017 15:19

Так получилось, что данный проект был сделан в "стол" из-за того, что книжку я загубил.

Пришла идея, куда можно применить книжку - сделать часы. Мне нравится большие цифры, и такие чтобы были яркими, но не светились в темноте. Идея не нова, и есть часы на электронной бумаге. Но всё же решил сделать. Решение гениальное и простое. Для начала формируем цифры и двоеточия. Напомню, что разрешение книжки 600х800 (если смотреть как на лист).
ЧЧ:ММ:СС - это как раз восемь символов. Итого, каждая цифра получается размером 100x600. Был подобран приятный шрифт Gideon’s-Army-, и сформированы цифры и двоеточия двумя командами:

for i in `seq 0 9`; do convert -font Gideon’s-Army- -pointsize 150 -size 100x600\
-gravity center -rotate 90 -depth 8 caption:"$i" $i.pgm;done
convert -font Gideon’s-Army- -pointsize 150 -size 100x600 -gravity center -depth 8\
-rotate 90 caption:':' dots.pgm

Если обрезать заголовок файла, то формат как раз для записи в книгу. Получается примерно такая цифиря.



Умышленно сделал бордюр в отображении, чтобы понять формат цифры. ЖЖ режет бордюр. pgm оставил для удобства просмотра. Чтобы понятно какие цифры получились.
Дальше было дело техники сформировать из данных цифр битмап для записи во фреймбуффер, простым копированием матрицы с помощью отображения файла в память. Для удобства отладки, если не указан оконечный файл, то формируется обычный pgm-файл с заголовком, которые можно просмотреть редактором (test.pgm). Если указать конкретный файл (можно файл-устройство), то создаётся чистый битмап (отличается фактически отсутствием заголовка в 54 байта). Результат.



test.pgm

Готовую программу разместил github: https://github.com/dlinyj/sony_prs-505_clock

Если бы была живая книжка, код бы перенёс прямо в книжку. Запускается программа просто (скрипт start.sh, принимает файл-устройство):

while true;do ./time /dev/sd*;done

Цикл внешний, так как не смог победить синхронизацию записи на диск в момент работы программы. Пока программа не завершит работу, данные на диск не попадают. Особенности ядерной организации (4.4.0-53-generic). Всякие sync не помогают. Если в книжку, то надо добавить ещё ioctl как в моей статье на хабре и указать сам fb0 внутри программы (буквально добавить 4 строки в программу). Может допишу позже. Гифка работы под катом.





Пост написал исключительно, чтобы не забыть и не потерять. Думаю, если достану книгу, то доделаю проект, так как почти готов.

prs-505, linux

Previous post Next post
Up