Я использую принтер этикеток Zebra GK420d для приложения POS, которое я разрабатываю. Я пытаюсь связаться с принтером через драйверы OPOS, предоставляемые Zebra. Но я попал в беду. Это простая форма в Visual Basic 2008 с кнопкой на нем. Вот полный код, который я запускаю.
Открытый класс FrameStep1
Наследует System.Windows.Forms.Form
Private m_Printer As Microsoft.PointOfService.PosPrinter = Nothing
Private Sub ChangeButtonStatus()
'Disable control.
btnPrint.Enabled = False
End Sub
Private Sub FrameStep1_Load(ByVal sender As System.Object _
, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strLogicalName As String
Dim deviceInfo As DeviceInfo
Dim posExplorer As PosExplorer
strLogicalName = "zebra"
posExplorer = New PosExplorer
m_Printer = Nothing
Try
deviceInfo = posExplorer.GetDevice(DeviceType.PosPrinter, strLogicalName)
m_Printer = posExplorer.CreateInstance(deviceInfo)
Catch ex As Exception
ChangeButtonStatus()
Return
End Try
Try
m_Printer.Open()
m_Printer.Claim(1000)
m_Printer.DeviceEnabled = True
Catch ex As PosControlException
ChangeButtonStatus()
End Try
End Sub
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
Try
m_Printer.PrintNormal(PrinterStation.Receipt, "Hello OPOS for .Net" + vbCrLf)
Catch ex As PosControlException
End Try
End Sub
Private Sub FrameStep1_Closing(ByVal sender As Object _
, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
If m_Printer Is Nothing Then
Return
End If
Try
m_Printer.DeviceEnabled = False
m_Printer.Release()
Catch ex As Exception
Finally
m_Printer.Close()
End Try
End Sub
Конечный класс
Вы видите, что я вызвал Claim () и установил DeviceEnabled = true. Тем не менее, когда я отлаживаю его, происходит, когда управление переходит через m_Printer.Open (), он волшебным образом заканчивается btnPrint_Click () и не идет дальше, если я не нажму кнопку в моей форме, а затем в m_Printer.PrintNormal () ломает и выбрасывает POSControlException, а текст в нем гласит: «Была сделана попытка получить доступ к устройству исключительного использования, которое должно быть запрошено, прежде чем можно будет использовать действие метода или набора свойств».
Кажется, я здесь что-то не так делаю.