> ## Documentation Index
> Fetch the complete documentation index at: https://devzone.nayax.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Marshall C# SDK 发布说明

> 跟踪 Marshall C# SDK 在发布时的变更。

Nayax 在此页面记录 Marshall C# SDK 的变更。请使用页面顶部的图标订阅 RSS 源以获得新条目的通知。

<Update
  label="C# 0.0.5.20（当前版本）"
  rss={{
title: "C# SDK 0.0.5.20：低级串行清理和链接/销售流程可靠性修复",
description: "改进：在 `lowlevel_serial_t` 中整合了低级串行接收处理。修复：一个导致保活停止的 `vmc_link` 链路断开问题，以及更强大的 `vmc_vend_t` 处理 `session_end` 和 `send_transfer_data`。"
}}
>
  下面列出了每个 C# SDK 版本，从当前版本到首个发布版本。

  | Version | Summary |
  | - | - |
  | **0.0.5.20 (Current)** | **在 `lowlevel_serial_t` 中整合了低级串行接收处理（仅头部帧、友好轮询睡眠和命名读取器线程）；修复了 `vmc_link` 链路断开问题，其中错过的确认让数据包永远挂起并停止保活（重传不再受限于发送超过接收）；`vmc_vend_t` 现在在任何状态下全局处理 `session_end` 和 `send_transfer_data` 以获得更强大的销售流程** |
  | 0.0.5.19 | 改进了链接可靠性并修复了虚假重传 |
  | 0.0.5.18 | 修复了 rx 和 tx 线程之间关于 `m_pending_tx_msg` 访问的竞态条件 |
  | 0.0.5.17 | 添加了 `pre_auth_amount_config`（0x8c）销售子命令，包括消息类、解码/编码支持、工厂方法、事件处理和公开 API；添加了演示菜单选项以与 Java SDK 对齐（检查余额、预付购买、预授权配置、显示消息、关闭套接字） |
  | 0.0.5.16 | Marshall 消息中的多销售最大产品数现在根据协商的最大消息大小计算；修复了 `session_end` 超时过早过期的问题，导致 `reader_always_on` 提前触发 |
  | 0.0.5.15 | 在所有模块中对齐了 C# SDK 与 Java SDK：修复了 transfer\_data 位图常量和多个编码错误（`msg_time_rsp_t`、`msg_setup_max_min_prices_t`、`msg_remote_selection_t`、`msg_expansion_t`、`msg_reader_state_t`）、添加了缺失的消息类和 vposm\_ext/ev\_ext 消息的工厂分派、添加了 `consumer_id` 和其他 transfer\_data 字段、修复了 `vmc_vend_t`、`vmc_general_t`、`vmc_socket_t` 和 `vmc_link` 中众多会话、套接字和通用模块错误 |
  | 0.0.5.14 | 为常开模式添加了实时价格变更支持，即使在读取器已启用之后，还添加了健全性检查使得 `vend_request` 和 `close_session` 返回布尔值并拒绝超过允许金额的价格（禁用 `long_price` 时为 65k）；修复了 `msg_single_vend_t` 上的 `session_id` 解码问题并更新了多销售请求日志 |
  | 0.0.5.13 | 对齐了 C# SDK 与 Java SDK；修复了 `multi_vend_session_close` 编码 |
  | 0.0.5.12 | 添加了防护措施以防止在没有链接时发起销售、套接字和通用操作，防止不必要的崩溃；优化了 `eth_port` 日志 |
  | 0.0.5.11 | 移除了不必要的令人担忧的"虚假确认"警告；修复了 `eth_port` 以在 VPOS 重启但 VMC 端的套接字不关闭时恢复，通过关闭和重新连接 |
  | 0.0.5.10 | 修复了多销售多会话数据包编码 |
  | 0.0.5.09 | 修复了一个可能因缓冲区环绕导致的数据包丢失，触发了重传，以及交易结束后未清除卡数据的错误；`eth_port` 现在可正常使用 |
  | 0.0.5.08 | 添加了增强显示控制（VPOSM），具有对 VPOS Touch 设备的向后兼容性，并更新了示例应用程序以支持各种显示控制布局；稳定了 `eth_port` 实现 |
  | 0.0.5.07 | 修复了帧大小检测，具有更好的健全性检查以支持不同的 Marshall 消息大小；为端口接口添加了 `flush()` 调用 |
  | 0.0.5.06 | 通过 transfer\_data 添加了站点 ID 和品牌名称传输到机器，以及一个新的技术员模式命令以远程打开门；修复了单个产品的长价格 |
  | 0.0.5.05 | 添加了品牌选择和自定义 `transaction_id` 生成 |
  | 0.0.5.04 | 修复了一个在最新 SDK 上接收 `on_begin_session` 的问题 |
  | 0.0.5.03 | 添加了长价格支持（VPOSM）和 QR 第三方授权支持；修复了负价格显示问题 |
  | 0.0.5.02 | 移除了令实现者困惑的 CPU 饥饿警告 |
  | 0.0.5.01 | 移除了 `lowlevel_serial`；现在注入 `serial_port_i` 实现（提供了工作正常的 `pc_port.cs`）；修复了 VPOS 序列号作为原始字节返回而不是正确排列的字符串返回的问题 |
  | 0.0.4.23 | 修复了缓冲区管理中的重传错误，可能丢失同时到达的连续数据包、`mdb_rsp` 解析错误（Marshall 主机）、`lowlevel_serial` 缓冲区管理错误和影响 transfer\_data 解析的字符串 TLV 解码错误 |
  | 0.0.4.22 | 为 `vend_session_t` 添加了 `session_id` 字段用于多会话引用；修复了跳过用户回调的 `msg_display_event_t` 解析错误 |
  | 0.0.4.21 | 修复了 `card_balance` 解码和解析 transfer\_data 时的可能崩溃，包括可变长度整数字段；将 .NET 版本更改为 4.6.2 |
  | 0.0.4.20 | 添加了记录器 API 以将原始数据转储到日志文件 |
  | 0.0.4.19 | 修复了在没有会话启动时到达 `on_begin_session` 时的未定义状态机状态和来自无论链接状态如何调用 API 或在等待 `end_session` 时停止回调的死锁风险；添加了从卡检测开始在整个交易中发送 transfer\_data 的能力，并添加了 SDK 配置日志 |
  | 0.0.4.17 | 添加了检查余额会话类型、卡子类型和卡余额 transfer\_data、销售折扣/最终价格计算，以及对常开设置上切换到信息会话的支持；修复了多会话设置上不工作的电子收据、导致已确认数据包重传的 rx 和 tx 线程之间的竞态条件，以及发送 `reader_enable` 时失去通信时的可能崩溃 |
  | 0.0.4.16 | 修复了影响示例应用程序和 SDK 的多实例错误 |
  | 0.0.4.15 | 添加了实例化多个 Marshall 链接的能力 |
  | 0.0.4.14 | 修复了项目价格和代码 API 类型（整数到短整数）和卡呈现后但在请求销售之前取消会话时的崩溃 |
  | 0.0.4.13 | 修复了错过多个标签的 transfer\_data 解析错误 |
  | 0.0.4.12 | 会话对象上的 `session_status` 现在由 SDK 填充以报告交易取消原因；修复了常开模式中的会话取消；优化了 `lowlevel_serial` CPU 使用率 |
  | 0.0.4.11 | 添加了用于调试的 rx 重新排列中的数据包转储；改进了压力下的 `lowlevel_serial` 处理 |
  | 0.0.4.10 | 添加了 `vend_status(bool)` 以明确销售成功、会话结构上的总计费金额（如果有的话还有折扣），以及日志行中的绝对 POSIX 时间戳；将 `Log.initialize()` 重命名为 `Log.stream()`；修复了销售取消时序错误和 SDK 初始化时的虚假 CPU 警告 |
  | 0.0.4.9 | 为 `onStatus` API 和 `device_not_available_reason` 枚举添加了额外数据参数；修复了虚假 transfer\_data 解析问题；示例应用程序现在在 `onReady` 上显示人类可读的状态代码和额外 VPOS 信息 |
  | 0.0.4.8 | 添加了 `Log.console(boolean)`、新 transfer\_data 字段（主和 POS 固件版本、Monyx ID、默认信用）、新设备状态枚举和 `onSessionTimeout(id)` 事件；重写了示例应用程序 |
  | 0.0.4.7 | 向 `vmc_vend` 添加了 `unit_of_measure` 枚举值；在终端和文件之间对齐了日志输出 |
  | 0.0.4.6 | 改进了 `lowlevel_serial` 链接可靠性；修复了 `fw_info` 字段排列、销售会话状态请求错误和 `vmc_socket` 繁忙/重传超时错误 |
  | 0.0.4.5 | 在 `tx_buf` 引用关键部分上添加了信号灯保护 |
  | 0.0.4.4 | 与 Marshall 3.0 对齐：添加了会话状态查询、`fw_info` SDK 版本字符串字段、读取器状态检索、条目类型枚举、QR 电子收据和远程销售；添加了 CPU 监控、多销售产品限制以避免缓冲区溢出，以及 `fw_info` 的附加 VMC 信息字段；重写了示例应用程序 |
  | 0.0.4.3 | 添加了在运行时启动和停止文件日志的能力 |
  | 0.0.4.2 | 修复了 UI 事件错误 |
  | 0.0.4.1 | 添加了防护措施以防止在空闲模式下禁用读取器和显示事件回调 |
  | 0.0.4.0 | 添加了显示控制支持、额外状态代码和 `onStatus` 销售回调（参见 `marshall_t.status_xxxx`） |
  | 0.0.3.5 | 修复了 MSR 卡编码 |
  | 0.0.3.4 | 为 `lowlevel_serial_t` 添加了串行端口访问保护并优化了访问；将销售 `onReady` 回调更改为提供最后会话对象（首次调用时为空） |
  | 0.0.3.3 | 修复了从 `onReady()` 调用 `start_session` 的错误 |
  | 0.0.3.2 | 添加了将 SDK 日志定向到文件的能力和 Monyx 卡到 `card_type` 枚举；修复了来自无效日志字符串格式化的多销售崩溃和在 `onTransactionInfo` 内返回无效日期的 `get_transaction_id()` 错误 |
  | 0.0.3.1 | 添加了串行数据包转储级别和销售拒绝政策参数，以及会话类上的 `session_timeout` 状态类型 |
  | 0.0.3.0 | 更新到最新 Marshall 协议修订版：链接建立现在报告商户 ID、终端 ID 和机器位置；添加了套接字 MTU 和超时配置 |
  | 0.0.2.17 | 澄清空队列错误是通知而不是错误 |
  | 0.0.2.16 | 修复了常开错误 |
  | 0.0.2.15 | 更新了 `vmc_general` 事件接口；修复了 `reader_always_on` 仅在显式禁用常开时应用 |
  | 0.0.2.14 | 添加了启用或禁用日志输出的能力和常开示例 |
  | 0.0.2.13 | 修复了阻止重新启动的"停止"问题；添加了 `vmc_framework.get_version()` |
  | 0.0.2.12 | 修复了关键链接错误 |
  | 0.0.2.11 | 添加了 paymarket 机器类型；更改了电动车充电器机器类型 |
  | 0.0.2.10 | 添加了机器类型到配置和常开模式；改进了套接字处理；修复了虚假不匹配消息 ID 警告、资金可用转换问题和机器序列号/版本/模型字符串长度限制 |
  | 0.0.2.9 | 修复了有时试图从空队列传输的链接错误 |
  | 0.0.2.8 | 添加了销售会话上 transfer\_data 结构的解析以获得详细、可读的信息 |
  | 0.0.2.7 | 改进了套接字日志并更改了低级接口；`onReady(...)` 回调现在传输 VPOS 配置；为 `vmc_configuration` 添加了 `multi_vend_support` 标志（VPOS 必须配置预授权以使用多销售会话）；修复了阻止某些 Marshall API 从 `onReady(...)` 被调用的错误 |
  | 0.0.2.6 | 统一了单销售和多销售的销售请求 API，产品在 `vend_session_t` 上声明 |
  | 0.0.2.5 | 添加了对 DCS 的数量报告（需要 VPOS 4.0.1.5 rc9 或更新）和交易 ID 报告 API；修复了多会话设置上不工作的电子收据、导致已确认数据包重传的 rx 和 tx 线程之间的竞态条件，以及发送 `reader_enable` 时失去通信时的可能崩溃 |
  | 0.0.2.4 | 修复了模型/版本报告到 DCS；将保活计时器与配置的超时分离 |
  | 0.0.2.3 | 添加了日志消息和链接统计；修复了主缓冲区中间的缓冲区索引解析错误 |
  | 0.0.2.2 | 修复了通信问题 |
  | 0.0.2.1 | 修复了有时触发过快的重传超时 |
  | 0.0.2.0 | 改进了 `low_level_serial` 示例；添加了 Marshall 背驮消息的处理；修复了重传错误 |
  | 0.0.1.9 | 添加了 VMC 身份验证示例；改进了 `low_level_serial` 示例 |
  | 0.0.1.8 | 修复了链接问题；添加了 CC 最后 4 位数字 transfer\_data |
  | 0.0.1.7 | 添加了读取器常开模式和现金销售 |
  | 0.0.1.6 | 修复了会话关闭状态错误；添加了现金销售通知 API |
  | 0.0.1.5 | 添加了 Mifare/mag 身份验证支持 |
  | 0.0.1.4 | 添加了套接字支持和信息会话支持 |
  | 0.0.1.3 | 初始版本 |
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.