打印条形码 cl-s621 Citizen 的示例

问题描述 投票:0回答:2

我有一台 Citizen cl-s621 打印机,在哪里可以找到编程 code39 或 ean code 条形码标签的示例。 我曾与 zebra y sato 打印机合作过,但从未与 Citizen 合作过。

printing vb6 barcode
2个回答
1
投票

根据规格,CL-S621可以模拟Zebra ZPL-II语言。

https://www.citizen-systems.com/us/products/printer/label/cl-s621/

这是使用 Zebra 打印机打印条形码 39 的示例。需要重构。

' module code

Public Type DOCINFO
    pDocName As String
    pOutputFile As String
    pDatatype As String
End Type

Public Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Public Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long
Public Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long

Public Const BARCODE_PLACEHOLDER = "@@@@@"
' label script created using ZebraDesigner
Public Const LABEL_TEMPLATE_39 = "^XA~TA000~JSN^LT0^MNW^MTD^PON^PMN^LH0,0^JMA^PR6,6~SD15^JUS^LRN^CI0^XZ" _
                            & "^XA" _
                            & "^MMT" _
                            & "^PW609" _
                            & "^LL0406" _
                            & "^LS0" _
                            & "^BY4,3,160^FT586,219^B3I,N,,Y,N" _
                            & "^FD@@@@@^FS" _
                            & "^PQ1,0,1,Y^XZ"

Public Function AddMOD43CheckChar(Text As String) As String
    Const charSet As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"
    Dim I As Long
    Dim T As Long
    For I = 1 To Len(Trim$(UCase(Text)))
        T = InStr(charSet, Mid$(Text, I, 1)) - 1 + T
    Next I
    
    AddMOD43CheckChar = Text & Mid$(charSet, (T Mod 43 + 1), 1)
End Function

Public Function ClearCommandChars(Text As String) As String
    Dim sTmp As String
    sTmp = Replace(Text, "^", vbNullString, Compare:=vbBinaryCompare)
    sTmp = Replace(sTmp, "~", vbNullString, Compare:=vbBinaryCompare)
    ClearCommandChars = Replace(sTmp, "_", vbNullString, Compare:=vbBinaryCompare)
End Function

Public Function PrintCode39toZebra(PrinterName As String, BarCodeText As String, Optional AddCheckChar As Boolean) As Boolean
    Dim sBCtext         As String
    Dim lPrinterHandle  As Long, lRetVal As Long, lWritten As Long
    Dim tDocInfo        As DOCINFO
    
    ' clear barcode text and add check character
    sBCtext = ClearCommandChars(BarCodeText)
    If AddCheckChar Then sBCtext = AddMOD43CheckChar(sBCtext)
    
    ' insert barcode into label template
    sBCtext = Replace(LABEL_TEMPLATE_39, BARCODE_PLACEHOLDER, sBCtext, Compare:=vbTextCompare)
    
    ' send label script to printer
    tDocInfo.pDocName = "LoremIpsum"
    tDocInfo.pOutputFile = vbNullString
    tDocInfo.pDatatype = vbNullString

    lRetVal = OpenPrinter(PrinterName, lPrinterHandle, 0)
    If lRetVal <> 0 Then
        lRetVal = StartDocPrinter(lPrinterHandle, 1, tDocInfo)
        If lRetVal <> 0 Then
            lRetVal = StartPagePrinter(lPrinterHandle)
            If lRetVal <> 0 Then
                lRetVal = WritePrinter(lPrinterHandle, ByVal sBCtext, Len(sBCtext), lWritten)
                If lRetVal <> 0 Then
                    lRetVal = EndPagePrinter(lPrinterHandle)
                    If lRetVal <> 0 Then
                        lRetVal = EndDocPrinter(lPrinterHandle)
                        If lRetVal <> 0 Then
                            ClosePrinter lPrinterHandle
                            PrintCode39toZebra = True
                        End If
                    End If
                End If
            End If
        End If
    End If
End Function

' form code

Private Sub Command1_Click()
    ' "ZDesigner GX420d" - printer name from Devices and Printers
    ' "01234" - test barcode text
    
    PrintCode39toZebra "ZDesigner GX420d", "01234", True
End Sub


0
投票

我尝试向 cl-s621II 打印机发出 ZPL 命令来打印 hello。打印机通过 USB 连接。我正在使用 C++ 视觉工作室。 “打印测试页”命令工作正常。但我的代码不起作用。

这条线有什么问题吗:

bool sendZPLToPrinter(const char* 打印机名称, const char* zplData)

{

HANDLE printerHandle = CreateFile(printerName, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

if (printerHandle == INVALID_HANDLE_VALUE) {
    cerr << "Failed to open printer handle." << GetLastError() << endl;
    return false;
}

这一行: if (!WriteFile(printerHandle, zplData, strlen(zplData), &bytesWritten, NULL))

这一行: bool sendZPLToPrinter(const char* PrinterName, const char* zplData)

ZPL命令:const char* zplCommand = "^XA^FO20,20^A0N,50,50^FDHello^FS^XZ"; const char* 打印机名称 = "COM1";

我只是使用#include #包括

© www.soinside.com 2019 - 2024. All rights reserved.