我正在开发一个项目,需要在Matlab的Simulink和Labview之间在网络系统(目前运行Matlab 2010b和Labview 7.0)上实时传递值。我一直在尝试使用任一程序中的UDP发送/接收功能来执行此操作,但Labview似乎只使用UDP / TCP-IP处理字符串。 Simulink只从UDP端口读取int / double值。
有没有办法让我在读入操作后转换这些值,或以其他方式绕过类型限制?我们真的很感激任何建议(或在两个计划之间传递价值的替代方法)。不幸的是,由于硬件限制,我坚持使用这些程序版本。
谢谢!
答案 0 :(得分:5)
LV中的TCP / UDP函数使用字符串,因为它是表示字节数组的便捷方式,这是TCP流基本上是什么。您可以获取数据并对其进行转换以使其可用。假设Simulink以相同的方式对值进行编码(int的简单二进制,浮点数的IEEE754表示),那么您可以简单地使用类型转换或展平来/字符串函数来取消数据。您可能需要更改字节的顺序以考虑endianess。
您可以查看LV中的TCP示例和有关扁平化数据的文档,以了解有关其工作原理的更多信息。
作为一个侧面点,UDP是有损的,主要适用于需要快速广播或获取数据的情况,例如流视频时。如果数据很重要,则应使用TCP。