我有以下硬件:
我有一个创建发票的Android活动,所以我想在打印机上打印一些文字。但我不能让它发挥作用。
我尝试使用USBManager但没有成功。有没有办法实现这个目标?
答案 0 :(得分:2)
我找到了解决方案。这是让它发挥作用的唯一方法。 USBManager无法访问打印机,因为缺少驱动程序。所以我尝试使用WI-FI选项。
您需要一些额外的硬件:
首先,您必须配置打印服务器。我是在this tutorial之后做到的。
现在我让打印服务器指向我的设备(充当服务器)并等待任何打印机作业。
我在Xamarin.Android项目上做了什么?
创建了一个指向打印机服务器的Socket类的实例;)
不需要Epson命令(其中一些命令)。代码如下:
private async Task SendCommand()
{
await Task.Run (() =>
{
try
{
Socket sock = new Socket("199.1.1.50", 9100);
PrintWriter oStream = new PrintWriter (sock.OutputStream, true);;
OutputStreamWriter outWriter;
oStream.Write(0x1B); //T1
oStream.Write(0x40); //T2 Start Printer
oStream.Print("This is great!!! á é í ó ú ü Ü Ñ ñ");
oStream.Write(0x0C); //release paper
oStream.Write(0x1B); //t1
oStream.Write(0x40); //t2 Finish Printer
oStream.Flush ();
oStream.Close ();
oStream.Dispose();
sock.Close ();
sock.Dispose();
}
catch(SocketException ex)
{
string m = ex.Message;
RunOnUiThread(() => Toast.MakeText(this, m, ToastLength.Long).Show());
}
catch(Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Long).Show();
}
});
}
现在工作得非常好。