首页 > 解决方案 > 如何从共享内存文件(最初是 C 结构)中提取数据到 Go 中?

问题描述

对于一个学生项目,我正在尝试在 Project Cars 2 和一个通过 UART 通信的嵌入式系统之间建立一个接口,该接口具有一个共享内存地址,您可以在其中收集汽车遥测数据。

我想在 Go 中构建它,从长远来看,为 Go 制作一个可以通信和收集遥测数据并在将来使用它的包。共享内存结构和数据是用 C 语言编写的,可以在此处找到 (此文件的来源)。当您访问内存映射文件“%pcars2%”时,此地址包含链接结构组织中的数据。

我的问题是如何从这个结构中提取数据的最佳方法?我知道我可以使用 cgo 并解释结构的数据,但是有没有办法可以使用从该地址的类似类型构建的结构直接在 Go 中像 C 中一样进行内存复制?我知道我可以将 UDP API 用于遥测数据,但我很好奇 Go 是否具有这种功能。

标签: cgoshared-memorycgo

解决方案


推荐阅读