我有一个关于销售点的项目。我希望我的机器人为每次发生的销售打印发票。
我正在使用Android Studio for Android应用程序。我正在使用SQL
服务器,桌面上的应用程序使用vb.net语言(visual studio 2012)。
那是我的结构。 如何使用计算机上连接的打印机制作Android打印发票?我在桌面应用程序上进行发票设计。谢谢!
答案 0 :(得分:0)
当您使用网络服务似乎很自然地有一个打印发票的功能,只需告诉服务发票ID,例如/ service / print / invoice / 7 我建议你返回一个打印作业ID,这样你就可以从你的android(/ service / print / job_id / status)查询它的状态,甚至取消它(/ service / print / job_id / cancel)
在数据库中创建待处理的打印作业
我想你想知道的棘手的事情是如何与你的应用程序沟通你的web服务,因为你正在使用Windows我会建议你将订单作为Windows消息发送给你的应用程序。只需使用FindWindowEx(https://msdn.microsoft.com/en-us/library/windows/desktop/ms633500%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396)找到您的应用程序窗口,如果该应用程序未运行,请启动它并等待您找到该窗口。 一旦您让窗口处理程序向其发送用户消息,用户消息就是其id超过WM_USER(https://msdn.microsoft.com/en-us/library/windows/desktop/ms644931(v=vs.85).aspx)的消息,例如使用WM_USER +1来检查挂起的打印作业。
用于发送消息使用PostMessage:
<DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
Private Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As Boolean
End Function
hWnd是您使用FindWindowEx检索的应用程序窗口的句柄(检查为非null) Msg y messageId,在这个例子中应该是WM_USER + 1 wParam和lParam是您可以作为参数发送的整数检查https://msdn.microsoft.com/en-us/library/windows/desktop/ms644944%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396以获取有关PostMessage的更多信息
在您的应用中只需覆盖WndProc,当您收到消息时,请检查其是否为打印发票消息(WM_USER +1 - &gt;&amp; H401)并从数据库执行待处理的打印作业。
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case m.Msg
Case &H401
ExecutePendingPrintingJobsFromDB()
Case Else
MyBase.WndProc(m)
End Select
End Sub
您还可以为其他内容定义其他用户消息。
希望有所帮助。