如何使用嵌入式编码器读取大端二进制文件?

36次观看(过去30天)
我在MATLAB中有一个函数,我正在使用它来读取一些使用大端格式进行位排序的遗留二进制文件。它包含几行类似于:
打开二进制文件
fileID = fopen(“myBinaryFile.xyz”);
从二进制文件读取到结构
结构。fieldname = fread(fileID,[1 2],‘* unit16‘“ieee-be”);
结构。fieldnameB = fread(fileID,[1 1],“unit16 = >字符”“ieee-be”);
%关闭文件
文件关闭(文件标识)
这里的大小和类型是任意选择的。我在fread中使用'machineformat'参数来正确地排序比特。这(似乎)在MATLAB环境中工作很好,我可以用我需要的数据生成一个结构。
但是,我需要在simulink模型中使用这个功能。金宝app尝试将此函数放入嵌入的MATLAB块中会返回错误:
对于代码生成,不能使用'machineformat'输入参数。
当我试图使用MATLAB编码器生成C/ c++代码时,我也得到了类似的错误,可以在S-Function中使用。
我的问题:
的代码生成友好版本是否存在 machineformat 论点吗?如果不是,是否有可能编写具有相同功能的函数,但代码生成是友好的?

接受的答案

Swatantra多个
Swatantra多个 2021年7月9日
嗨,本,
我的理解是,您希望能够在代码生成设置中更改输入的字节顺序。函数“fread”不支持在文档中提到的“machinefmt金宝app”输入来生成代码。您可以研究以下函数来解决这个问题
  • “编码器。ceval”-允许您从MATLAB代码中调用外部C/ c++函数。
  • "swapbytes" -交换输入的字节顺序,可用于代码生成
希望这能有所帮助

更多答案(0)

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!