2

Bocaサーマルプリンターを使用して印刷する必要があるiOSアプリケーションを作成しています。彼らは独自の言語(FGL)を使用して、ASCII文字列の形式のコマンドでコンテンツをレイアウトします。無料でダウンロードできるAirPrintアクティベーターツールを使用して、BocaプリンターのAirPrintを既に有効にしました。

私の問題は、を使用してUIPrintInteractionController、すでにフォーマットされたテキスト(BOCAはFGLコマンドを認識せず、通常のテキストであるかのように印刷する)を送信するかNSData、PDFヘッダーが必要な(私のデータはそうではない)ことです。持っていないので、この方法で印刷することはできません)。

このフレームワークをバイパスして生のASCIIデータをプリンターに送信する方法はありますか?を使用NSStreamして、低レベルの方法で印刷ジョブを管理する必要がありますか?

その場合、ネットワーク上でプリンタのアドレスを取得して、プリンタへのソケット接続を確立できるようにする方法はありますか?

4

4 に答える 4

4

サードパーティのライブラリが必要か、自分で作成する必要があるようです。

しかし、ネットワークプリンタの機能の内部についてはよくわかりませんが、私はあなた自身に問いかけます。

  • プリンタはそのIPアドレスをネットワークにブロードキャストしますか?
  • そうでない場合は、他のデバイスで自己検出できるようにするためにどのような機能を提供しますか?
  • プリンターは、接続したいデバイスからの特定のブロードキャストメッセージに応答しますか?
  • UDPまたはTCPパケットのみに依存していますか?

あなたが彼らのカスタマーサービスと連絡を取ることができれば、それがネット上に文書化されていなければ、あなたはこの情報を手に入れることができるかもしれません。

申し訳ありませんが、直接回答することはできませんが、これらの質問が回答を見つけるのに役立つことを願っています

于 2012-05-15T04:52:57.817 に答える
2

ほとんどのプリンタには、IPアドレスを含むプリンタに関する情報を印刷するある種のセルフテスト機能があります。オンラインのマニュアルに記載されているかどうかを確認してください。これは通常、フィードボタンを押しながらオンにするようなものです。IPアドレスを取得したら、IPアドレスへの接続を開いて、データを送信するのはかなり簡単です。

于 2012-05-15T04:41:16.860 に答える
1

OPがこれをやってのけた可能性がありますが、このニッチな質問に対するStackOverflowの精神で......

プリンタのIPアドレスがわかっている場合(プリンタのボタンの1つを使用してテスト印刷で確認できます)、ポート9100のTCPソケットを介してFGLコマンドを送信できます。これにはFastSocketを使用しました。イーサネット経由で接続されたBOCAサーマルチケットプリンター。

FGLコマンドを含むテキストファイルがTickets/test.txtアプリバンドルに含まれているとすると、これを実現するためのコード(Swift)は次のようになります。

let client:FastSocket = FastSocket(host: PRINTER_IP_ADDRESS, andPort: "9100")
client.connect()

let ticketPath:String! = NSBundle.mainBundle().pathForResource("test", ofType: "txt", inDirectory: "Tickets")
let count:Int = client.sendFile(ticketPath)

// Do some error checking here

client.close()

同等のObjective-Cコードは、簡単に実行できるはずです。

FastSocketは上記のコマンドを同期的に実行するため、UIがフリーズしないように、上記のコードをバックグラウンドスレッドで実行するようにしてください。

于 2015-01-10T12:05:34.240 に答える
0

外部アクセサリフレームワークを試して、データをプリンタに送信できます。外部周辺機器の接続に使用します。おそらくこれはあなたが探しているものです。

于 2012-05-14T22:39:58.180 に答える