3 个版本 (重大更改)
0.7.0 | 2024年6月27日 |
---|---|
0.6.0 | 2024年6月5日 |
0.5.1 | 2024年5月28日 |
#31 在 #points
每月 29 次下载
120KB
2K SLoC
servicepoint_binding_c
在 CCCB 中,墙上挂着一个大像素矩阵。它被称为 "Service Point Display" 或 "机场显示"。
这个 crate 包含了 servicepoint
库的 C 语言绑定,使用户可以通过 UDP 解析、编码并发送数据包到这个显示。
示例
#include <stdio.h>
#include "servicepoint.h"
int main(void) {
sp_Connection *connection = sp_connection_open("localhost:2342");
if (connection == NULL)
return 1;
sp_PixelGrid *pixels = sp_pixel_grid_new(sp_PIXEL_WIDTH, sp_PIXEL_HEIGHT);
sp_pixel_grid_fill(pixels, true);
sp_Command *command = sp_command_bitmap_linear_win(0, 0, pixels, Uncompressed);
sp_Packet *packet = sp_packet_from_command(command);
if (!sp_connection_send(connection, packet))
return 1;
sp_connection_dealloc(connection);
return 0;
}
作为此 crate 的一部分,包含 Makefile 的完整示例。
关于稳定性的说明
此库仍在早期开发阶段。您当然可以使用它,它也能工作,但请期待每次版本升级时会有一些小的破坏性更改。在 1.0 发布之前,请在 Cargo.toml 中指定完整的版本,包括补丁。
安装
将头文件复制到您的项目中,并对其进行编译。
您可以选择静态链接(推荐)或动态链接。
- C 示例展示了如何针对
staticlib
变体进行静态链接。 - 当动态链接时,您必须在运行时提供与
cdylib
相同版本的库,因为目前还没有 API/ABI 保证。
关于与 Rust 库的差异的说明
- 函数名称为:
sp_
<struct_name> <rust name>。 - 实例的消耗方式与在编写 Rust / C# 代码时相同。在(隐式!)释放后不要使用实例。
- Option 或 Result<T, E> 转换为可空返回值 - 检查 NULL!
- 此处尚未具体说明 C++。当直接为 C++ 生成时,您可能会得到一个更好的头文件,但它应该是可用的。
- 同时读取和写入实例是不安全的。只有并发读取是安全的。
- 文档包含在头文件中,并可在 线上 获取
其他一切
有关更多信息,请参阅主要项目的 README。
依赖关系
~1–2.3MB
~42K SLoC