驚いたことに、古いソニーのprs-505電子書籍は、あらゆる種類の自家製製品の非常にクールなデザイナーです。もう一度、私は自分自身を「紙」の時計にするためにこの本を取りました。数字が大きくて明るいのに、暗闇で光らず、睡眠を妨げないので、私はこの解決策が好きです。電子紙の時計のアイデアはまったく新しいものではありませんが、私はこのクールな電子書籍をもう一度試してみたかっただけです。結果は、私ができるので、一種の週末のプロジェクトです。いつものように、私はすべての可能なレーキとミスを集めました。私はこの記事で私の厄介な道を説明しました。
バックグラウンド
きっと多くの人が、私が電子書籍のディスプレイを操作する方法を説明した「ディスプレイとしての電子書籍」を覚えているでしょう。
投稿「ディスプレイとしてのE-book」からの写真。
実際、私は画像を表示するビデオデバイスのフレームバッファを使用していました。その記事の主な問題は、画像をデバイスに転送することでした。それから、本が誰かに渡されたので、私の計画を終わらせるのに十分な火薬と動機を自分の中に見つけられませんでした、そしてそのような装置を作るという考えは忘れられました。しかし、著者からの素晴らしい記事のリリース後、すべてが変わりましたalexshnup:「Wirenboard5用の電子インクまたはGoでバーコードを描画する」。記事上でalexshnupバーコードスキャナーをデバッグするために、この本の画面にバーコードを表示する問題を解決しました。そして、画像を本に転送する問題を解決しました。
要するに、 alexshnupブックがUSB経由で接続されると、600x800 = 480,000バイトのサイズの追加の仮想ハードディスクを作成するカーネルモジュールを作成しました。より正確には、ディスクは1 MBになりますが、表示領域はわずか480,000バイトです。実際、ディスクのメモリに入るすべてのものは、本の画面に移動します。一般的に、これは素晴らしい作品です。たとえば、そこでファイルシステムを作成すると、ディスクレイアウトがどのようになっているのかを視覚的に確認することもできます。たとえば、次のコマンドを使用して画像を本に送信できます。
djpeg -pnm -grayscale test.jpg | dd bs=1 skip=15 | dd of=/dev/sdx bs=480k
この記事でさらに説明するものはすべて、これら2つの実験のイデオロギー的な続きです。
始めて、修正して、もう一度やりましょう
記事を 読んだ後、著者に連絡しましたalexshnup..。そして彼は私に実験のために分解された本を1冊与えることに決めました。その結果、作業機を手元に置いて、楽しく実験に取り掛かりました。最初に行う必要があるのは、prs-plusファームウェアをインストールすることでした。その後、記事に従って画像を転送するための仮想ハードドライブを作成してみることができますalexshnup..。私は記事を引用しません、それは包括的なガイドです。その後、ddコマンドを使用して画像を転送しようとします。
画像は新しい方法で送信されます。
すべてのカードが私の手にあり、画像を転送するためのインターフェイスがあり、好きなように使用できることに喜んで気づき、私はたくさんの実験を始めました。私は時計プログラムを書き始め、それらの出力を本にデバッグしました。その結果、コマンド「dd」(「ディスクデストロイヤー」)の場合と
同じように、ディスクを間違えたのですが…その結果、仮想ディスクではなく、本自体のディスク(フラッシュドライブ)に書き込んで、レンガに変えてしまいました… -セクション。その時の気持ちをすべて伝えることすらできません。
開いた本。
主なこと、この本をどのように復元するかは明確ではありませんでした。同じタイプの別の本を取り、その上にprs-plusファームウェアを再インストールする必要があることは明らかでした。次に、これらの最初の480,000バイトを取得して、このブリックに転送します。
一般的に、私は悲しくてびっくりして、Avitoで新しいSonyprs-505電子書籍を購入しました。同時に、本はすべての作業ボタンが付いていました、ケースでは、列車は引き裂かれませんでした。それはその意図された目的のためにさえ使用することができました、唯一のことはバッテリーが半分死んでいたということでした。しかし、私の目的では、それで十分でした。現在、バッテリーが切れているため、これらの本は最大1,000ルーブルまで見つけることができます。私の意見では、オープンソースとそのようなゴージャスな省電力システムを備えたLinuxデバイスの理想的な価格です。
買いたての電子書籍。
この本では、同じ方法でファームウェアをインストールする手順を繰り返し、計画どおり、ある電子書籍から別の電子書籍に480,000バイトのファットセクションを転送しました。このようにして、私はすでに2冊の本を楽しんでいました。確かに、完全に分解されたものは、神々しくバグがあり始め、私は実際にはそれを使用しませんでした。
ソフトウェアを書く
時計のアイデアは非常にシンプルです。キャンバス上に時間のイメージを作成し、それをフレームバッファーに送信するだけです。これを行うために、数字とコロンを形成します。シートのように見ると、この本の解像度は600x800(私は間違っていませんでした、正確には600x800)であることを思い出させてください。
CC:MM:SS-それが8文字になります。合計で、各桁は100x600です。数字には素敵なフォント「Gideon's-Army-」を選びました。次に、imagemagickを使用して、次のコマンドで数字とコロンを形成します。
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
その結果、0から9までの数字とコロンが得られます。これが2番目の例です。
特定のpgmファイルのヘッダーを切り取った場合、このデータはすぐに本に書き込むのに適しています。これについては、私の記事「ディスプレイとしての電子書籍」で詳しく説明したので、これについては詳しく説明しません。
次に、ファイルマッピングを使用してマトリックスをメモリにコピーするだけで、フレームバッファに書き込むためにこれらの数字からビットマップを形成するのは技術の問題でした。プロジェクト全体は、リポジトリgithub.com/dlinyj/sony_prs-505_clockにあります。
プログラム全体がファイルtime.cに含まれています。..。コード全体を分析することはしませんが、いくつかの点について詳しく説明します。このプログラムでは、メモリへのファイルマッピング(フレームバッファ、テストファイル、または電子書籍仮想ディスクのファイルデバイス)を実行するだけです。次に、ファイルをメモリ領域として使用しています。その中で、現在の時刻に応じて時計のシンボルの画像をコピーします。
画像を作成するファイルをメモリに表示します。
image = mmap (0, file_lenght, PROT_WRITE, MAP_SHARED, fd, 0);
画像はprint_symbol関数でコピーされます。この関数に、コピーする桁の位置番号と桁ファイルの名前を渡します。
void print_symbol (unsigned int position, char * filename) {
void * numer_im;
int numer;
numer = open (filename, O_RDWR);
numer_im = mmap (0, NUMER_SIZE, PROT_WRITE, MAP_SHARED, numer, 0);
memcpy(&image[first_header + NUMER_PIXELS * position], &numer_im[16], NUMER_PIXELS);
munmap (numer_im, NUMER_SIZE);
close(numer);
}
ここで、数字ファイルを開き、マップされた画像のメモリ領域の適切な位置にコピーします。
原則として、ファイルを開いてから読み取ってから閉じるのではなく、メモリにコピーを作成してそこからコピーすることは毎回可能でしたが、良いアイデアが生まれたのは今だけです。
このプログラムをコンピューターで実行してイメージを形成する場合は、Makefileでコンパイラーを変更し、defineを削除することを忘れないでください。
# Makefile .
#CFLAGS=-D __BOOK__
CC = gcc
#CC= /opt/cross/gcc-3.2.3-glibc-2.2.5/arm-unknown-linux-gnu/bin/arm-unknown-linux-gnu-gcc
プログラムをコンパイルし、パラメーターなしで実行します。その結果、現在の時刻を含むファイル「test.pgm」が取得されます。
特定のファイルデバイスを指定した場合、画像の形成にはpgmファイルのヘッダーがなく、ブックへのアップロードに適しています。また、このプログラムを本に読み込んで、時間を自動的に更新することもできます。
USBブックを接続したPCでこのプログラムを実行し、時刻を表示しました。プログラムは単純に開始されます(start.shスクリプトは、デバイスファイルを受け入れます)。
#!/bin/bash
while true;do ./time $1;done
その結果、画面上で時計が動いているのを見ることができます。
結論
プログラムは、収集して電子書籍に記入し、時計に変えることができるように書かれています。このような複雑な技術装置を時計として使用するのはおかしいように思えるかもしれませんが、そうではありません。現在、これらの本ではバッテリーが切れており、それらを交換するのはかなり骨の折れる作業です。バッテリーをエミュレーター(本を機能させるがエネルギーを蓄えないブランク)に交換し、本を充電器に接続すると、常に機能します。
私の実験では、充電器の本がスリープモードにならず、時計が継続的に動作することが示されました。さらに、本自体には時計が内蔵されており、時間を正しく表示できます。
私が遭遇し、解決できなかった問題の1つは、グラフィックインターフェイス自体の読み込みを抑制しながら、時計プログラムを本の自動読み込みに追加して、表示の競合が発生しないようにする方法です。一般的に、さらなる実験と実験の余地はまだあります。しかし、それはすでに完全に別の話になります、私はこの本を獲得し、時計を表示し、あなたは他のプロジェクトを始めることができます。
Sony prs-505 e-bookを使用するためのクレイジーな提案はありますか?