質問: Swift5、CoreBluetoothを使い、Bluetooth接続のサーマルプリンタをコントロールしようとしています。 そのプリンタとのBluetooth接続(ペアリング)までは成功していますが、プリンタにデータを出力する方法がわかりません。 メーカーのドライバーやライブラリがないと無理でしょうか? それともCoreBluetooth、その他の汎用的なライブラリで可能なことでしょうか。 プリンタ等、外部のハードウェアとの接続についてあまり理解していないため、どのような観点で調べたり考えていけば良いか、何か参考になる情報をいただければと思います。 ●●●解決した方法●●● ご回答いただいた皆さん、ありがとうございます。 質問後、自分の調査で見つけたライブラリのソースコードから、ひとまずの解決を得ましたので、参考までに情報を残しておきます。 このライブラリを参考にして、出力できました。 内容的にはCoreBluetoothのみで実装されたもののようです。 自分にとって必要だったポイントは・・・ (1)スキャンで得たプリンタのUUID情報のうち、適切なService UUID、Characteristic UUIDを選べていなかった。(これは基本的にプリンタメーカーの情報が必要だと思いますが、自分は目星をつけつつUUIDを切り替えながら試してみました) (2)データの出力は、CoreBluetoothのwriteValue(_:for:type:)を使う。 これも試していたのですが、(1)の関係で何も反応がなかったため、わかりませんでした。 その他、ライブラリを使った方が良さそうな部分は、下記のソースコード群にあるようなもろもろの処理です。 中身はちゃんと理解してないのですが、こういった処理をかまさないと綺麗に出力できないようです。 画像ファイルから動画ファイルを作成する際の処理と似てるかもしれません。 (1)はともかく、(2)についてはこのライブラリを組み込むと簡単にプリンタに出力できそうです。
回答: > > メーカーのドライバーやライブラリがないと無理でしょうか? > > > 無理とまでは言いませんが、基本的には各種プリンターのメーカーから提供されている仕様を参照することになるでしょう。 Star webPRNT SDK のようにメーカーから Bluetooth 経由での印刷用のライブラリが提供されている場合もあれば、プリンターの仕様から自作できる場合もあります。 多くの種類のプリンターで使える共通の仕様といったものは私の知る限り現状無いので、プリンターを問わず便利に使える OSS のライブラリはあまり期待できない......はずです(この点についてはあくまで私の経験上の話なので、もしあればすいません)。 > > どのような観点で調べたり考えていけば良いか、何か参考になる情報をいただければと思います。 > > > という訳で Bluetooth での印刷について調べるには、まずはお使いのプリンターのメーカーからの情報を参照すると良いと考えます。