ラベルプリンタメーカ「SATO」のラベル発行コンポーネント(MLComponent.dll)を使ったラベル印刷の 紹介ですが、まず最初にラベルプリンタの接続確認を行います。今回仕事で使ったプリンタがUSB接続でしたので 例としてUSBのみとなります。
■MLComponent.dllのインストール
以下のURLのページの真ん中あたりに「Multi LABELIST Component」のダウンロードファイルが在りますので、 必要なものをダウンロードし、インストールします。
・Multi LABELIST Component / Component Plus
デフォルトでインストールすると「MLComponent.dll」が「C:\Program Files\SATO\ML Component」に在るはずです。
VB.NETの参照設定で「MLComponent.dll」を追加します。
このコンポーネントですが、.NET Framework 4.0または4.5または4.6に対応している開発環境でしか使えないので Visual Studio 2010以降限定です。Visual Studio 2005/2008では使用できません。
■プリンタ状態チェック関数
関数内ではまず「MLComponent」のインスタンスを生成します。
その後「Setting」プロパティによって通信パラメータを設定します。 プリンタとの接続方法が、LAN、USB、RS232C、Bluetooth、プリンタドライバなどがありますが 今回はUSBですので、"USB:"の設定値となります。その他の設定はマニアルを見てください。
「Protocol」プロパティはUSBですので、「Protocols.Status4」となります。
その後、「OpenPort」メソッドにより接続を開始しますが、 結果が0ではない場合は、電源が入っていないかケーブルが抜けているかの原因になります。
接続後は、プリンタの状態を「GetStatus」メソッドにより行います。 返されるStatus文字列の3文字目にエラー判別文字がありますので、それによってメッセージを付けています。 尚、このメソッドが0以外を返す場合は、メソッドエラーになります。
=====
2016/03/08:の時の情報
■MLComponent.dllのインストール
以下のURLのページの真ん中あたりに「Multi LABELIST Component」のダウンロードファイルが在りますので、 必要なものをダウンロードし、インストールします。
・Multi LABELIST Component / Component Plus
デフォルトでインストールすると「MLComponent.dll」が「C:\Program Files\SATO\ML Component」に在るはずです。
VB.NETの参照設定で「MLComponent.dll」を追加します。
このコンポーネントですが、.NET Framework 4.0または4.5または4.6に対応している開発環境でしか使えないので Visual Studio 2010以降限定です。Visual Studio 2005/2008では使用できません。
■プリンタ状態チェック関数
関数内ではまず「MLComponent」のインスタンスを生成します。
その後「Setting」プロパティによって通信パラメータを設定します。 プリンタとの接続方法が、LAN、USB、RS232C、Bluetooth、プリンタドライバなどがありますが 今回はUSBですので、"USB:"の設定値となります。その他の設定はマニアルを見てください。
「Protocol」プロパティはUSBですので、「Protocols.Status4」となります。
その後、「OpenPort」メソッドにより接続を開始しますが、 結果が0ではない場合は、電源が入っていないかケーブルが抜けているかの原因になります。
接続後は、プリンタの状態を「GetStatus」メソッドにより行います。 返されるStatus文字列の3文字目にエラー判別文字がありますので、それによってメッセージを付けています。 尚、このメソッドが0以外を返す場合は、メソッドエラーになります。
Module Module1
'SATOプリンタの接続テスト
Public Sub Main()
Dim str As String = ""
Dim fChk As Boolean = CheckPrinter(str)
MsgBox(str)
End Sub
''' <summary>プリンタ状態チェック</summary>
''' <param name="strErr">エラーメッセージ</param>
''' <returns>状態結果(True:OK, False:NG)</returns>
Private Function CheckPrinter(ByRef strErr As String) As Boolean
'戻り値初期化
CheckPrinter = False
'MLComponentの宣言
Dim MLComponent As SATO.MLComponent.MLComponent = New SATO.MLComponent.MLComponent
Try
'出⼒先の設定(USBを指定します。)
MLComponent.Setting = "USB:"
MLComponent.Protocol = SATO.MLComponent.Protocols.Status4
'接続
Dim Result As Integer = MLComponent.OpenPort(1)
If Result <> 0 Then
strErr = "プリンタの電源等(ケーブル)を確認してください。(" & Result.ToString & ")"
Exit Function
End If
'プリンタの状態確認
Dim Status As String = ""
Result = MLComponent.GetStatus(Status) ' ステータス取得
If Result <> 0 Then
strErr = "プリンタ状態取得エラー No." & Result.ToString
Exit Function
End If
'エラーコードの確認
Dim strCode As String = Mid$(Status, 3, 1)
Select Case strCode
Case "0", "1", "2", "3"
strErr = "オフライン状態"
Case "A", "B", "G", "H", "M", "N", "S", "T"
'オンライン状態・送信可
strErr = ""
Case "C", "D"
strErr = "オンライン状態・受信待ち"
Case "I", "J"
strErr = "オンライン状態・印字中"
Case "O", "P"
strErr = "オンライン状態・待機中"
Case "U", "V"
strErr = "オンライン状態・解析・編集中"
Case "a"
strErr = "エラー検出・受信バッファフル"
Case "b"
strErr = "エラー検出・ヘッドオープン"
Case "c"
strErr = "エラー検出・ペーパーエンド"
Case "d"
strErr = "エラー検出・リボンエンド"
Case "e"
strErr = "エラー検出・メディアエラー"
Case "f"
strErr = "エラー検出・センサーエラー"
Case "g"
strErr = "エラー検出・ヘッドエラー"
Case "h"
strErr = "エラー検出・カバーオープン"
Case "i"
strErr = "エラー検出・カードエラー"
Case "j"
strErr = "エラー検出・カッタエラー"
Case "k"
strErr = "エラー検出・その他のエラー"
Case "l"
strErr = "エラー検出・カッタセンサーエラー"
Case "m"
strErr = "エラー検出・スタッカフル&リファインダフル"
Case "o"
strErr = "エラー検出・IC タグエラー"
Case Else
strErr = "その他"
End Select
If strErr = "" Then
strErr = "接続正常"
CheckPrinter = True
Else
'エラー
strErr = "プリンタエラー:(" & strCode & ") " & strErr
End If
'切断
Result = MLComponent.ClosePort
If Result <> 0 Then
strErr = "切断エラー No." & Result.ToString
CheckPrinter = False
End If
Catch ex As Exception
strErr = "PGエラー:" & ex.ToString
Finally
MLComponent = Nothing
End Try
End Function
End Module
=====
2016/03/08:の時の情報
PR
コメント