#hsl #card #reading #travel #read #version #helsinki

scannit-core

读取赫尔辛基HSL旅行卡的库

4个版本 (稳定)

1.0.11 2020年3月14日
1.0.5 2019年10月27日
0.1.0 2019年8月17日

#3 in #travel


用于 scannit-core-ffi

MIT 许可证

49KB
918

scannit-core

Build Status

这是一个设计用来读取V2 HSL旅行卡的库。它主要基于HSL提供的Java库,以及我V1版本的C#库HSLTravelSharp的演变。

用法

将以下内容添加到您的Cargo.toml中

[dependencies]
scannit-core = "0.1.0"

获取TravelCard对象需要通过NFC与您的实体旅行卡进行通信。一个例子包含在这个存储库中的scannit-cli子项目中。

创建TravelCard对象看起来可能像这样

use scannit_core::travelcard::create_travel_card;

// function declaration here somewhere...

let app_info: &[u8] = get_app_info_from_nfc_card();
let control_info: &[u8] = get_control_info_from_nfc_card();
let period_pass: &[u8] = get_period_pass_from_nfc_card();
let stored_value: &[u8] = get_stored_value_from_nfc_card();
let e_ticket: &[u8] = get_e_ticket_from_nfc_card();
let all_history : &[u8] = get_history_from_nfc_card();

let travel_card = create_travel_card(
    app_info,
    control_info,
    period_pass,
    stored_value,
    e_ticket,
    all_history,
);

此存储库还通过desfire模块公开了与NFC卡通信的命令。

FFI

此存储库还包括名为scannit-core-ffi的子项目,其中包含对主存储库中数据模型的FFI友好投影,以及可以用于创建(和释放)TravelCard对象的FFI友好函数。有关C#使用FFI存储库的示例,请参阅ScannitSharp库

构建FFI存储库

> cd scannit-core-ffi
> cargo build

或仅

> cargo build --all

构建

>cargo build

就这样!

交叉编译应该没有太多问题,但需要标准工具进行交叉编译到目标三元组。例如,Android需要NDK和arlinker~/.cargo/config设置。

依赖项

~1.3–2MB
~25K SLoC