即使不进行交易,也应定期检查设备状态,以保持用户界面同步并显示错误状态。您不能在回调函数中调用任何 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 升级,请对集成应用以下更改:- 更新
emvCorePaymentParameters的用法:- 删除
fee_cents和currency_code字段。 - 根据需要添加
is_final_amount和additional_receipt_data。is_deferred保留供将来使用(RFU)。
- 删除
- 处理新状态码: 在状态处理中检查
EC_DISABLED。 - 双线程模式: 如果使用 Datalink 协议,请实现调用
EcodSdk_ProcessMessages()的第二个线程。 - 更新响应处理: 利用
emvCorePaymentResponse中的新字段。