vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printern (Zebra S4M) 
Autor: MikeJ
Datum: 15.12.10 13:40

''' <summary>
    ''' Sendet die ZPL-Kommandos als Rohdaten an den Drucker
    ''' </summary>
    ''' <param name="ZPLCommands">ZPL-Kommandos als String</param>
    ''' <param name="PrinterName">Name des Druckers</param>
    ''' <returns>TRUE, wenn der Ausdruck erfolgreich abgeschlossen wurde</returns>
    ''' <remarks>14.12.2010</remarks>
    Private Function SendZPLToPrinter(ByVal ZPLCommands As String, ByVal _
      PrinterName As String) As Boolean
        Dim bytes(ZPLCommands.Length - 1) As Byte 'Array, welches den 
        ' ZPL-Command als ASCII-Zeichen speichert
        Dim bSuccess As Boolean
        Dim pUnmanagedBytes As IntPtr 'unmanaged pointer.
 
        '=== ZPL-Command in ASCII-Zeichen-Array umwandeln ===
        For i As Integer = 0 To ZPLCommands.Length - 1
            bytes(i) = CByte(Asc(ZPLCommands.Chars(i)))
        Next
 
        ' Allocate some unmanaged memory for those bytes.
        pUnmanagedBytes = Marshal.AllocCoTaskMem(ZPLCommands.Length)
        ' Copy the managed byte array into the unmanaged array.
        Marshal.Copy(bytes, 0, pUnmanagedBytes, ZPLCommands.Length)
        ' Send the unmanaged bytes to the printer.
        bSuccess = SendBytesToPrinter(PrinterName, pUnmanagedBytes, _
          ZPLCommands.Length)
        ' Free the unmanaged memory that you allocated earlier.
        Marshal.FreeCoTaskMem(pUnmanagedBytes)
        Return bSuccess
    End Function
 
    Private ValueList As New Dictionary(Of Integer, String)
    Private lastZPLCommand As String
#End Region
 
#Region "Public Subs und Funktionen"
    ''' <summary>
    ''' Fügt ein Wert zur Fild/Value-Liste hinzu
    ''' </summary>
    ''' <param name="FieldNr">Feld-Nummer im Label</param>
    ''' <param name="Value">Einzufügender Text</param>
    ''' <remarks>14.12.2010</remarks>
    Public Sub AddFieldValue(ByVal FieldNr As Integer, ByVal Value As String)
        ValueList.Add(FieldNr, Value)
    End Sub
 
    ''' <summary>
    ''' Löscht die bisher eingefügten Values
    ''' </summary>
    ''' <remarks>14.12.2010</remarks>
    Public Sub ClearValues()
        ValueList.Clear()
    End Sub
 
    ''' <summary>
    ''' Gibt das zuvor mittels 'AddFieldValue' erstellte Label auf dem Drucker 
    ' aus.
    ''' Das Label muss zuvor auf dem internen Speicher des Druckers abgelegt 
    ' sein
    ''' </summary>
    ''' <param name="LabelName">Name unter welchem das 'Label' auf den 
    ' Drucker abgelegt ist</param>
    ''' <param name="PrinterName">Nsme des Druckers</param>
    ''' <returns>TRUE, wenn der Ausdruck erfolgreich abgeschlossen wurde</returns>
    ''' <remarks>14.12.2010</remarks>
    Public Function PrintLabel(ByVal LabelName As String, ByVal PrinterName As _
      String) As Boolean
        Dim ZPLCommand As String = ""
 
        '=== Sequenz einleiten ===
        ZPLCommand = "^XA"
 
        '=== Einbinden Label-Name ===
        If Not LabelName.EndsWith("ZPL") Then
            LabelName &= ".ZPL" 'Endung Anfügen, falls nicht vorhanden
        End If
        ZPLCommand &= "^XFE:" & LabelName & "^FS"
 
        '=== Einbinen der Werte ===
        For Each item In ValueList
            ZPLCommand &= "^FN" & item.Key.ToString & "^FD" & item.Value & "^FS"
        Next
 
        '=== ZPL-Befehl abschliessen ===
        ZPLCommand &= "^XZ"
 
        '=== Ausdruck starten ===
        Dim bSuccess As Boolean
        bSuccess = SendZPLToPrinter(ZPLCommand, PrinterName)
 
        '=== Letztes Label puffern, Value List leeren ===
        If bSuccess Then
            lastZPLCommand = ZPLCommand
            ValueList.Clear()
        End If
 
        Return bSuccess
    End Function
 
    ''' <summary>
    ''' Gibt das zuletzt gedruckte Label nochmals aus
    ''' </summary>
    ''' <param name="PrinterName"></param>
    ''' <returns>TRUE, wenn der Ausdruck erfolgreich abgeschlossen wurde</returns>
    ''' <remarks>14.12.2010</remarks>
    Public Function RePrint(ByVal PrinterName As String) As Boolean
        '=== Ausdruck starten ===
        If Not IsNothing(lastZPLCommand) AndAlso lastZPLCommand.StartsWith( _
          "^XA") Then
            Return SendZPLToPrinter(lastZPLCommand, PrinterName)
        Else
            Return False
        End If
    End Function
#End Region
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wer hat Erfahrungen mit der Ansteuerung von Label-Printern (...6.241MikeJ01.12.10 22:50
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.498Christoph197202.12.10 06:54
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.294MikeJ02.12.10 09:06
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.356Yammi90002.12.10 11:07
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.286MikeJ02.12.10 11:24
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.565ModeratorDaveS02.12.10 16:33
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.216MikeJ02.12.10 17:42
Drucker ist da...5.235MikeJ13.12.10 22:44
Re: Drucker ist da...5.287ModeratorDaveS14.12.10 10:43
Re: Drucker ist da...5.312MikeJ14.12.10 20:25
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.218MikeJ02.12.10 17:45
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.567cgiesen15.12.10 12:45
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.164ModeratorDaveS15.12.10 13:05
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.226MikeJ15.12.10 13:38
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.561MikeJ15.12.10 13:40
Re: Wer hat Erfahrungen mit der Ansteuerung von Label-Printe...5.310MikeJ15.12.10 13:40

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel