三星KM24A的 Tizen B2B串口打印返回了安全错误
我正在为三星KM24A/KMA触控终端开发一款Tizen Web应用,机内置/连接有一台3 英寸热敏收据打印机。
该打印机在自助终端的界面上通过RS232C4显示,打印机支持串口/USB。浏览器API未通过 window.print()、WebUSB、WebHID或 Web Serial暴露此设备。
我发现自助终端运行时暴露了三星B2B API:
window.b2bapis // available
window.b2bapis.serialprint // available
window.b2bapis.serialport // available
我按如下方式加载API:
<script src="$WEBAPIS/webapis/webapis.js"></script>
<script src="$B2BAPIS/b2bapis/b2bapis.js"></script>
该应用使用三星VD Partner分销证书签名。自助终端的DUID被包含在分销证书中,我执行了:
tizen install-permit -t KM24A
应用安装并成功启动。
webapis.productinfo.getVersion() 可以工作。
webapis.network.getVersion() 可以工作。
webapis.systemcontrol 不可用。
我的配置包含:
<tizen:application id="UKCSSerP03.probe" package="UKCSSerP03" required_version="3.0" />
<tizen:profile name="tv" />
<tizen:privilege name="http://tizen.org/privilege/internet" />
<tizen:privilege name="http://developer.samsung.com/privilege/serialport" />
<tizen:privilege name="http://developer.samsung.com/privilege/serialprint" />
<tizen:privilege name="http://developer.samsung.com/privilege/productinfo" />
<tizen:privilege name="http://developer.samsung.com/privilege/network.public" />
我也尝试了 required_version="2.4"。
从检查运行时函数源代码来看,b2bapis.serialprint 提供了以下方法:
open(serialport, option, onlistener)
writeData(serialport, data, datasize)
close(serialport)
getVersion()
有效的 serialprint 端口枚举值似乎是:
PRINTERPORT0
PRINTERPORT1
这样调用:
const text = "\x1b@UK CARD SHOWS\nTest\n\n\n\x1dV\x00";
b2bapis.serialprint.open("PRINTERPORT0", {}, function (msg) {
console.log("listener", msg);
});
b2bapis.serialprint.writeData("PRINTERPORT0", text, text.length);
b2bapis.serialprint.close("PRINTERPORT0");
返回:
SecurityError
code: 18
message: "You do not have the privilege"
对于 PRINTERPORT1 也同样如此。
在Samsung KM24A/KMA上,b2bapis.serialprint 需要什么确切的权限字符串,是否需要Samsung KMA专用的SDK/示例来解锁此API?
先行致谢。
解决方案
b2bapis会被包装在b2bcontrol权限中,因此你需要在config.xml中使用
降级当前版本可能会导致API调用失败,请保持为标准形式:
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。