c - 如何使用 Arduino 正确发送无符号长字节?
问题描述
我正在测试与 Arduino 的串行通信,如下所示:
timeStamp = 0xFFFFFFFF;
Serial.flush();
Serial.write((uint8_t*)timeStamp, 4)
另一方面,我正在用read(fd, &rx, 4)
C 程序读取这个字节。我希望读取始终相同的值,但0xffffffff
我没有读取,0x370066bf
所以解码存在问题。Ps:我已经设置串口读取原始字节,所以没有专门的字节来编码回车或其他特殊字符。
解决方案
我相信你的问题是你Serial.write((uint8_t*)timeStamp, 4)
总是从内存中发送 4 个字节,从 address 开始0xFFFFFFFF
。这是因为timeStamp
不是指针,而是您将其转换为指针。请尝试将地址转换为timeStamp
:Serial.write(((uint8_t*)(&timeStamp)), 4);
,看看是否可行。
推荐阅读
- javascript - Firebase 身份验证自定义声明导致加载程序出现问题
- angular - 为什么 ngSwitch 会无限渲染模板?
- jquery - 比较课程并采取行动/Comparer 2 classes et faire une action
- wordpress - 将图像从 Azure blob 存储上传到 Wordpress
- python - python ipywidgets 在 widgets.Text 中以编程方式强制峰会
- sql - 根据 Oracle DB 版本运行 sql
- android - 从周数获取周开始和结束天
- python - `type.__instancecheck__` 是否实现了 `isinstance` 的默认行为?
- node.js - 从等待返回的最佳实践
- laravel - Laravel / VueJs 2 最新更改未在实时服务器 IONOS 上呈现