三星KM24A的 Tizen B2B串口打印返回了安全错误

前端开发 2026-07-09

我正在为三星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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章