Hej! Spånar lite skicka med ett Esc också Kom på en annan sak,den vill kanske ha Hex värdet för 7 Det du pratar om är i allra högsta grad specifikt för skrivaren. Du bör konsultera någon slags manual till skrivaren. Du skulle ju kunna testa dig fram genom att prova alla ASCII-tecken som du normalt inte skickar till den, men det kan lika väl krävas en kombination av tecken för att det ska gå, om det överhuvudtaget gör det. Det skall gå .. men det får inte vara ngt annat tecken med. t.ex via API?? Hej! Problemet löste sig med att använda Windows API. Signal till skrivare
Jag har en kvittoskrivare ( Star TSP 600 ) som är kopplad till en kassalåda. När man skickar tecknet motsvarande Hexadecimalt 07 till skrivaren skall den skicka en signal som öppnar kassalådan, men när jag gör det så skriver den också ut ett blankt kvitto. Kan man på ngt sätt undvika att den skriver ut ? Blir en massa slöseri med papper då de flesta väljer att inte ta kvitto.
Den kod jag använder är följande
<code>
Dim pr As Printer
Dim skrivare As String
skrivare = GetSetting(App.Title, "Settings", "xkvitto", "")
For Each pr In Printers
If pr.DeviceName = skrivare Then
Set Printer = pr
Printer.Print Chr$(7)
Printer.EndDoc
Exit For
End If
Next pr
</code>Sv: Signal till skrivare
Printer.Print Chr$(7) & Chr$(27)
Eller
Printer.Print Chr$(7) & Chr$(0)Sv:Signal till skrivare
Printer.Print Chr$(55)
Eller
Printer.Print Chr$(27) & Chr$(55)Sv: Signal till skrivare
Sv:Signal till skrivare
När man avlsutar med EndDoc skickas det då med ngt annat tecken t.ex. en vagnretur??
Om det är så finns det ngt annat sätt att sända tecken till en skrivare utan att använde Printer objektet?Sv: Signal till skrivare
såg på searchVB.com att Printer.EndDoc också skickar med ett form feed kommandoSv:Signal till skrivare
En del kvittoskrivare använder sig av den här koden för att öppna kassalådan.
Printer.FontName= "Control"
Printer.FontSize= 10
Printer.Print "A"Sv: Signal till skrivare
Det verkar som om VB:s Printer Object alltid skickar med en radbrytning vilket gjorde att skrivare också matade fram en bit papper ... man lär sig alltid nått nytt
//Krister
edit:
för information använde jag följande kod
Private Sub SignalKassalåda()
On Error Resume Next
Err.Clear
Dim pr As Printer
Dim skrivare As String
skrivare = GetSetting(App.Title, "Settings", "xkvitto", "")
For Each pr In Printers
If pr.DeviceName = skrivare Then
Set Printer = pr
Exit For
End If
Next pr
Dim lhPrinter As Long
Dim lReturn As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim sWrittenData As String
Dim MyDocInfo As DOCINFO
lReturn = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If lReturn = 0 Then
MsgBox "The Printer Name you typed wasn't recognized."
Exit Sub
End If
MyDocInfo.pDocName = vbNullString
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Call StartPagePrinter(lhPrinter)
sWrittenData = Chr(7)
lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _
Len(sWrittenData), lpcWritten)
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub