- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我遇到了爱普生 POS 打印机的问题。 Epson 提供的示例按预期工作,但是当我尝试在 Xamarin 中使用时 BOOM!
我创建了一个 Android Java 绑定(bind)库,添加了一个文件夹“Jars”,并将 ePos-Prin.jar
文件复制到其中,选项 EmbeddedJar
为 构建操作
。
在我的 Android 项目中,我将 .so 文件( native 库)放在“jni/armeabi”文件夹树中,并将构建操作选择为 AndroidNativeLibrary
。同样在 Android 项目中,我有一个简单的 MainActivity
类,它会尝试查找打印机,但不会抛出异常。
我正在使用以下代码行:
using System;
using Android.App;
using Android.Content;
using Android.Widget;
using Android.OS;
using Com.Epson.Epsonio; //Library from JBL
using Com.Epson.Eposprint; //Library from JBL
namespace EpsonPrint
{
[Activity(MainLauncher=true)]
public class MainActivity : Activity
{
const int SEND_TIMEOUT = 10 * 1000;
DeviceInfo[] mDeviceList;
Context mContext;
protected override void OnCreate(Bundle savedInstanceState)
{
//Java.Lang.JavaSystem.Load("$APP/jni/libeposprint.so"); //Doesn't work
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.Main);
var find = (Button)FindViewById(Resource.Id.find);
var print = (Button)FindViewById(Resource.Id.print);
mContext = this;
print.Click += delegate
{
try {
Print();
} catch (EpsonIoException e) {
e.PrintStackTrace();
Toast.MakeText(mContext, e.ToString(), ToastLength.Long).Show();
}
};
find.Click += delegate
{
try {
GetDevices(); //BOOM! here...
} catch (EpsonIoException e) {
e.PrintStackTrace();
Toast.MakeText(mContext, e.ToString(), ToastLength.Long).Show();
}
};
}
private void GetDevices() {
try {
Finder.Start(this, DevType.Usb, "null");
} catch (EpsonIoException e) {
if (e.Status == IoStatus.ErrIllegal) {
Toast.MakeText(this, "SEARCH ALREADY IN PROGRESS", ToastLength.Long).Show();
} else if (e.Status == IoStatus.ErrProcessing) {
Toast.MakeText(this, "COULD NOT EXECUTE PROCESS", ToastLength.Long).Show();
} else if (e.Status == IoStatus.ErrParam) {
Toast.MakeText(this, "INVALID PARAMETER PASSED", ToastLength.Long).Show();
} else if (e.Status == IoStatus.ErrMemory) {
Toast.MakeText(this, "COULD NOT ALLOCATE MEMORY", ToastLength.Long).Show();
} else if (e.Status == IoStatus.ErrFailure) {
Toast.MakeText(this, "UNSPECIFIED ERROR", ToastLength.Long).Show();
}
}
}
private void Print()
{
mDeviceList = Finder.GetDeviceInfoList(Finder.FilterNone);
var status = new int[1];
if (mDeviceList.Length > 0)
{
Finder.Stop();
}
else
{
Toast.MakeText(mContext, "List is null", ToastLength.Long).Show();
}
String deviceName = mDeviceList[0].DeviceName;
String printerName = mDeviceList[0].PrinterName;
int deviceType = mDeviceList[0].DeviceType;
String macAddress = mDeviceList[0].MacAddress;
Print printer = new Print(ApplicationContext);
//Log.("Device Name: " + deviceName +"\n" + "Printer Name: " + printerName + "\n" + "Device Type: " + String.valueOf(deviceType) + "\n" + "MAC: " +macAddress, "");
try
{
//Print Data Builder
var builder = new Builder("TM-U220", Builder.ModelAnk, ApplicationContext);
builder.AddText("ESPON PRINT TEST");
builder.AddCut(Builder.CutFeed);
// if(builder!=null) {
// Log.i("BUILDER NOT NULL", "");
// }
//Printer Test Builder
var confirmBuilder = new Builder("TM-U220", Builder.ModelAnk, ApplicationContext);
//Open printer
printer.OpenPrinter(DevType.Usb, deviceName);
//Send Test Builder
printer.SendData(confirmBuilder, SEND_TIMEOUT, status);
//Check printer Status
if ((status[0] & Com.Epson.Eposprint.Print.StOffLine) != Com.Epson.Eposprint.Print.StOffLine)
{
//If online send print data
//Log.i("PRINTER NOT OFFLINE", "");
printer.SendData(builder, SEND_TIMEOUT, status);
//Check if data sent successfully
if ((status[0] & Com.Epson.Eposprint.Print.StPrintSuccess) == Com.Epson.Eposprint.Print.StPrintSuccess)
{
builder.ClearCommandBuffer();
Toast.MakeText(this, "DATA SENT SUCCESSFULLY", ToastLength.Long).Show();
}
printer.ClosePrinter();
}
else if ((status[0] & Com.Epson.Eposprint.Print.StOffLine) == Com.Epson.Eposprint.Print.StOffLine)
{
Toast.MakeText(this, "PRINTER OFFLINE", ToastLength.Long).Show();
}
else
{
Toast.MakeText(this, "OTHER PRINTER ERROR", ToastLength.Long).Show();
}
}
catch (EposException e)
{
e.PrintStackTrace();
Toast.MakeText(mContext, e.ToString(), ToastLength.Long).Show();
}
}
}
}
有人可以帮助我吗?
最佳答案
我没有 Epson USB 打印机,但我在各种打印机上尝试了以下简单代码,我可以告诉你它是有效的。看看您是否可以以某种方式创建一个您想要打印的文件,然后尝试下面这个简单的方法,也许它也适用于该打印机:
public void print () {
Desktop desktop = Desktop.getDesktop();
try {
desktop.print(new File("Docfile.pdf"));
} catch (IOException e) {
e.printStackTrace();
}
}
关于c# - Epson TM-U220 USB 打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30575144/
我使用 EPSON 热敏打印机作为计费软件。我正在使用 java & jasper report 进行编程和报告。在 jasper 报告中,我将属性“忽略分页 = true” 和自定义纸张尺寸设置为
我有收据打印机 Epson TM T-20II,现金抽屉与打印机相连。我想用标准的 ESC 命令检测现金抽屉是否打开。有可能吗? 最佳答案 可以使用ESC/POS的状态指令。 GS a [n] (0x
我正在使用 Epson 的 ePOS2 SDK 与收据打印机 TM-M30 进行通信。我能够成功连接到打印机并打印一些数据。但我需要打开现金抽屉。所以目前我不知道连接了哪台打印机钱箱。所以目前我添加了
我设置了一台运行 Ubuntu Server 12.04 的小机器,并直接插入了 Epson TM-T88V。起初我能够很好地打印(使用 lp),但自动切纸器无法正常工作。我意识到它只是没有使用驱动程
我正在尝试使用 C# 中的 Microsoft 服务点 SDK 在 Epson TM-T88IV M(并行端口)上打印中文字符。但是,它们在打印机上显示为问号。 (?) 我的 PosPrinter 具
我目前正在使用 epson ePOS SDK for android。我需要打印菜单名称向左对齐且价格在同一行中向右对齐的收据,但它不能正常工作,我的临时解决方案是添加一些馈线以使其价格对齐,是否可以
我尝试使用点阵打印机打印表格,它有效,但文本质量非常差。所以我尝试使用简单的 FileWriter 来打印它: FileWriter out; try { out = new FileWrit
在我将 mSwipe(Card Swiper) 与我的 Android 应用程序集成之前,EPSON 网络打印机一直运行良好。 现在集成后 mSwipe 可以正常工作,但有关 EPSON 的一切都崩溃
我用 jsf、ejb 和 primefaces 为我的客户做了一个小系统,他想在他的 Epson TM-T20 打印机上打印收据。 我安装了打印机,对其进行了配置并打印了一个 word 文件,它打印一
我有一台 Epson TM-T88V-i 收据打印机,我使用 Epson 的 E-pos Javascript 库打印它。我一直在使用以下 URL 打印到连接到本地网络的打印机 http://192.
我的 Epson TM-T88V-i 打印机有问题,我第一次可以打印,但之后我总是收到 EPOS2_ERR_CONNECT 错误。 我使用 SDK 中的示例它有这个问题。 这是代码: int resu
我在设置 Epson TM-T20II POS 打印机时遇到一些问题。我的目标是能够在外部托管网络服务器上拥有一个网页,并从该网页打印一些 php 代码到我的 POS 打印机。 我下载了 ePOS S
我在 Ubuntu 12.04 中安装了一个 epson TM-T20,使用的是官方的 driver 。这是一台热敏打印机,我使用的是 80mm 纸。 我的问题:当我打印图像(使用 postscrip
如何开发 Java 软件以使用 Epson 收据打印机打印收据? 最佳答案 从 Epson 网站获取 Epson JavaPOS ADK,您需要注册才能下载。 确保您安装了 32 位 JVM 安装爱普
我正在努力购买 Epson“ESC/POS”打印机来打印条形码(使用 Delphi),并想测试打印机是否有故障。你知道在哪里可以找到在“ESC/POS”中打印条形码的程序吗?我想作为最后的手段,OPO
我正在尝试解释 Epson POS 打印机的自动状态返回 (ASB) 数据。我已使用 UB-E20 技术引用指南 (www.amigopos.com/faq/faq_262.aspx) 中的一些示例代
我想在 Epson POS 打印机上将收据打印为位图。但打印机不是直接连接的。收据渲染在后端 Web 服务上完成,生成的字节将发送到实际连接打印机的前端。 所以我查看了 Epson JavaPOS A
我正在尝试解释 Epson POS 打印机的自动状态返回 (ASB) 数据。我已使用 UB-E20 技术引用指南 (www.amigopos.com/faq/faq_262.aspx) 中的一些示例代
我需要使用 Java 打印到 Epson Endorsement TM-h6000iv 打印机(USB 版本)。然而,我阅读手册并不希望找到任何帮助。我也不希望改变打印机偏好!我尝试使用 java 中
我有 EPSON 热敏打印机,型号为 TM-88IV。我能够获得打印机的各种属性,但找不到任何属性来获得以下状态: 论文用完了 打印机处于错误状态 打印机已关闭 我正在使用以下代码: string p
我是一名优秀的程序员,十分优秀!