问题标签 [cubesat-protocol]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 为什么将 a 从数组转换为指针会破坏我的数据?
前几天,我的一个朋友在 Facebook 上发布了这个问题,而对于我的生活,我无法弄清楚。他正在使用 cubesat 协议编写客户端和服务器。由于某种原因,当他将协议结构的数据成员转换为指针时,他的数据似乎被破坏了。
客户端代码片段:
服务器代码片段:
输出此代码产生:
输出此代码的普通读者会期望:
经过一番摆弄后,他告诉我,如果他不data32
将 struct 的成员强制转换为 a ,他会得到正确的输出uint32_t*
。
根据我自己的研究,packet
是 type csp_packet_t
,定义为:
完整的头文件在这里。
这是 GNU C,因此允许使用零长度数组。
我不知道两边架构的字长或字节序。
所以,简单地说——这里发生了什么?为什么演员阵容很重要?
c - MPU-9250 (uClinux) 上的磁力计数据
我发现其他一些人问过这个问题,但他们都在用 Arduino 编码,我正在努力将其转化为我的项目。
我在一个开发用于发射的立方体卫星的研究团队中,我的职责是与包括 IMU (MPU-9250) 在内的外围设备进行通信。我正在使用 uClinux 进行交叉编译,使用 C 进行编码。
到目前为止,我可以成功读取加速度计、陀螺仪和温度,但无法从磁力计获得读数。磁力计 (AK8963) 有自己的地址 (0x0C),我一直在尝试通过写入I2C_SLV0_ADDR (0x25)、I2C_SLV0_REG (0x26) 和I2C_SLV0_CTRL (0x27) 来与其通信。一旦我似乎没有得到任何结果,我尝试通过写入 FIFO Enable (0x23) 和I2C Master Control (0x24)来解决它
数据表和寄存器映射暗示从磁力计获取的值存储在寄存器外部传感器数据(0x49-0x60)中,但是当我尝试这个时,我没有在这些寄存器中得到任何东西。
这是一些代码,显示了我正在写入寄存器的数据:
所以我的问题是: 1. 我是否以正确的方式进行这个过程,还是我完全离开了?
- 如果我在正确的轨道上,我是否从正确的寄存器中读取?
谢谢大家的帮助!如果有什么我需要澄清的,请告诉我!
python-3.x - 如何执行带有python输入的shell程序?
首先,我使用的是 Ubuntu 20.04 和 Python 3.8。我想运行一个接受命令行输入的程序。我设法使用 os.system() 命令从 python 启动程序,但启动程序后无法发送输入。有问题的程序是使用 CubeSat 空间协议 (CSP) 作为语言的产品界面应用程序。但是,使用的输入被编码在一个带有相应 .h 标头的 .c 文件中。
在 shell 中,它看起来像这样: 启动程序
在 python 中,它看起来像这样:
输出与shell中的输出相同,但没有“cmp ident输出”,也就是说我无法使用csp-client#
正如您可能看到的,我是一个真正的初学者,试图尽可能清晰和精确。如果需要,我当然可以尝试提供更多信息。谢谢你的帮助 !