技術Q&A

Q1.
SmaSvrは定期的に再起動するべきでしょうか?
A1.
一般的に長時間PCの電源を入れ続けると、IOポートの信号が逆転したり、メモリリークするプログラムがある場合にシステムの性能が低下したり不安定になる場合があります。1週間に1回程度はSmSvrを再起動することをお勧めします。
 
Q2.
SmaSvrからどのようなプログラムでレシートプリンタ、カスタマディスプレイ等のシリアル周辺機器を制御できるのですか?
A2.
SmaSvrはシリアル周辺機器を制御するためにPHPで書かれたサンプルプログラムをご用意しております。
弊社で用意しているserialControl.phpを利用すると、以下のようなプログラムでシリアル周辺機器を制御することができます。

<?php
// SmaSvrからカスタマディスプレイLED841に「1234」を表示させるサンプルプログラム
// シリアルコントロールクラスを利用します。
require (“serialControl.php”);
$serial = new serialControl();

// LED841の表示コマンドを設定します。
$msg = chr(0x1B) . chr(0×30) . chr(0×44) . 1234 . chr(0xD);

// シリアルポート名を指定します。
$serial -> setDevice(“/dev/ttyS0″);
// ボーレートを指定します。
$serial -> setBaudRate(9600);
// データビットを指定します。
$serial -> setDatabit(8);
// ストップビットを指定します。
$serial -> setStopBits(1);
// パリティを指定します。
$serial -> setParity(“none”);
// フロー制御を指定します。
$serial -> setFlowControl(“none”);
// シリアルの設定コマンドを実行します。
$serial -> cmdExec();
// ポートをオープンします。
$serial -> deviceOpen();
// LED841にメッセージを送信します。
$serial -> sendMessage($msg);
// ポートをクローズします。
$serial -> deviceClose();
?>

 
Q3.
ロゴの印刷方法について教えてください。
A3.
(プリンタTM-T885の場合)
まず、ロゴをプリンタに登録する必要があります。弊社の以下のサイトに登録手順が記載されておりますのでご参考にして下さい。

http://facille.info/other/tipsandtricks/tm-t88v/

ロゴの登録が終わったら、プログラムからロゴ出力します。コマンドは以下です。

// ロゴ出力
// 0×1は、プリンタにロゴを登録した時の「ロゴの登録画面」の「番号」の値と一致させます。
// 0×0は、以下の種類があります。
// 0×0⇒ロゴをそのまま印刷
// 0×1⇒ロゴを横2倍にして印刷
// 0×2⇒ロゴを縦2倍にして印刷
// 0×3⇒ロゴを縦横4倍にして印刷
$logo = chr(0x1C) . chr(0×70) . chr(0×1) . chr(0×0);

A2. のサンプルプログラムのようにsendMessageの引数に上記の$logoを指定するとロゴがレシートに出力されます。

 
Q4.
1次元バーコードの印刷方法について教えてください。
A4.
(プリンタTM-T885の場合)
1次元バーコードを印字するために使用するコマンドは以下です。

// バーコードの高さの指定。0×51は1~FFの範囲を指定できます。
$barcodeHight = chr(0x1D) . chr(0×68) . chr(0×51);

// バーコードの横サイズの指定。0×02は、02~06の範囲を指定できます。
$barcodeWidth = chr(0x1D) . chr(0×77) . chr(0×02);

// バーコード印字
// 0×06は以下の種類があります。
// 02:JAN13、03:JAN8、04:CODE39、05:ITF、06:CODABAR
$barcodePrint = chr(0x1D) . chr(0x6B) . chr(0×06);

// スタート/ストップキャラクタ(CODE39、CODABARのみ必要)
$barcodePoint = chr(0×41);

// バーコード終了コード
$barcodeEnd = chr(0×00);

$barcode = $barcodeHight . $barcodeWidth . $barcodePrint . $barcodePoint . 12345 . $barcodePoint . $barcodeEnd;

A2. のサンプルプログラムのようにsendMessageの引数に上記の$barcodeを指定すると12345のバーコードがレシートに出力されます。

【 注意点 】
JAN8は7桁の数値 + チェックデジット1桁(例:12345670)、
JAN13は12桁の数値 + チェックデジット1桁(例:1234567890128)
を指定する必要があります。

 
Q5.
レシートに横文字を印字可能ですか?
A5.
プリンタのページモードにて印字可能です。
例:ABCDEFG
  HIJKLMN
とレシート右上から横に印字する場合
(プリンタTM-T885の場合)

// ページモードの選択
$page = chr(0x1B).chr(0x4C);

// ページモードにおける文字の印字方向の選択
$dir = chr(0x1B).chr(0×54).chr(3);

// ページモードにおける印字領域の設定
$area = chr(0x1B).chr(0×57).chr(0).chr(0).chr(0).chr(0).chr(0).chr(2).chr(63).chr(3);

// 印字データ
$data = “ABCDEFG\nHIJKLMN”;

// ページモードの印字と復帰
$print = chr(0x0C);

$pagedata = $page . $dir . $area . $data . $print;

A2. のサンプルプログラムのようにsendMessageの引数に上記の$pagedataを指定すると横文字がレシートに出力されます。

 
Q6.
SmaSvrのシステムアップデートはどうすればいいのでしょうか?
A6.
お客様のプログラム等の環境がインストールされている状態ですので、システムバックアップを取得しお客様責任でアップデートして頂くことになります。

最近の投稿