首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于安卓系统的爱普生ePOS SDK缺失常量

用于安卓系统的爱普生ePOS SDK缺失常量
EN

Stack Overflow用户
提问于 2018-09-04 12:16:50
回答 2查看 1.7K关注 0票数 0

我们正试图升级爱普生的SDK,这是很长一段时间以来一直不推荐的。

我们使用的是旧的ePOS打印SDK (com.epson.eposprint)包,并且开始出现问题,因此我们正确地决定迁移到当前的ePOS SDK (com.epson.epos2)。

我们正在使用。

我们遵循SDK中包含的迁移文档。替换了大部分代码。但是,似乎要么是Xamarin存在java绑定问题,要么是缺少了什么,因为几乎90%的枚举值是不可用的。如果没有枚举值就几乎不可能正确调用方法..。例如,我们确实有一些可用的枚举(比如BatteryLevelX、TMxx、Pattern*),但仅此而已。

我们正在使用Android8.0

我们的javabinding项目配置如下:

代码语言:javascript
复制
--JarLibrary
----Jars
-------ePOS2.jar
-------ePOSEasySelect.jar
----libs
------armeabi
--------libepos2.so
--------libeposeasyselect.so
------armeabi-v7a
--------libepos2.so
--------libeposeasyselect.so

项目属性:

Android解析器: jar2xml Android编解码器目标: XAJavaInterop1

知道为什么会这样吗?

编辑:解决方案是确保在SDK中没有可见关键字的所有对象都使用Metadata.xml转换文件进行修复,这样做:

代码语言:javascript
复制
<!-- On enlève l'ancienne classe du package qui ne sert plus à rien, juste pour la migration -->
<remove-node path="/api/package[starts-with(@name, 'com.epson.epsonio')]" />

<!-- Need to change the visibility of many ommited classes visibility in jar epos -->
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBox']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBoxManager']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.keyboard']/class[@name='NativeKeyboard']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.printer']/class[@name='NativePrinter']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.scanner']/class[@name='NativeScanner']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.simpleserial']/class[@name='NativeSimpleSerial']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='DeviceInnerImplement']"
      name="visibility">protected</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='CommonPrinter']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='LogoKeyCode']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2']/class[@name='NativeInitializer']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2']/class[@name='OutputLog']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.display']/class[@name='NativeDisplay']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='Device.DeleteDeviceCallbackAdapter']"
      name="visibility">protected</attr>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-21 16:46:07

编辑:解决方案是确保在SDK中没有可见关键字的所有对象都使用Metadata.xml转换文件进行修复,这样做:

代码语言:javascript
复制
<!-- On enlève l'ancienne classe du package qui ne sert plus à rien, juste pour la migration -->
<remove-node path="/api/package[starts-with(@name, 'com.epson.epsonio')]" />

<!-- Need to change the visibility of many ommited classes visibility in jar epos -->
<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBox']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.commbox']/class[@name='NativeCommBoxManager']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.keyboard']/class[@name='NativeKeyboard']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.printer']/class[@name='NativePrinter']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.scanner']/class[@name='NativeScanner']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.simpleserial']/class[@name='NativeSimpleSerial']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='DeviceInnerImplement']"
      name="visibility">protected</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='NativeDevice']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='CommonPrinter']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2.printer']/class[@name='LogoKeyCode']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2']/class[@name='NativeInitializer']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.epos2']/class[@name='OutputLog']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice.display']/class[@name='NativeDisplay']"
      name="visibility">public</attr>

<attr path="/api/package[@name='com.epson.eposdevice']/class[@name='Device.DeleteDeviceCallbackAdapter']"
      name="visibility">protected</attr>
票数 3
EN

Stack Overflow用户

发布于 2020-04-01 11:07:56

对于那些仍在努力解决这个问题的人,我找到了一种解决方案,似乎可以在不重写库的情况下完成任务。

  1. 在您的解决方案中,创建一个新的"Android绑定库(Xamarin)“项目。
  2. 将ePOS2.jar (如果需要的话还有ePOSEasySelect.jar )文件添加到"Jars“文件夹中,并将文件的构建操作(在属性窗口中)设置为"EmbeddedJar”。
  3. 从OPOS_CCOs_1.14.001.msi本地安装Objects (CCOs)。
  4. 将生成的所有.dll文件从步骤1复制到您的项目中。我在其中使用了一个"lib“文件夹,但您可以这样做。
  5. 引用项目中的.dlls。
  6. 构建。

您应该得到一个库,您可以从其他项目中引用这个库,并使用Com.Epson.Epos2命名空间及其中的所有类。

作为参考,大多数有用的常量都是通过Com.Epson.Eposdevice namespace访问的。例如Com.Epson.Eposdevice.Printer.Printer.LangEn

注意:没有默认的DiscoveryListener类,所以如果沿着这条路线前进,就需要构建自己的类。

同样值得记住的是,大多数Java项目的方法名称都使用camelCaseFormatting,所以当从文档中复制/粘贴示例(这很糟糕)时,不要忘记将您的方法更改为TitleCaseFormatting

此外,我还不断地得到一个错误与global::Com.Epson.Epos2.Printer.LogoKeyCode不存在的任何原因。临时解决方案是将以下行添加到绑定库的MetaData.xml文件夹中的Transforms文件中:

代码语言:javascript
复制
  <remove-node path="/api/package[@name='com.epson.epos2.printer']/class[@name='Printer']/method[@name='getLogoList' and count(parameter)=0]"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52166161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档