東芝P351系制御コード
東芝P351
東芝P351は輸出向けのシリアルドットプリンターです。東芝のオフコンやパソピア1600等で使われていました。ヨーロッパ/アメリカ輸出向けなので漢字ROMを持っておらず、マルチバイト文字にも対応していません。
デュアルモードプリンター(J31DMP0x)シリーズとは異なるコード体系を持っています。QumeモードにするとQume社のコマンドが使用可能になり、また東芝独自の拡張コマンドも使用可能になります。IBM互換モードにするとデュアルモードプリンターの英語モードと同様、ESC/Pコマンドを受け付けるようになります。
インターフェイスはシリアルとパラレルの2種類用意されており、どちらを使うかはデュップスイッチで切り替えます。
デュップスイッチ
デュップスイッチ1~3は、背面のプリンターケーブルのコネクタ周辺にあります。また、デュップスイッチ4はカバーの中に隠れていますので、デュップスイッチ4を切り替えるためにはカバーを外す必要があります。
デュップスイッチ1
8 | インターフェイス/プロトコルの選択 |
---|---|
7 | |
6 | ボーレートの選択 |
5 | |
4 | |
3 | パリティーチェックの選択 |
2 | |
1 | ストップビットの選択 |
8 | 7 | 意味 | デフォルト |
---|---|---|---|
OFF | OFF | パラレルI/F | ◯ |
OFF | ON | シリアルI/F(X-ON、X-OFF) | |
ON | OFF | シリアルI/F(Ready、Busy) | |
ON | ON | シリアルI/F(ETX、ACK) |
4 | 5 | 6 | 意味 | デフォルト |
---|---|---|---|---|
OFF | OFF | OFF | 110BPS | ◯ |
OFF | OFF | ON | 300BPS | |
OFF | ON | OFF | 600BPS | |
OFF | ON | ON | 1200BPS | |
ON | OFF | OFF | 2400BPS | |
ON | OFF | ON | 4800BPS | |
ON | ON | OFF | 9600BPS | |
ON | ON | ON | 19200BPS |
2 | 3 | 意味 | デフォルト |
---|---|---|---|
OFF | OFF | 偶数パリティ | ◯ |
OFF | ON | 奇数パリティ | |
ON | OFF | パリティーチェックを無視 | |
ON | ON | パリティービットなし |
1 | 意味 | デフォルト |
---|---|---|
OFF | 1ビット | ◯ |
ON | 2ビット |
デュップスイッチ2
10 | ビット長の選択 |
---|---|
9 | キャラクターセットの選択 |
8 | |
7 | |
6 | 文字間ピッチの選択 |
5 | |
4 | イメージ印刷モードの選択 |
3 | フォントの選択 |
2 | |
1 |
10 | 意味 | デフォルト |
---|---|---|
OFF | 8ビット | ◯ |
ON | 7ビット |
7 | 8 | 9 | 意味 | デフォルト |
---|---|---|---|---|
OFF | OFF | OFF | 米国セット | ◯ |
OFF | OFF | ON | 英国セット | |
OFF | ON | OFF | 仏国セット | |
OFF | ON | ON | 独国セット | |
ON | OFF | OFF | スエーデンセット | |
ON | OFF | ON | ノルウェイセット | |
ON | ON | OFF | スペインセット | |
ON | ON | ON | IBMセット |
5 | 6 | 意味 | デフォルト |
---|---|---|---|
OFF | OFF | 10CPI | ◯ |
OFF | ON | 12CPI | |
ON | OFF | プロポーショナル | |
ON | ON | 16.7CPI(コンデンス&ドラフト印字) |
ここで設定するのはあくまで電源投入時のモードであり、後からアプリ側でイメージ印字オン(ESC=)、イメージ印字オフ(ESC?)のエスケープシーケンスで切り替える事もできます。
4 | 意味 | デフォルト |
---|---|---|
OFF | イメージ印字モードオフ | ◯ |
ON | イメージ印字モードオン |
1 | 2 | 3 | 意味 | デフォルト |
---|---|---|---|---|
OFF | OFF | OFF | ドラフト印字 | |
OFF | OFF | ON | 高品位フォント1(Elite) | ◯ |
OFF | ON | OFF | 高品位フォント2(Courier) | |
OFF | ON | ON | フォントカートリッジ1のフォント | |
ON | OFF | OFF | フォントカートリッジ2のフォント | |
ON | OFF | ON | 将来の拡張のために予約 | |
ON | ON | OFF | ||
ON | ON | ON |
デュップスイッチ3
8 | ページ長の選択 |
---|---|
7 | 両方向印字の選択 |
6 | 静音モードの選択 |
5 | LFコマンド受信時の自動復改の設定 |
4 | 自動改行の設定 |
3 | エミュレーションモードの設定 |
2 | 電源投入時にオンラインにするかどうかの選択 |
1 | 行バッファの選択 |
8 | 意味 | デフォルト |
---|---|---|
OFF | 66行 | ◯ |
ON | 72行 |
7 | 意味 | デフォルト |
---|---|---|
OFF | 両方向印字 | ◯ |
ON | 片方向印字 |
6 | 意味 | デフォルト |
---|---|---|
OFF | 通常モード | ◯ |
ON | 静音モード |
5 | 意味 | デフォルト |
---|---|---|
OFF | 自動復改しない | ◯ |
ON | 自動復改する |
4 | 意味 | デフォルト |
---|---|---|
OFF | 自動改行しない | ◯ |
ON | 自動改行する |
3 | 意味 | デフォルト |
---|---|---|
OFF | Qumeモード | ◯ |
ON | IBMモード |
2 | 意味 | デフォルト |
---|---|---|
OFF | オフライン | |
ON | オンライン | ◯ |
1 | 意味 | デフォルト |
---|---|---|
OFF | 4KB | ◯ |
ON | 256KB |
デュップスイッチ4
6 | 改行コードの選択 |
---|---|
5 | テストモードの選択 |
4 | 印字位置の微調整 |
3 | |
2 | |
1 |
6 | 意味 | デフォルト |
---|---|---|
OFF | ヘッドが復改するだけ。 | ◯ |
ON | ヘッドが復改してさらに紙送りもする。 |
5 | 意味 | デフォルト |
---|---|---|
OFF | セルフテスト | ◯ |
ON | サービステスト |
のように、ヘッドが左←右の方向に動く時に左にズレる場合は、ビット1~4を低い値にします。
のように、ヘッドが左←右の方向に動く時に右にズレる場合は、ビット1~4を高い値にします。
ESCシーケンス
P351にはQumeモードとIBMモードがあり、デュップスイッチで切り替えるようになっています。ここでは、Qumeモードについて説明します。
IBMモードについては、ESC/Pと同じですので、ESC/P系制御コードのページを御覧ください。
プリンター初期化
ESC SUB I(1B 1A 49)
ESC CR P(1B 0D 50)
プリンターを電源投入時の状態にします。電源投入時の状態は、デュップスイッチの設定に従います。二種類ありますが、どちらも同じです。
エミュレーションモードの選択
ESC _(1B 5F)
エミュレーションモードをQumeモードにするか、IBMモードにするかを選択します。ESC _に続いて0でQumeモード、1でIBMモードになります。電源投入時はデュップスイッチの設定に従います。このコマンドを受信するとプリンターは(エミュレーションモード以外は)電源投入時の設定に戻ります。
それはいいんだけど、マニュアルにはパラメーターがバイナリなのかテキストなのか書いてません。他のコマンドにパラメーターをバイナリで指定するコマンドが少ない事からも、おそらくテキストではないかと思われます。
フォントの選択
ESC *(1B 2A)
フォントを選択します。ESC *に続いて1バイトのテキスト(30H~37H)で指定します。
0 ・・・ 高速印字
1 ・・・ 高品位 Elite
2 ・・・ 高品位 Courier
3 ・・・ 高品位プロポーショナル
4 ・・・ 高品位ダウンロード文字1
5 ・・・ 高品位ダウンロード文字2
6 ・・・ 高品位カートリッジ1のフォント
7 ・・・ 高品位カートリッジ2のフォント
ダウンロード文字の登録
ESC &(1B 26)
ダウンロード文字を登録します。
書式
ESC | & | C1 | C2 | C3 | C4 | C5 | C6 | N1 | N2 | W1 | W2 | P1 | P2 | DATA・・・ |
テキストで4または5を指定します。4でダウンロード文字1、5でダウンロード文字2になります。
C2 デフォルトのピッチ
テキストで、N E Pのいずれかを指定します。
N ・・・ ノーマルピッチ 10CPI
E ・・・ エリートピッチ 12CPI
P ・・・ プロポーショナルピッチ
C3 存在するピッチ
テキストで1~7を指定します。
1 ・・・ 1/10
2 ・・・ 1/12
3 ・・・ 1/10、1/12
4 ・・・ プロポーショナル
5 ・・・ 1/10、プロポーショナル
6 ・・・ 1/12、プロポーショナル
7 ・・・ 1/10、1/12、プロポーショナル
1/10=パイカピッチ
1/12=プロポーショナルピッチ
C4 登録/更新
1バイトのテキストで指定します。0で登録、1で更新です。すでに登録されているコードに新規登録、または登録されていないコードに更新をしようとした時は無視されます。
C5 C6 予備
未使用。2バイトの0(30H 30H)をセットします。
N1 シフトイン/シフトアウト
シフトイン(0FH)かシフトアウト(0EH)を指定します。
N2 コード
登録するコードを指定します。登録できるコードは、シフトイン時は21~7E、シフトアウト時はA0~BFですが、この場合実際には20~3Fに登録されます。シフトイン時の20Hや7FHには文字を登録する事ができません。ここに00(NULL)を指定すると、このコマンドはここで終了します。
W1 W2 キャラクター幅
キャラクターの幅を2バイトのテキストで、1/180インチ単位で指定します。01~23まで指定できます。
P1 P2 データー幅
データーの幅を2バイトのテキストで指定します。キャラクターの幅は1/180インチ単位で指定しますが、データーの幅は1/360インチ単位で指定します。したがって、データー幅はキャラクター幅の2倍-2を越えてはいけません。(2ラインは余白です。)
データー・・・
キャラクターのパターンを送信します。先の指定のデーター幅x4バイト必要ですが、実際には下位6ビットしか使いません。下位ビットが下、上位ビットが上です。
注意:
以下、「」内はマニュアルからの引用です。
・「水平に隣接した、いかなるドットも使ってはならない。1ドット1/360インチのアドレスを選択できるが、実際に印字できるのは1/180インチだからである。」って、なんのこっちゃ!? しかし、水平に隣接させちゃいけないんだとえらい難しい気も!?まあ、偶数カラムは全部0にしとけば間違いないかと。
・「23ライン目24ライン目はアンダーライン用のリザーブである。ここにドットを打ってもアンダーラインに上書きされる。」・・・要するにここにドットを打っても消されちゃうよって事みたい。
・「印字ヘッドのオーバーヒートを防ぐためにも、打刻するドットは全体の15%を越えてはならない」んだそうです。
トップマージン
ESC +(1B 2B)
現在の用紙の位置がトップマージンになります。
ボトムマージン
ESC -(1B 2D)
現在の用紙の位置がボトムマージンになります。
左マージン
ESC 9(1B 39)
現在のヘッドの位置が左マージンになります。
右マージン
ESC 0(1B 30)
現在のヘッドの位置が右マージンになります。
改行幅
ESC L(1B 4C)
改行幅を1/48インチ単位で設定します。ESC Lに続いて2桁のテキストで指定します。大抵は2桁で足りるのですが、どうしても3桁を指定したい時は、十の位のみ16進数(A~F)が指定できます。一の位は10進数です。
代替改行幅の指定
ESC ES(1B 1E)
改行幅を1バイトのバイナリで指定します。ただし、実際の値はそれに-1した値です。00(NUL)が指定された場合は無視されます。
パラメーター | 設定される値 |
---|---|
01H | 0 |
02H | 1 |
03H | 2 |
文字間ピッチ
ESC E(1B 45)
文字間ピッチを1/120インチ単位で設定します。ESC Eに続いて2桁のテキストで指定します。大抵は2桁で足りるのですが、どうしても3桁を指定したい時は、十の位のみ16進数(A~F)が指定できます。一の位は10進数です。
代替文字間ピッチの指定
ESC US(1B 1F)
文字間ピッチをキャラクター1文字で指定します。後は「代替改行幅の指定」と同じなので、そちらを見てください。
ページ長指定
ESC F(1B 46)
1ページの長さを1/6インチ単位で指定します。ESC Fに続いて2桁のテキストで指定します。大抵は2桁で足りるのですが、どうしても3桁を指定したい時は、十の位のみ16進数(A~C)が指定できます。パラメーターは00~C7までが指定できます。
水平タブ全クリア
ESC 2(1B 32)
水平タブを全てクリアします。
現在位置の水平タブクリア
ESC 8(1B 38)
現在のヘッドの位置にある水平タブをクリアします。
現在位置の水平タブセット
ESC 1(1B 31)
現在のヘッドの位置を水平タブとして設定します。
水平タブセット(リスト)
ESC ( (1B 28)
水平タブをリストに従って設定します。ESC (に続いて、カンマ区切りで2桁のテキストで指定します。一番最後はピリオドを送信します。水平タブは0-159カラムまで指定でき、最大32個まで指定できます。2桁で足りない時は、十の位のみ16進数(A-F)が指定できます。
水平タブクリア(リスト)
ESC ) (1B 49)
水平タブをリストに従ってクリアします。リストの書式は「水平タブセット(リスト)」と同じですので、そちらを御覧ください。
1/2行バック改行
ESC D(1B 44)
現在設定された改行幅の半分だけ逆改行します。改行幅に奇数が指定されている時は、小数点以下切り捨てになります。
1/2行順改行
ESC U(1B 55)
現在設定された改行幅の半分だけ順改行します。改行幅に奇数が指定されている時は、小数点以下切り捨てになります。
1行逆改行
ESC LF(1B 0A)
1行逆改行します。現在用紙の先頭にある時は無視されます。ストックフォームで印字されている時は逆改行しても問題ないのですが、カットシートフィーダーで単票用紙を使っている時は、用紙の1/4以上を逆改行させないでください。また、用紙のボトム位置まで4行以内の時に逆改行させるとジャムるので、しないようにしてください。
用紙位置相対移動
ESC V(1B 56)
用紙位置を現在の位置から相対的に移動させます。移動量は1/48インチ単位で3桁のテキストで指定しますが、独自の16進数で指定します。具体的には、キャラクターコードから40Hを引いた値が設定値になります。
引数 | 値 |
---|---|
@ | 0 |
A | 1 |
B | 2 |
C | 3 |
D | 4 |
E | 5 |
F | 6 |
G | 7 |
H | 8 |
I | 9 |
J | 10 |
K | 11 |
L | 12 |
M | 13 |
N | 14 |
O | 15 |
つまり、 @@@=000、 @@A=001、@@B=002・・・ OOO(オーオーオー)=4095になります(注1)。 また、1桁目に限り、P~Vが指定できます。
引数 | 値 |
---|---|
P | -0 |
Q | -1 |
R | -2 |
S | -3 |
T | -4 |
U | -5 |
V | -6 |
つまり、キャラクターコードで15(0FH)だけ下駄履かせされた値はマイナスになります。つまり、P@Aは-001、P@Bは-002、VOOは-1791になります。(注2)
とはいえ、今即興で関数電卓で計算しただけで、正確性は定かではありません。もし計算が違っていても、決してYahoo知恵袋や教えてgoo等に晒すのはやめてください。
マイナスの値が指定された時は逆改行になります。ただし、トップマージンを越えて順改行、逆改行できるのは連続用紙(ストックフォーム)だけです。単票用紙の場合は、トップマージンよりも前には逆改行できませんし、ボトムマージンより下に改行させると次の紙の先頭になります。
垂直タブ絶対位置移動
ESC P(1B 50)
n番目の垂直タブの位置に移動します。ESC Pに続いて2桁のテキストで指定します。十の位に限り、16進数(A~F)が指定できます。
代替垂直タブ絶対位置移動
ESC VT(1B 0B)
n番目の垂直タブの位置に移動します。タブ番号はキャラクター1文字で指定します。後は「代替改行幅の指定」と同じなので、そちらを見てください。
順改行開始
ESC 5(1B 35)
順方向に改行します。つまり、逆改行モードを解除します。
逆改行開始
ESC 6(1B 36)
逆方向改行モードになります。すでに逆改行モードになっている場合は無視されます。復改コード(CR)を受信するか、順改行コマンドを受信すると解除されます。
1/120インチバックスペース
ESC BS(1B 08)
ヘッドが1/120インチだけ左に戻ります。
重ね打ち
ESC N(1B 4E)
次の文字を印字するまで、印字ヘッドがその場に留まります。
印字位置相対位置移動
ESC H(1B 48)
印字位置を相対的に移動させます。ESC Hに続いて独自の16進数3桁で指定します。パラメーターについては、「用紙位置相対移動」と同じなので、そちらを御覧ください。
水平位置相対移動
US(1F)
印字ヘッドを1/120インチ単位で相対的に移動させます。1Fに続いて1バイトのバイナリで移動量を指定します。01H~3FHまでが右、41H~7FHまでが左に移動します。ただし、41H~7FHは40Hを引いた値が移動量になります。
パラメーター | 移動量(n/120インチ) |
---|---|
01H | 1 |
02H | 2 |
03H | 3 |
: | |
3FH | 63 |
パラメーター | 移動量(n/120インチ) |
---|---|
41H | -1 |
42H | -2 |
43H | -3 |
: | |
7FH | -63 |
水平タブ位置に移動
ESC C(1B 43)
n番目の水平タブの位置に移動します。パラメーターは2桁のテキストです。十の位のみ16進数(A~F)が指定できます。
代替水平タブ位置に移動
ESC HT(1B 09)
n番目の水平タブの位置に移動します。パラメーターは代替改行幅の指定と同じです。
自動復改、改行オン
ESC W(1B 57)
ヘッドが右マージンに達した時に、自動改行&復改をします。
自動復改、改行オフ
ESC Z(1B 5A)
ヘッドが右マージンに達した時は、復改コードを受信するまで印字するデーターは捨てられます。
自動改行オン
ESC , (1B 2C)
復改コード(CR)を受信した時に改行をするようにします。Macでは改行コードがCRのみなのでこのモードにしておきます。MS-DOSやWindowsでは改行コードがCR
LFなので、このモードにすると改行コードの受信で2回改行してしまうので注意が必要です。
自動改行オフ
ESC . (1B 2E)
右マージンコントロールオン
ESC O(1B 4F)
もし右マージンまであと5キャラ以内のところで空白(20H)を受信したら、自動的に改行します。まあ、英語圏ならではの機能ですね。日本語なら好きな場所で改行できますから。
右マージンコントロールオフ
ESC Y(1B 59)
両方向印字
ESC <(1B 3C)
片方向印字
ESC <(1B 3E)
電源投入時はデュップスイッチ3-7の設定に従いますが、このコマンドで変更する事ができます。
無印字モードオン
ESC S(1B 53)
印字データーに従ってヘッドが動くだけで、何も印字しなくなります。ヘッドの故障(ベルトとか)をチェックする場合に使います。
無印字モードオフ
ESC T(1B 54)
プロポーショナルピッチオン
ESC $(1B 24)
プロポーショナルピッチモードになります。
プロポーショナルピッチオフ
ESC %(1B 25)
ボールド体オン
ESC K(1B 4B)
ボールド体になります。具体的には、同じ文字を多重印字します。ESC Kに続いて以下の値を1桁のテキストで指定します。
1 ・・・ 二重印字
2 ・・・ 三重印字
3 ・・・ 四重印字
4 ・・・ 五重印字
ボールド体オフ
ESC M(1B 4D)
影付き文字印字オン
ESC Q(1B 51)
文字を縦と横に1ドットずつズラしてもう1回印字します。
影付き文字オフ
ESC R(1B 52)
イタリックオン
ESC DC2(1B 12)
斜字体になります。
イタリックオフ
ESC DC4(1B 14)
1/60グラフィックモードオン
ESC 3(1B 33)
以後、スペースやバックスペースは1/60インチになります。また改行は1/48インチになります。自動改行や自動復改は無効になります。
1/120グラフィックモードオン
ESC G(1B 47)
以後、スペースやバックスペースは1/120インチになります。また改行は1/120インチになります。
1/60または1/120グラフィックモードオフ
ESC 4(1B 34)
1/60、1/120いずれのグラフィックモードもオフになります。
プログラムモードオン
ESC SO(1B 0E)
20H未満のコード(コントロールコード)を受信した場合に、NUL、ESC、DC2のように何が受信されたを印字するようになります。
第二プログラムモードオン
ESC #(1B 23)
20H以上のコードは等倍フォントで印字され、20H未満のコードは全て無視されます。
プログラムモードオフ
ESC SI(1B 0F)
横倍角オン
ESC !(1B 21)
横二倍角になります。
横倍角オフ
ESC "(1B 22)
アンダーラインオン
ESC I(1B 49)
アンダーラインオフ
ESC J(1B 4A)
コンデンスモードオン
ESC [(1B 5B)
高速印字モードになります。
コンデンスモードオフ
ESC J(1B 5D)
グラフィックモードオン
ESC =(1B 3D)
グラフィックモードになります。イメージ印字のみが有効となり、内蔵フォントは使えなくなります。
キャラクターモード
ESC ?(1B 3F)
グラフィックモードを終了し、キャラクターモードに戻ります。
イメージ印字
ESC ; (1B 3B)
イメージ印字を開始します。1ドットにつき横1/180インチです。ESC ;に続いて列数、データー・・・と指定します。列数は4バイトのテキストで指定します。たとえば10列なら0010とします。データーは1列につき4バイトなので、10列なら40バイト必要です。データーのフォーマットは「ダウンロード文字の登録」と同じですので、そちらをご覧ください。
高品位イメージ印字
ESC GS(1B 1D)
パラメーターについては「イメージ印字」と全く同じですが、こちらは1ドットにつき横1/360インチで印字されます。したがって、「イメージ印字」よりも倍の密度で印字されます。