###前提・実現したいこと
家庭用のインクジェットプリンターで1行ずつ印刷/行送りがしたいです。
用途は、テレタイプ(テレタイプの動作動画)みたいにターミナルやラインエディタをプリンタで使ってみたい、というものです。(普通のプリンタは印字部が奥まっているので、最後に印刷した行は、紙を引っ張り出さないと見られず実用的でないですが…)
文字をプリンタに送って、それを印刷した後、(紙を全て排出してしまうのではなく)その行か次の行で待機していて、
また文字が送られてきたときはそれを次の行から印刷して欲しいのです。
###発生している問題・エラーメッセージ
エラーメッセージ:なし。 下のソースコードを実行しても特に何もエラーは起きませんが、プリンタも一切動きません。 ブザーがなるのと、行送りの動作を期待したのですが、多分BELL(0x07)とLF(0x0A)を送るだけじゃ無理なのかも。
###該当のソースコード
Java
1//http://www.cresc.co.jp/tech/java/jps/JPS.htmと 2//http://tech.cm55.com/wiki/java/PrinterCommandを参考にしました 3 4import java.io.*; 5import java.util.*; 6import javax.print.*; 7import javax.print.attribute.*; 8import javax.print.attribute.standard.*; 9import javax.print.event.*; 10 11public class JpsSample0 { 12 13public static void main(String[] args) { 14 try { 15 // エスケープシーケンス ANK文字コード BELL(0x07),LF(0x0A),NULL(0x00) 16 byte[] bytes={(byte)0x07,(byte)0x0A, (byte)0x00}; 17 ByteArrayInputStream in = new ByteArrayInputStream(bytes); 18 // ドキュメントの形式を設定 19 DocFlavor myFormat = DocFlavor.INPUT_STREAM.AUTOSENSE; 20 // Docオブジェクトの生成 21 Doc myDoc = new SimpleDoc(in, myFormat, null); 22 // 属性のセットを構築 23 PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 24 aset.add(new Copies(1)); 25 // 属性セットに従って印刷ができるプリンタを発見する 26 PrintService[] services = PrintServiceLookup.lookupPrintServices( 27 myFormat, aset); 28 // そのプリントサービスの一つからプリント・ジョブを生成し、印刷を行う 29 if (services.length > 0) { 30 System.out.println("Print service: "+services[0].toString()); 31 DocPrintJob job = services[0].createPrintJob(); 32 try { 33 job.print(myDoc, aset); 34 } catch (PrintException pe) { 35 System.out.println(pe); 36 } 37 } 38 } catch (Exception ex) { 39 ex.printStackTrace(); 40 } 41} 42}
###試したこと
[Yahoo!知恵袋で質問]
(http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13170229553)したところ、ANK文字はどうかという情報をもらいました。(USB接続では無理かもという情報も。)
上のソースコードではANK文字コードを送っているつもりですが、プリンタは動きません。
###補足情報(言語/FW/ツール等のバージョンなど)
使用しているプリンタはCanonのMG6330、パソコンはMacOS10.12で、このプリンタはパソコンとの接続にUSBとLANが選べます。
実行はEclipseの4.5.2でJavaSE-1.8というやつでやっています。
Javaで実行していますが言語は別にJavaでなくても良いです。
また、Macで実行していますがWindowsやLinuxの情報でも助かります。
ついでに、CanonのMG6330を使っていますが、他の家庭用インクジェットプリンタの情報でも大歓迎です。
回答2件
あなたの回答
tips
プレビュー