Xamarin:如何从Android设备打印到点阵打印机

本文关键字:打印 点阵打印机 Android Xamarin | 更新日期: 2023-09-27 17:55:19

我有以下硬件:

  • 点阵打印机:LX 300-II。
  • 安卓设备与安卓版本4.2.2。
  • 连接类型:USB、无线网络、蓝牙。

我有一个创建发票的 Android 活动,因此我想在打印机上打印一些文本。但我无法让它工作。

我尝试使用USBManager,但没有成功。有什么办法可以做到这一点吗?

Xamarin:如何从Android设备打印到点阵打印机

我找到了解决方案。这是使其发挥作用的唯一方法。USBManager无法访问打印机,因为缺少驱动程序。所以我尝试使用WI-FI选项。

这里需要一些额外的硬件:

  • 打印服务器(在本例中,我尝试了TL-WPS510-U)。
  • 安卓设备 4.0.3 或更高版本
  • 爱普生LX-300+II

首先,您必须配置打印服务器。我按照本教程做了。

现在,我让打印服务器指向我的设备(充当服务器)并等待任何打印机作业。

我在 Xamarin.Android 项目上做了什么?
创建了指向打印机服务器;)的套接字类的实例

不需要爱普生命令(好的,其中一些)。代码如下:

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();
        }
    });
}

现在工作得很好。