2

VB6 を使用して、シリアル ポート経由で Zebra ラベル プリンターに画像を印刷しようとしています。さまざまなファイル形式 (BMP のさまざまなビット深度) を試しましたが、ビット深度 4 の画像に最も近くなりました (実際に印刷されたものは、使用している画像とはあまり似ていません)。

いずれにせよ、プリンターは白黒しか印刷できないため、ビット深度 1 が必要になると思いますが、ファイルを送信しても出力が得られません。これは、プリンターがより多くのデータを期待しているため、印刷を開始していないためだと思います。私が現在持っているコードは次のとおりです。


Private Type BITMAPFILEHEADER
    bfType As Integer
    bfSize As Long
    bfReserved1 As Integer
    bfReserved2 As Integer
    bfOffBits As Long
End Type

Private Type BITMAPINFOHEADER
    biSize As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
End Type

Private Type RGBQUAD
    rgbBlue As Byte
    rgbGreen As Byte
    rgbRed As Byte
    rgbReserved As Byte
End Type

Private Sub cmdImage_Click()
    Dim BMPFileHeader As BITMAPFILEHEADER
    Dim BMPInfoHeader As BITMAPINFOHEADER
    Dim BMPRGBQuad() As RGBQUAD
    Dim fFile As Integer
    Dim bImage() As Byte
    Dim padding As Integer

    fFile = FreeFile
    
    Open "img1.bmp" For Binary Access Read As fFile
        Get fFile, , BMPFileHeader
        Get fFile, , BMPInfoHeader
        Select Case BMPInfoHeader.biBitCount
        Case 1
            ReDim BMPRGBQuad(1)
        Case 4
            ReDim BMPRGBQuad(15)
        Case 8
            ReDim BMPRGBQuad(255)
        End Select
        If BMPInfoHeader.biBitCount < 24 Then
            Get fFile, , BMPRGBQuad()
        End If
        ReDim bImage(BMPInfoHeader.biSizeImage)
        Get fFile, , bImage
    Close fFile
    
    padding = 32 - ((BMPInfoHeader.biWidth * BMPInfoHeader.biBitCount) Mod 32)
    If padding = 32 Then padding = 0
    padding = padding \ BMPInfoHeader.biBitCount

    com.output = "N" & vblf
    com.Output = "GW50,50," & (BMPInfoHeader.biWidth + padding) / 8 & "," & BMPInfoHeader.biWidth & ","
    com.Output = bImage
    Send vbLf & "P1,1"
End Sub

参照用の Zebra Web サイトのサポート記事は次のとおりです

プリンターは私のコマンドを受け入れており、正しく接続されています。バーコードなどの印刷に問題はありません。プリンターはTLP2742ですが、EPLを使用するすべてのプリンターでアプローチは同じであると思います。

編集:そしてEPL Programmers manual

編集 2: ほとんどが機能するコードを追加しました。これは、上記のコードと同じ問題に関する質問です。

4

0 に答える 0