将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]
Posted
技术标签:
【中文标题】将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]【英文标题】:Converting a C char array into a Matlab String [Matlab Coder] 【发布时间】:2019-04-03 16:13:27 【问题描述】:我的意图是为 Matlab 系统的输出显示一个类型为 char_T data[] 的字符串,我通过 coder.ceval 接收 C 中的一个函数
我想更具体地显示缓冲区变量,因为它必须声明缓冲区变量
matlab
function data = stepImpl(obj)
buffer = ¿¿ ??;
if coder.target ('Rtw')
coder.cinclude('File_Wrapper.h');
coder.ceval('function',obj.port, coder.wref(buffer));
data = ¿¿¿ string(buffer) ???;
end
end
这将是char_T data[]发给我的函数,我使用coder.wref在下面的方法中填充变量
void function(uint8_T uartPort, char_T data[])
char buffer[30];
if (uartPort == 1)
fgets(buffer, 10, uart1);
else if (uartPort == 2)
fgets(buffer, 10, uart2);
snprintf (data, sizeof(buffer), "%s", buffer);
这篇文章不适合我: Converting a C char array into a Matlab String using Matlab Coder
【问题讨论】:
【参考方案1】:您编写的代码到底出了什么问题?您是否看到任何错误消息,或者得到的答案与您的预期不同?
我认为您可能会遇到问题,因为 MATLAB 中的“缓冲区”变量不够大,无法在 C 代码中存储您打印到其中的所有内容。我建议使用 'buffer = blanks(10)' 对其进行初始化,以确保它至少可以容纳 10 个字符(这是我认为您正在阅读的数字)。另一个不错的选择可能是只使用“fread”而不是您的自定义 C 代码(如果可能的话),因为 MATLAB Coder 支持该函数。
【讨论】:
以上是关于将 C 字符数组转换为 Matlab 字符串 [Matlab 编码器]的主要内容,如果未能解决你的问题,请参考以下文章