
多くの人と同じように、私はさまざまなインターネットラジオ局の音楽を聴くのが好きです。 そしてずっと前に、私は自分を無線LANラジオにすることを決めました。 最初はスマートフォンやタブレットに置き換わりましたが、私は静止したオリジナルの自分のものが欲しかったのです。 さらに、私はチューブとLinuxで何かが欲しかった。 もちろん、そのようなものは販売されていません。 それから、そのようなラジオを自分でカットするというアイデアが生まれました。
発言。 この一連の記事が未完成であることに驚かされます。 いくつかの理由により、2年間公開できませんでした。 したがって、日付に驚かないでください。 幸いなことに、私はそれをレイアウトするための強さ、エネルギー、熱意を見つけました。 そして、これが最後の部分ではないことを心から願っています。
habrahabr.ru/post/206148のlptポートでlcdディスプレイ用のドライバーを書くことについて投稿した後、ディスプレイにうんざりしました。 ただし、その投稿で使用したKhitachevの表示は完全に時代遅れであり、まったく面白くありません。 したがって、その上に一意のデバイスを作成するのは愚かなことです。 もう一度、インスピレーションを求めて、彼はebayをさまよい、古いレシーバーとディスプレイのデザインを見ました。 そして突然、私はちょうど狂ったお金($ 500のようなもの)のために、 VFD (真空蛍光ディスプレイ-真空蛍光ディスプレイ(VLI))に出会いました。 私はそのような金額を支払う準備ができていませんでしたが、それでもこれらのスクリーンは恋に落ちました。 その後、goodicから、これらの画面がレジで使用され、「Customer Display」と呼ばれることを学びました。 何を探して探すべきかが明らかになりました。
顧客ディスプレイ
インターネットで長時間検索し、さまざまなドキュメントを読んだ後、私は本当に欲しいものを決めました。 私の選択は、会社「Posiflex。」のディスプレイに落ちました。 個人的には、 PD-2600とPD-2800の 2つのモデルに決めました。 この機会を利用して、これらのモデルについてATOL企業に感謝します。 両者の主な違いは、コンピューターと電源への接続方法です。 最初のディスプレイには外部電源が必要で、コンピューターのCOMポートを介して接続されます。 2番目のディスプレイはUSB経由で接続されており、そこから電力を供給します。 そうでなければ、それらの違いは終わります。 USBインターフェースにもかかわらず、このディスプレイは原則としてPD-2600と違いはありません。 このディスプレイのUSBインターフェイスは、仮想COMポートと電源の単なるラッパーです。
これらのディスプレイのグローの色は異なることに注意してください。 私は一つの緑、もう一つの青を持っていました。 結局のところ、ディスプレイの色はプレキシグラスフィルターによってのみ決定されます。 通常の形(ライトフィルターなし)では、ほとんど白(緑がかった色)で輝きます。

左側にはオレンジ色のプレキシガラス、真ん中にはスクリーンの自然な色、右側にはネイティブの青い光フィルターがあります。
私の新年(2013年から2014年)にディスプレイが登場したので、機会をつかみ、おめでとうございます。

PD-2600とPD-2800ディスプレイの外観の違い。 碑文は、Hacker誌を読んで働くことから生まれた伝統へのオマージュです。 ごめんなさい:)
もちろん、これはすべて、私が特別なことを何もしなかったサンプルディスプレイの不正な不正行為でした。 仮想マシンで実行されるLinuxベースのキャッシュレジスタに既製のオペレーティングシステムを使用しました。

virtualkaのOS
しかし、サードパーティのアプリケーションを介してラベルを表示するのは退屈で、私は彼と友達になる方法を見つけ始めました。
この動物と一緒に働くには?
あなたが記事を準備しているとき、あなたはあなたの仕事のより良い説明を求めて時折台無しにします。 そして、ハブで、著者がどのようにフォントをディスプレイにアップロードしたかについて簡単に説明する記事に出会いました。 ただし、モデルについても、これらのチームが実際に行っていることについてもまったく言及していません。 したがって、私たちが何を、なぜ行っているのかを人間の言葉で説明しようとしますが、この投稿はマニュアルの簡単な言い回しではありません( RTFM !)。 また、トピックは非常に広範であるため、すべてのステップを噛まないように、マタン形式が存在することに注意してください。「それは明らかです...」。
私はすぐにドキュメントへのリンクを提供します: ドキュメント私はドキュメントを長い間、そして永続的に検索したという事実に注意を引きます。私はアメリカのポジフレックスのウェブサイトでそれを見つけました。 現在、ATOL Webサイト(Posiflexロシア駐在員事務所)で入手できます。 悲しいかな、他のディスプレイからのドキュメントは機能しないか機能しますが、すべての問題ではありません(すべてのヨーグルトが同じように役立つわけではありません)。 以下にその理由を説明します。
それでは、グッズを入手しましょう。 ディスプレイのいずれかをオンにした後、彼は次のように私たちを歓迎します。

このメッセージは、ディスプレイがEpson標準と互換性のあるコマンドモードであることを示しています。 このモードは、ディスプレイケースのスイッチによって設定され、原則として、すべての顧客ディスプレイ上にあるのがデフォルトです。

表示モードを設定する
操作には多くのモードがあることに注意してください。 Epsonディスプレイと互換性のあるコマンドシステムを使用します。 ドキュメントでは、これはEPSONエミュレーションモードセクションです。 「子供たちのアイスクリーム、女性の花。 混同しないでください」(c)
このモードでは、ディスプレイはほとんどvt52端末のようにESCシーケンスによって制御されます(ただし、互換性は完全ではありません)。
インターフェースについて一言
私たちが何をしているのか、そしてその理由の理解を簡単にするために、これは私の記事「 カスタムLinuxドライバーの作成 」で詳細に説明されたことを思い出します。 FAQのネタバレ(検索を介して検索)があり、それが何でどのように機能し、どのコマンドで動作するかを示す写真で見事です。 その記事で明確にするために、「\ 033」はこの記事で「\ x1B」と書くのと同等です(1つは8進数、2つ目は16進数)
コマンドラインディスプレイをいじってみましょう。 多くのプログラミングを接続しません。 今日の記事では、これは真っ逆さまになります。 PD-2600ディスプレイはUSBアダプターを介して接続され、システムからは/ dev / ttyUSB0として認識されると想定しています。 同じことがPD-2800ディスプレイでも機能しますが、それだけが/ dev / ttyACM0として定義されます。
まず、速度を設定します。 デフォルトでは、COMポートの速度(両方のディスプレイ上)は9600です。この速度もスイッチによって設定されます。
stty 9600 < /dev/ttyUSB0
そして、この「非常に複雑なチーム」の後、テストできます。
echo -en "Hello world" > /dev/ttyUSB0

世界に向けたハードウェアこんにちは。
すべて、これで物語は終わります。 Hello worldは成功しました。 しかし、実際には、すべてがそれほど単純ではありません。 このディスプレイは、Great and Mighty Russian言語をサポートしています。 しかし、それは非常に独特です。 ドキュメントによると、ロシア語を使用するには、コード表を選択する必要があります。 これが行われない場合、出力はそのようなパセリになります。
echo -en " \n dlinyj" > /dev/ttyUSB0

ロシア語キリル文字でコードページを有効にするには、次のコマンドを指定する必要があります。
echo -en "\x1B\x74\x06" > /dev/ttyUSB0
次に、テキストを再度表示しようとします
echo -en " \n dlinyj" > /dev/ttyUSB0
そして、そして、再び、残念が私たちを待っています...

どうしたの? 問題は単純であることが判明しましたが、それに触れるのに2日かかりました。 すべてが基本です-エンコーディングの問題。 正しいエンコーディングを使って私を促してくれた、すてきな同志を称賛してください。 その結果、私たちは長い間苦しんでいるチームを手に入れました。チームはまだテキストをロシア語にトランスコードし、画面に表示します。
echo -en " \n dlinyj" | iconv -f UTF-8 -t CP866 > /dev/ttyUSB0

実際、ディスプレイの電源を切るたびにCOMポートを再初期化し、これらのコマンドを与えるという詳細は省略しました。 しかし、もっと美味しいチームがたくさんあります。 例:カーソルの移動、画面のクリア、カーソルのホームへの配置など。 一部のコマンドはvt52と互換性があります。 ドキュメントのコマンドのリスト全体をリストすると、次のようになります。

さて、科学では、「Hello Habr」を導き出すために、次のことをする必要があります。 英語では、便宜上、署名は上の表のチームの名前に対応しています。
stty 9600 < /dev/ttyUSB0 # - echo -en "\x1B\x74\x06" > /dev/ttyUSB0 # Select character code page table. (№6). echo -en "\x1B\x40" > /dev/ttyUSB0 #Initialize display. . ( ). echo -en " \n dlinyj" | iconv -f UTF-8 -t CP866 > /dev/ttyUSB0 #iconv UTF-8 CP866.
ご覧のとおり、チームを使用すると、さまざまな非常においしいことを実行できます。 たとえば、コマンドを使用して、画面のコンマ(ピリオド)のオンとオフを切り替えることができます。 たとえば。
echo -en "\x1F," > /dev/ttyUSB0 # echo -en "\x1F." > /dev/ttyUSB0 #
彼女には別の場所があります。 しかし、私は誰もこの機会を取ることを見たことがありません。 原則として、誰もが単にポイントについて別の親しみやすさを使用します。 下線もあります。 一般的に、ディスプレイはキャベツのスープを調理しません。 特にこのタスクには感謝しないため、写真のディスプレイのすべての機能を紹介するつもりはありません。 ドライバーに関する投稿で、この巨大なネタバレは数人しか読まなかった。
私にとって、これらのディスプレイで最も重要なことは、カスタムフォントの読み込みです。 以下でそれらについて説明します。
重砲を接続します。 カスタムフォント。
これらのディスプレイで最もクールなのは、カスタムフォントのサポートです。 ただし、以下の説明がPD-2600およびPD-2800ディスプレイモデルにのみ適用されることは残念です。 ある会社のフレームワーク内でも、フォント読み込みコマンドの構文は異なります。 そして、私は個人的に、この会社の以前のバージョンのディスプレイ用のドキュメントを使用して、多くのレーキを持っていました。 残念ながら、なぜ誰もがこんなにシンプルな場所で自転車を発明するのか理解できず、1つの企業の枠組み内であっても単一の標準を受け入れません。
これらのディスプレイの開発者向けドキュメントを見つける問題は非常に深刻でした。 一般的な情報はたくさんありますが、開発者向けドキュメントを見つけるのは非常に困難でした(2013-2014)。 私のとげのある道について簡単に説明してください。
当初、プログラマが見つけたドキュメントはPD2100 / 2200ディスプレイのドキュメントでした。 シンボルの読み込みの特性は、シンボルに多くのポイントがあることであり、シンボルマップは次のようになります。

キャラクターマップ
ドキュメントによると、シンボルは次のコマンドによって読み込まれます:<1B> <26>〜(エプソンモード、および以降はそれについてのみ説明します)。 ここで、adはロードされる文字の番号であり、x1-x5は表に従って、5バイトの文字マップです。

PD2100 / 2200ディスプレイ用のバイト単位のドットテーブル
経験的に、キャラクターのダウンロードが進行中であることがわかりました(少なくともそのおかげです)が、この表はPD-2600ディスプレイに対応していません! 開発者は、コマンドの観点からディスプレイは交換できないことに注意してください! 非常に困難でしたが、PD-2600ディスプレイの開発者向けドキュメントを見つけることができました。 ここで、ポイントの表は次のようになります。

ディスプレイPD2600 / 2800用のドット単位のバイト
キャラクターを再コーディングすることは、まだリバスになりますが、完全に解決可能です。
また、 2つのカスタムキャラクターしかロードできないことが判明しました。さらにダウンロードすると、以前のキャラクターはデフォルト値にリセットされます。 唯一のことは、画面に表示されるキャラクターの形状が変わらないことです。そのため、キャラクターを表示して、新しい値でリロードできます(非常に不便です)。
泣き言をやめ、垂直バーを出力する例を見てみましょう。 それを描き、表に従って翻訳します。

文字変換
次の図が表示されます。
X1 = 0001 0000b = 0x10
X2 = 0100 0010b = 0x42
X3 = 0000 1000b = 0x08
X4 = 0010 0001b = 0x21
X5 = 0000 0100b = 0x04
COMポートへの送信は次のようになります(16進数のデータ):
1B 25 01ユーザーキャラクターの使用を有効にします(ユーザー定義のキャラクターを設定/キャンセルします)。 01-文字1。
1B 26 A0 10 42 08 21 04アドレスA0 (ユーザー定義文字の定義)にユーザーキャラクターをロードします。最後の5バイトはキャラクターのビットマスクです。
A0-文字を印刷します
したがって、コンソールではすべてが次のようになります。
まず、ディスプレイを初期化します
echo -en "\x1B\x40" > /dev/ttyUSB0 #Initialize display.
まず、カスタムフォントを許可するコマンドを指定する必要があります。
echo -en "\x1B\x25\x01" > /dev/ttyUSB0 # Set/cancel user-defined characters.
次に、次のコマンドでパイプ文字をロードします
echo -en "\x1B\x26\ xA0\x10\x42\x08\x21\x04" > /dev/ttyUSB0 # Define user defined characters
シンボルは位置A0にロードされ、出力されます。
echo -en "\xA0" > /dev/ttyUSB0
その結果、以下が得られます。

描かれたシンボル
明確にするために、画面を「フェンス」で埋めることもできます

フェンス
一般的に、キャラクターのリロードでは、非常にクールなことができます。 たとえば、5本の異なるキャラクターのリロードであるランニングスティック。
これは何のためですか?他の記事で説明します。
前半の結論
このセクションでは、Posiflex PD-2600およびPD-2800ディスプレイの操作を確認しました。 この投稿は、独立していると主張しています。 顧客ディスプレイでの作業の例を示します。 今でも、そのような表示(など)を取得し、それについての有用な情報を結論付けることができます。 メッセージをツイートしますが。
将来、なぜディスプレイを重視するのかが明確になるでしょう。なぜなら、 これは、今後のクラフトの重要なリンクになります。

プロトタイプの段階の1つ。
次の記事では、このディスプレイをウォームチューブでプログラミングし、ルーター、mpd、その他多くの機能を使用することを検討します。
Z.Y. 見つかったすべてのエラー、不正確な点などについて、私に手紙を書くことをお勧めします。 個人的なメッセージ。 私はすべてのエラーをできるだけ早く修正しようとします!!!