Skip to main content
使用此页面配置串行通信、设置线程和回调、处理错误以及调整 EMV Core RTOS SDK 的设置。
即使不进行交易,也应定期检查设备状态,以保持用户界面同步并显示错误状态。您不能在回调函数中调用任何 SDK API。

串行接口配置

该SDK支持两种串口通信模式。请选择与您的硬件连接相匹配的模式。

UART 模式(默认)

通过 RS-232/TTL 串口连接 UNO-mini。在平台层配置设备路径和波特率,使其与您的硬件匹配。

HID 模式

通过 USB HID 连接 UNO-mini。每个 64 字节的报告使用第一个字节作为长度指示符;其余字节承载实际数据。

线程要求

SDK 需要专用的后台线程进行通信。当 EC_USE_DATALINK_PROTOCOL=1 时,需要两个线程:
当 EC_USE_DATALINK_PROTOCOL 被禁用时,仅需要维护线程。

回调注册

所有 SDK 操作均为异步操作。请在发起操作前注册回调函数:

错误处理

检查返回值并实现适当的错误处理:

配置

内存管理

在 ecod_sdk_configs.h 中配置内存分配策略:

缓冲区大小

缓冲区大小在 ecod_sdk_setup.h 中定义:
JSON-RPC 的开销会使可用有效载荷减少约 64 字节。套接字数据采用十六进制编码,因此有效吞吐量减半。

超时与计时

在 ecod_sdk_configs.h 中配置通信超时:

日志记录

开发过程中启用调试日志记录:

集成故障排除

未检测到设备

使用以下命令检查设备可见性和权限:

串行通信故障

请检查以下常见原因:
  • 验证正确的设备路径(/dev/ttyUSB0 与 /dev/hidraw0)
  • 检查是否有其他进程正在使用串口
  • 确保平台代码中正确选择 HID/UART 模式
  • 验证波特率设置是否与设备配置匹配

线程问题

当线程行为不符合预期时,请检查以下内容:
  • 确保维护线程持续运行
  • 检查回调函数中是否存在互斥锁死锁
  • 避免在回调处理程序中执行阻塞操作
  • 验证应用程序退出时线程是否已正确清理

内存问题

遇到内存相关故障时,请检查以下各项:
  • 使用 EC_MAX_BUFFER_SIZE 监控缓冲区溢出
  • 如果使用堆分配,请检查是否存在内存泄漏
  • 确保正确清理 SDK 资源
  • 嵌入式系统建议考虑使用静态分配

调试日志

启用全面日志记录以诊断问题:

性能调优

应用以下调整以提高 SDK 的响应速度:
  • 将维护线程的休眠间隔保持为 1 ms
  • 在内存受限的环境中使用静态分配
  • 尽量缩短回调处理时间
  • 根据您的使用场景配置合适的缓冲区大小
  • 套接字密集型应用请考虑网络桥接设置

迁移清单(来自 SDK v0.9)

如果从 SDK v0.9 升级,请对集成应用以下更改:
  1. 更新 emvCorePaymentParameters 的用法:
    • 删除 fee_cents 和 currency_code 字段。
    • 根据需要添加 is_final_amount 和 additional_receipt_data。is_deferred 保留供将来使用(RFU)。
  2. 处理新状态码: 在状态处理中检查 EC_DISABLED。
  3. 双线程模式: 如果使用 Datalink 协议,请实现调用 EcodSdk_ProcessMessages() 的第二个线程。
  4. 更新响应处理: 利用 emvCorePaymentResponse 中的新字段。