忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

VB.NET:SATOラベルプリンタ・Multi LABELIST Component(MLComponent.dll)を使った印刷:接続確認
ラベルプリンタメーカ「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以外を返す場合は、メソッドエラーになります。

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

コメント

コメントを書く