LoginSignup
6
4

More than 3 years have passed since last update.

サーマルプリンターなどのPOS機器を制御する何通りかの方法

Last updated at Posted at 2020-07-29

これは「C#によるPOS開発入門(的な)」と称して連載している記事の1つです。他はこちら

1. はじめに

POSの機器を制御する方法は何通りかありますが、その方法について基礎的な情報がネット上に全くと言って良いほど無かったので、ここで説明しようと思います。実際のコーディングについては、こちらの記事でPOS for .NETで制御する方法について説明しているので、良ければ合わせて参考にして下さい。

POS開発について勉強し始めた当時、私に教えてくれるような人など周りにいなかったため、ここに書いてあるのはサンプルやマニュアルの見ながらの完全独学な知識です。「ここ良くないよー」という所があれば教えて下さると泣いて喜びます。

2. この記事の対象読者

  • POS開発に興味があるが、やったことは無くやり方も知らない人
  • 面白そうだったので感熱プリンターを買ってみたものの、動かし方が分からず途方に暮れている人

3. サーマルプリンター・カスタマーディスプレイの場合

制御する方法は大きく分けて4通りあります。

  • 地道にコマンドを送信する方法
  • WPS準拠ドライバーを使用する方法
  • メーカー独自のDLLからドライバーを呼び出す方法
  • 統一規格に準拠したドライバーを使用する方法

地道にコマンドを送信する方法

一番初めに提供された方法であり、かつ最も低水準な方法です。
シリアルポート・パラレルポートにコマンドを送信して、機器を直接制御します。C#の場合はSystem.IO.Ports.SerialPortを利用します。

各メーカーで独自のコマンドを制定していることが多いです(例……スター精密: スターグラフィックモード/スターラインモード等、EPSON: ESC/POS、SATO: SBPL)。コマンドは基本的にASCIIで表されます。
権利の関係でサンプルを掲載することが出来ません。メーカーのマニュアル等を参照して下さい。ESC/POSのリファレンスはこちらです。

WPS準拠ドライバーを使用する方法

メーカーがWPS準拠のドライバーを提供している場合は、System.Printingからドライバーを制御することが出来ます。
が、こんな業務用のごついプリンターをSystem.Printingで動かすのって、何かカッコ悪くありません……? そう思うのは私だけでしょうか。
この方法のサンプルはそこら中にあると思うので割愛します。

メーカー独自のDLLからドライバーを呼び出す方法

WPS準拠のドライバーをメーカー独自のDLLから呼び出して制御する、という形態をとっているものもあります。
メーカーがSDKを提供している場合は、このパターンが一番多い印象です。

統一規格に準拠したドライバーを使用する方法

コマンドを送信して機器を直接制御する場合、メーカーによってコマンド体系が違うため、POSアプリケーションを開発・販売するには制御処理を機器のメーカー別に何種類も準備する必要がありました。
そこで、制御コードの統一規格を設け、機器メーカーにその規格に準拠したドライバーを提供させることで、どのメーカーの機器も同一のコードで制御することを可能にしました。こういった規格の1つがOPOS(POS for .NET1)です。

4. キャッシュドロアの場合

制御する方法は、ドロアの接続方式によって変わります。

モジュラーケーブル(ドロアキックケーブル・DKD)接続の場合

電話の接続にも使われる6ピンのケーブルでサーマルプリンターに接続し、サーマルプリンターから信号を送信することでキャッシュドロアを開けます。

  • PCからコマンドを送信する方法
  • サーマルプリンターでの印刷時にドロアを開くよう設定する方法
  • WPS準拠ドライバーを使用する方法
  • メーカー独自のDLLからドライバーを呼び出す方法
  • 統一規格に準拠したドライバーを使用する方法

USB接続の場合

PCにUSBケーブルで直接接続するタイプも存在します。

  • PCからコマンドを送信する方法
  • WPS準拠ドライバーを使用する方法
  • メーカー独自のDLLからドライバーを呼び出す方法
  • 統一規格に準拠したドライバーを使用する方法

この他にLAN接続のタイプ等もありますが、あまり多くはありません。

各方式の詳細は「サーマルプリンター・カスタマーディスプレイの場合」の項を参照して下さい。

5. バーコードリーダーの場合

PCに読み取ったバーコードの情報を送信する方式で2種類に分けられます。

  • シリアル通信としてやりとりする場合
  • キーボードをエミュレートする場合

シリアル通信としてやりとりする場合

System.IO.Ports.SerialPortで接続しDataReceivedイベントを待機することで、読み取ったバーコードの情報を取得します。

キーボードをエミュレートする場合

読み取ったバーコードの情報がキーボード入力されます。

6. 終わりに

この記事以外にもPOS開発関連の記事を投稿しています。もし良ければこちらからどうぞ。


  1. POS for .NETは、OPOSを.NETで実装したものです。 

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4