c++ - Matlab 和 C++ 之间的 .Net 通信
问题描述
我有两个不同的进程,一个在 Matlab 中,一个在 Windows 机器下的 C++ 中。实际上,我正在努力开发它们之间的通信,现在,我正在尝试使用 .net API。
事实上,C++ 有一个主线程,它在输入中获取一组数据,并根据输入(在其他线程中)做一些事情并等待另一个输入。Matlab 的主要任务是自动提供不同的输入,然后返回输出。
这里是简化版:
C++
#include "main.h"
#include <string>
#include <iostream>
std::string m = "";
int main(int argc, char* argv[]) {
while (true)
{
std::cin >> m;
std::cout << "command: " << m << "\n";
}
}
产生“myecho.exe”
MATLAB
echoTest = 'myecho.exe';
proc = System.Diagnostics.Process();
proc.StartInfo.FileName = echoTest;
proc.StartInfo.RedirectStandardInput = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = false;
proc.Start();
proc.StandardInput.WriteLine('test1')
proc.StandardInput.Flush
while proc.StandardOutput.Peek ~= -1
disp(proc.StandardOutput.ReadLine);
end
pause(1)
proc.StandardInput.WriteLine('test2')
proc.StandardInput.Flush
while proc.StandardOutput.Peek ~= -1
disp(proc.StandardOutput.ReadLine);
end
pause(1)
proc.StandardInput.WriteLine('test3')
proc.StandardInput.Flush
while proc.StandardOutput.Peek ~= -1
disp(proc.StandardOutput.ReadLine);
end
不幸的是,Matlab 只能发送第一个输入并收集第一个输出。但是,第二个输入/输出不会产生任何结果(peek = -1)。因此,Matlab 的结果是:
>>command: test1
>>
您对这种奇怪的行为有任何想法吗?
解决方案
推荐阅读
- android - 更新到 Android Studio 4.1 时出现 java.lang.AssertionError
- javascript - 使用jquery选择复选框后表单按钮不起作用
- python - 在循环中合并两个数据帧但 TypeError: unhashable type: 'list' after first loop
- php - 当用户不验证 recaptcha 时无法生成错误响应
- java - 如何确保图像包含在我的 .jar 包中?
- c# - '无法加载文件或程序集'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一
- python - Stanford Stanza -- 依赖解析模块 -- 多于一个句子的文档的输出
- javascript - 我使用firebase以角度创建应用程序,如何让每个用户拥有自己的任务表
- .net - wpf内部的异步函数调用不起作用
- html - 有没有办法设置表单属性输入标签来让谷歌高级搜索在没有 JS 的情况下工作