アプリ版:「スタンプのみでお礼する」機能のリリースについて

パイプを使用しC#から送信したデータをMATLABで受信することは可能でしょうか?
 
もし可能であるならばどのようにすればよいのでしょうか。
以下のプログラムで行っているのですがMATLAB側で受信ができず -1がかえってきてしまいます
C言語で受信する場合はうまくいくのですがMATLABを使用するとファイルのopneができません。

以下C#・MATLABプログラム

C# <プログラム> 送信側

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Pipes;
using System.IO;

namespace PipeTest
{
class Program
{
static void Main(string[] args){

Console.WriteLine("パイプ接続待ち...");
NamedPipeServerStream pipe = new NamedPipeServerStream("test");
pipe.WaitForConnection();

Console.WriteLine("送信(キーを押すと終了)");
StreamWriter stw = new StreamWriter(pipe);
stw.AutoFlush = true;

while(Console.KeyAvailable == false)
{
stw.WriteLine("This is a test");
System.Threading.Thread.Sleep(500);
}

Console.WriteLine("終了");
pipe.Close();
}
}
}


MATLAB <プログラム> 受信側

fp = fopen('C:\\\\.\\pipe\\test');

A 回答 (3件)

> >>フラッシュをオートでなく明示的に行う


> こちらの文がわからないので、詳しく教えて頂けますか?
これはPythonで遭遇した事例で、C#ではどうか分かりませんが、自動フラッシュだとコンソールにはすぐ出力されるのにパイプやファイルにはなかなか出力されないで困ったことがあります。
# 実行経過のログ出力をリダイレクトすると全部の処理が終わるまでログが出てこない

これが原因なら一行の出力ごとに明示的にフラッシュを挿入すれば確実に出力されて問題なくなります。
Cプログラムでは問題なく受信できているならこれも外れの可能性が高いですけど。
    • good
    • 0

MATLABがパイプに対応しているかどうかしらないけどパイプの標準名は


'C:\\\\.\\pipe\\test'
ではないと思う。パイプの識別名は
\\.\pipe\test
の形式のはずなので、'\\\\.\\pipe\\test'かな。
あとフラッシュをオートでなく明示的に行うとどうなるか確認して。

ファイルで上手くいくならその方が楽だと思うけど。

この回答への補足

'C:\\\\.\\pipe\\test'の部分なのですが'\\\\.\\pipe\\test'のようにやってみたのですが結果はかわりませんでした。
 
>>フラッシュをオートでなく明示的に行う
こちらの文がわからないので、詳しく教えて頂けますか?
 
よろしくお願いします

補足日時:2010/12/07 12:06
    • good
    • 0

直接の回答ではありませんが,


.NET Framework とのインターフェイスが用意されているようですから,
それを使うのが真っ当なやり方ではないでしょうか。

http://www.mathworks.cn/help/techdoc/matlab_exte …

# 一旦ファイルに落とすほうが簡単そうな気はしますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!