DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB6.0→VB.NETで、レシートプリンタは反応するが、ドロワーが反応しない。

環境/言語:[XP、VB.NET2003]
分類:[.NET]

こんにちは。
以下、質問させてくださいませ。

従来、VB6.0で開発したソフトを使用しています。
XPのパソコンに、レシートプリンタ(スター精密製TSP700U)をシリアル接続して、レシートプリンタには、キャッシュドロワー(スター精密製、EPSON製)を接続しています。
画面上にある印刷ボタンを押すと、レシートが印字され、キャッシュドロワーが開きます。
画面上には、MSCommを置いています。
コード(サンプル)は、以下の通りです。
ポート番号は、仮に、1とします。

With Comm1
If .PortOpen = True Then Exit Sub
.CommPort = 1
.Settings = "9600,N,8,1"
.InputLen = 0
.PortOpen = True
'バッファのクリア
.InBufferCount = 0
.OutBufferCount = 0
'n値より以後のデータが有効となる。
.Output = Chr$("&H1B") & Chr$("&H3D") & Chr$("&H1")
'外部機器駆動パルス幅の設定
.Output = Chr$("&H1B") & Chr$("&H07") & Chr$("&H100") & Chr$("&H100")
'駆動命令
.Output = Chr$("&H07")
〜(印字内容)〜
'n行紙送り
.Output = Chr$("&H1B") & Chr$("&H61") & Chr$("&H8")
'パーシャルカット
.Output = Chr$("&H1B") & Chr$("&H64") & Chr$("&H31")
.PortOpen = False
End With

現在使用しているソフトを、VB.NET2003で、再開発しているところです。

上記と同じ内容を、以下のように、記述します。
「Chr$」の「$」は使えないようでして、取っております。

With Comm1
If .PortOpen = True Then
.PortOpen = False
End If
Try
.CommPort = 1
.Settings = "9600,N,8,1"
.InputLen = 0
.PortOpen = True
'バッファのクリア
.InBufferCount = 0
.OutBufferCount = 0
'n値より以後のデータが有効となる。
.Output = Chr("&H1B") & Chr("&H3D") & Chr("&H1")
'外部機器駆動パルス幅の設定
.Output = Chr("&H1B") & Chr("&H07") & Chr("&H100") & Chr("&H100")
'駆動命令
.Output = Chr("&H07")
〜(印字内容)〜
'n行紙送り
.Output = Chr("&H1B") & Chr("&H61") & Chr("&H8")
'パーシャルカット
.Output = Chr("&H1B") & Chr("&H64") & Chr("&H31")
.PortOpen = False
Catch ex As System.Runtime.InteropServices.COMException
MessageBox.Show("エラー", "CommPort",MessageBoxButtons.OK,MessageBoxIcon.Exclamation)
End Try
End With

このコードを実行しますと、エラーが起きて、レシートプリンタも、キャッシュドロワーも、反応しません。

上記中の、
'n値より以後のデータが有効となる。
.Output = Chr("&H1B") & Chr("&H3D") & Chr("&H1")

を取ると、レシートプリンタは反応して、レシートは出るのですが、
キャッシュドロワーが反応しません。

この点を、解決したいと思いまして、
ご相談させて頂きました。

お忙しい中、誠にお手数と存じますが、
何か、お分かりになられる点がございましたら、
ご教示ください。
どうぞよろしくお願い申し上げます。
.NET Framework 1.1 ですか・・・

SerialPort クラスは、.NET Framework 2.0 から搭載されたので
当時は、Win32 API でシリアル通信させてました。

VB6 から、VB,NETへの移行ですが、SerialPort クラスが無かった
ので、逆に苦労しました。が、MSCommのActiveX は使えませんね!

あきらめてWin32 APIにするか、.NET Framework 2.0 以降に乗り換
えて下さい。

以上。参考まで
一応、参考まで・・・

ttp://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200909/09090010.txt

以上。
オショウさん、ありがとうございます^^。

検討してみます。


■No31100に返信(オショウさんの記事)
> 一応、参考まで・・・
>
> ttp://hpcgi1.nifty.com/MADIA/vbnet/wwwlng.cgi?print+200909/09090010.txt
>
> 以上。

DOBON.NET | プログラミング道 | プログラミング掲示板