c - 通过 fwrite stdout 的 Atmel 二进制数据防止在 0x0a 之前添加 0x0d
问题描述
我在通过 ATxMega128A1 发送二进制数据时遇到问题。如果可能的话,我想使用stdout
withfwrite
函数。但我无法将其设置为二进制模式,并且每个值为 0x0a 的值都会自动转换为 0x0d 0x0a ...
我非常沮丧,因为我找到的所有精彩解决方案(fopen(..., "wb")
或fdopen(dup(fileno(stdout)), "wb");
从此处输入链接描述等freopen(NULL, "wb", stdout)
)都不适用于 avr-gnu-toolchain。
谁能帮我转移我的简单二进制数据数组?
uint8_t data[10];
data[0] = 1;
data[1] = 2;
data[2] = 3;
data[3] = 10;
....
data[8] = 3;
data[9] = 5;
fwrite(data, 10, 1, stdout);
// receiving of 10 bytes at receiver:
// 0x01 0x02 0x03 0x0d 0x0a ... 0x03
如您所见,写入串行端口的数据在 0x0a 之前附加了前导 0x0d,并且在读取 10 个字节时,接收器端缺少我的最后一个值。
不好的是,界面会自动更改数据。是否有合适的解决方案告诉stdout
您进入“愚蠢”二进制模式并按原样传输数据?!
此致
我希望有一个好的解决方案
解决方案
推荐阅读
- javascript - 如何在javascript中计算todolist应用程序中的项目
- ruby-on-rails - Postgres 在本地(Rails)创建默认模型字段 [],但是当我部署到 Heroku 时,该字段为空
- mongodb - 如果在数据库中的任何集合中找到特定的归档值,如何在 mongodb 中复制旧文档并创建新文档
- xml - 替换或不替换 - xsl 1.0 结果树片段烦恼中的递归调用模板或应用模板
- ruby-on-rails - Audited Gem:通过多个关系进行跟踪
- matlab - 从正常和混合高斯创建数据集:这是正确的吗?
- java - 在 Swing 应用程序中的两个页面之间切换
- filter - ansible检查最大数量列表
- node.js - Heroku 构建依赖项安装失败
- locking - 未找到关系,这可能是由对此对象的并发删除操作引起的