- ベストアンサー
セントロニクスを使用したプリンタ出力
WINDOWS系のOSで、パラレルポートを使用したプリンタ出力をしたいのですが、 どのような方法で実現できるのでしょうか。 サンプルソースなどを開示しているHPなどがあれば 併せて教えていただければ幸いです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
先に紹介した BSQUARE には、WinDK という開発環境もあります。 XP にも対応しているようですね。 ライブラリが DLL でなければ、配布時に特別追加するものは無いでしょう。 > 理解不足のために、これを使う事の利点と、 > 使わない事による不利益を、うまく上司に説明できません。 本家のサイト(→参考URL)からは、評価版やサンプルが取得できるようです。 今、説明できなければ、勉強するか、評価する時間をくれ、と上司にかけあう だけの話ですね。 その手の売り物を買わずに済ませよう、というのがあるのであれば、DDK だけを 使ったデバイスドライバの開発の様子を知らないと、評価できませんね。 DDK にはサンプルも一杯入っています。 とりあえず、とっかかりとしては Microsoft のサイトあたり(参考URLの ふたつめなんか)くらいが良いでしょうか。 確かに高い買い物ですが、誰も DDK を知らない状態で、勉強にかかる原価を 考えれば、そう高い買い物ではないかもしれません。 # 私には、そちらの原価がわかりませんので、ペイするかどうかは、分かりません
その他の回答 (4)
【Windowsの考え方】 個別対応はアプリでしないでOS又はドライバに任せる。 【それでも何とかしたい】 とは言うものの、やはり例外というものはあります。私の場合には、ジャーナルプリンター(連続用紙)を使って数行ずつ印刷する必要がありました。もちろん途中で改ページなどしないで。これが出来ない。あーしても。こーしても。 【苦肉の策】 VBの例を示します。対象としたプリンターはNECのPC-PR201です。文字フォントをプリンタが持っています。 '========== '= '= プリンタ印字処理 '= '=【処理内容】 '= ・引数(LBuff)の内容をJISコードに変換して、プリンターに出力する。 '= '========== Sub LinePrint(LBuff As String) Dim FileNo As Integer ' 汎用ファイルNo. Dim A$, B$ Dim X As Byte Dim CRLF As String Dim FSB As String Dim I As Integer CRLF = ChrB$(13) & ChrB$(10) FSB = ChrB$(28) & ChrB$(66) A$ = LBuff B$ = StrConv(A$, vbFromUnicode) ' HexPrint "Unicode の HEX 表示", A$ ' HexPrint "シフトJIS の HEX 表示", B$ B$ = UKANJI(B$) 'シフトJIS to JIS FileNo = FreeFile Open "LPT1:" For Binary As #FileNo B$ = B$ & FSB & CRLF For I = 1 To LenB(B$) X = AscB(MidB(B$, I, 1)) Put #FileNo, , X Next I Close #FileNo End Sub 【問題点】 ・このプログラムは単一アプリでのみプリンターを占有する事が前提です。またプリンターは前記した機種にのみ対応しています。一切の汎用性などというおぞましい考えは持っていません。 :-)
お礼
741さん、回答ありがとうございます。 参考にさせていただきます。
- a-kuma
- ベストアンサー率50% (1122/2211)
> 制御コードを送るどころか、もっとベタな作りになりそうですが、 > このような場合、どのような作り方が考えられるでしょうか? 先に回答した中で紹介した WinRT が、それに対する答えになるのではないか、と 思います。 直接(という表現は適切ではないかも)デバイスにデータを送るわけですから 印刷ジョブとしては扱われないのは、仕方ないですね。 # 持ち上げられても、自信が無いのは仕方ありません (^^;
補足
早速のフォロー、ありがとうございます。 対象OSがXPを含むので、二の足を踏んでいます。 それと、予算の関係も多大な影響を与えております。 このような開発ツールを使用した経験がないのですが このツールを使って、ソフトを作成して配布する場合は インストーラの中に組み込むような形になるのでしょうか? 理解不足のために、これを使う事の利点と、 使わない事による不利益を、うまく上司に説明できません。 #持ち上げてませんって…。 自分の知らない分野をご存知の方に後光が差して見えているのです。
- a-kuma
- ベストアンサー率50% (1122/2211)
MS-DOS などで動いていたプログラムの移植かなんかでしょうか? WinRT というデバイス制御のライブラリがあります(→参考URL)。 パラレルポートもサポートしてます。 私は使ったことは無いのですが、DDK を直接触らずとも、デバイスへの出力程度 であれば、それなりにこなしそうです。 先の回答のように、パラレルポートなどに直接プリンタ制御コードを送るような プログラムは Windows では *亜流* です。 デバイスに固有のことはデバイスドライバに任せて、デバイスコンテキストに 画面と同じように印刷イメージを書いてゆく、というのが基本です。 今は良くて(*)も、また、何年か後に同じたぐいの問題を抱えることになります。 それを十分に考えてみることをすすめます。 (*) 下手をすると、開発中に、なんてことも十分ありえる
補足
a-kumaさん、回答をありがとうございます。 >先の回答のように、パラレルポートなどに直接プリンタ制御コードを送るような >プログラムは Windows では *亜流* です。 上記の記載がありますが、良々確認したところ ラベルプリンタに対して既定のコマンドを文字列として 送信しなくてはいけないらしいのです。 制御コードを送るどころか、もっとベタな作りになりそうですが、 このような場合、どのような作り方が考えられるでしょうか? CreateFileか何かで、デバイスを取得して 直接送信しても、印刷JOBとしては認識されないし…。 神様、仏様、a-kuma、何か良い知恵をお授けください。
- zzzzzz
- ベストアンサー率61% (70/113)
基本的にドライバに処理を任せる形になりますので、パラレルポート、というのはあまり関係ありません。 WindowsAPIで実現するのであれば、参考URLの77章以降を読まれると良いと思います。
お礼
zzzzzzさん、回答をありがとうございました。 APIを初めて使っている事もあり、教えていただいた参考URLは 一連の流れがわかりやすくて、とても勉強になりました。
お礼
回答、ありがとうございました。 今回は購入を見送り、DDKを使用する方向です。 ご教示を感謝します。