Мне нужно распечатать изображение на принтере Brother QL-710w напрямую.Я должен отправить «растровые данные» изображения в виде байта, но я не знаю, как это сделать.В справочном руководстве по командам (https://download.brother.com/welcome/docp000698/cv_ql710720_eng_raster_101.pdf), брат не указывает, должно ли изображение быть 1bpp или 8bpp или в каком-либо другом режиме (и я никогда ничего не делал с растровыми командами)
Я могу определить страницуразмер и т. д. и отправить на принтер. Единственное, что я не знаю, как отправить это изображение.
Вот мой текущий код:
Public Sub PrintToBrother()
Dim lista As New List(Of Byte)
'
' invalidate command
For i = 0 To 199
lista.Add(&H0)
Next
'
' initialize command
lista.Add(&H1B)
lista.Add(&H40)
'
' switch to raster mode command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H61)
lista.Add(&H1)
'
' additional media information command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H55)
lista.Add(&H4A)
lista.Add(&H0)
lista.Add(&HC)
lista.Add(&HB4)
lista.Add(&HB5)
lista.Add(&H2F)
lista.Add(&H88)
lista.Add(&H71)
lista.Add(&H97)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H5B)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
'
' print information command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H7A)
lista.Add(&H86)
lista.Add(&HA)
lista.Add(&H1D) '62 -> 62mm \ 29 -> 29mm
lista.Add(&H0)
lista.Add(&H5F)
lista.Add(&H8)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
'
' auto-cut command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H4D)
lista.Add(&H40)
'
' specify the page number in "cut each * labels" command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H41)
lista.Add(&H1)
'
' expanded mode command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H4B)
lista.Add(&H8)
'
' margin command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H64)
lista.Add(&H23)
lista.Add(&H0)
'
' compression mode command
lista.Add(&H4D)
lista.Add(&H2) ' tiff packbits
'lista.Add(&H0) ' no compression
'
' raster data that I don't know how to send
'
'
' print
lista.Add(&H1A)
'
'
Dim di As New DOCINFO()
di.pDocName = "PrinterTest"
di.pDataType = "RAW"
Dim fPrinterName As String = "Brother QL-710W"
'
PrintDirect.OpenPrinter(fPrinterName, hPrinter, 0)
PrintDirect.StartDocPrinter(hPrinter, 1, di)
PrintDirect.StartPagePrinter(hPrinter)
'
Dim managedData As Byte()
Dim unmanagedData As IntPtr
managedData = lista.ToArray()
unmanagedData = Marshal.AllocCoTaskMem(managedData.Length)
Marshal.Copy(managedData, 0, unmanagedData, managedData.Length)
PrintDirect.WritePrinterX(hPrinter, unmanagedData, managedData.Length, pcWritten)
Marshal.FreeCoTaskMem(unmanagedData)
'
PrintDirect.EndPagePrinter(hPrinter)
PrintDirect.EndDocPrinter(hPrinter)
PrintDirect.ClosePrinter(hPrinter)
End Sub
Есть кто-нибудьсделал что-то вроде этого?