NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

unityの情報をlabviewに入力する方法

ゲーム開発エンジン「unity」を「labview8.2」に接続する方法を探しています。プログラミングにあまり明るくなく、このページ http://www.ni.com/tutorial/10060/en/ を読んでみたのですが、いまいちイメージができません。とても抽象的な質問になりましたが、ご教示していただけると幸いです。

0 件の賞賛
メッセージ1/12
5,954件の閲覧回数

こんにちは。

 

LabVIEWから外部アプリケーションを制御する方法としては、既にご覧になっているページで紹介されている

1. ActiveXを使う

2. 「システム実行」関数を用いてコマンドプロンプトからコマンドを叩く

や、

3. .Net frameworkの機能を使用する

 

などが挙げられると思います。

 

制御される側がどのような仕組みで動いているかに応じて、その方法も変わります。

 

ちなみに、「接続する」というのはどういった意味なのでしょうか?

unityで作成したデータにアクセスしたいという意味ですか?

 

あるいは、LabVIEWを用いてunityプログラミングを行いたいという意味でしょうか?

 

上述のようにunity側がどのようなプロトコルを受け入れられるのかによっても、またmeu2315さん自体が何をしたいのかによっても方法が変わってくると思います。

0 件の賞賛
メッセージ2/12
5,792件の閲覧回数

御存知の通り、Unityは各オブジェクトに対してC#コードでプログラミングが可能です。

C#コードでUDP通信をさせておき、LabVIEWとはUDPをインタフェースに実行する方法が一つ提案できます。

実際私も行ったことがありますが、そこまで難しい処理ではありませんでした。

 

UnityでUDPを受信してみる - Qiita

0 件の賞賛
メッセージ3/12
5,766件の閲覧回数

こんにちは。

 

回答ありがとうございます。

私がやりたいこととしては、unityのゲーム中でオブジェクトが、とあるエリア内に侵入した際に出る判定をlabviewに信号として入力、その後、波形生成でDaqmxを使い電気信号を送りたいと考えております。

 

現在、UDPもしくは実際のファイルの移動で何とかできないかと考えています。

このような場合、どのようにやればいいのでしょうか?

 

0 件の賞賛
メッセージ4/12
5,754件の閲覧回数

Unity上で判定をされるのであれば、その判定OK/Fail情報をUDPでLabVIEWに転送すれば良いと思います。

その後はLabVIEWのDAQmxのサンプルなどを参照していただき、波形生成をする方法が考えられます。

0 件の賞賛
メッセージ5/12
5,747件の閲覧回数

ご回答ありがとうございます。

私がやろうとしている方法で、いけそうなことは分りました。

 

因みに、私は、unity5.5の環境でやっているのですが、udpを実装する際、ネットを調べながらやっていますが、うまくいきません。

ここで質問する内容ではないと思いますが、もしよろしければYtochigi様が以前行った際のアセットを見せて頂けないでしょうか。宜しくお願い致します。

0 件の賞賛
メッセージ6/12
5,730件の閲覧回数

meu2315さん、横から失礼します。今までご自身で構築なさったプログラムなどはありますか?現在どこで躓いているなどなにか具体的な情報があればお手伝いできるかもしれませんが、、、

メッセージ7/12
5,716件の閲覧回数

現在は、http://qiita.com/Napier_271828_/items/0d489c7d833047241079 のサイトをメインで参考にやっています。

 

using UnityEngine;
using System.Net.Sockets;
using System.Text;

public class UDPClient : MonoBehaviour
{
// broadcast address
public string host = "133.66.124.54";
public int port = 3333;
private UdpClient client;

void Start()
{
client = new UdpClient();
client.Connect(host,port);
}

void Update()
{
}

void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 100, 40), "Send"))
{
byte[] dgram = Encoding.UTF8.GetBytes("hello!");
client.Send(dgram, dgram.Length);
}
}

void OnApplicationQuit()
{
client.Close();
}
}

 

この時に、client,host,portという単語に赤い波線が出ている状況です。

 私は、プログラムを書くことが専門ではないので、いろいろと勉強していきながら進めている現状なのですが、、、

ご助力を頂けると幸いです。

0 件の賞賛
メッセージ8/12
5,711件の閲覧回数

情報を頂きましてありがとうございます。

おそらくこの状況では、私のコードをお渡ししても解決はしないと思います。

 

"赤い 波線 C#" でgoogle検索すると、以下の資料が見つかります。

コードの編集 (Visual C#) 

"赤い波線は、構文エラー (セミコロンがない、かっこの対応が正しくないなど) またはセマンティック エラー (int 型の変数にリテラル文字列を割り当てようとしているなど) を示します。"

とある通り、そのエラーはincludeされているファイルが足りないなどの原因で参照が不足しているために起こります。

 

Qiitaのサンプルは他の方が作られたものですので私は詳細わかりませんが、

clientなどの宣言文は、includeされているファイルに定義されているものと思います。

 

そもそもの質問ですが、今回検討されているアプリケーションでは、本当にUDPでよろしいのでしょうか?

 

0 件の賞賛
メッセージ9/12
5,698件の閲覧回数

こちらのコードはVisual Studioなどの編集ツールで書いていらっしゃるのでしょうか。

UnityEngineを使用するようですが、このライブラリを正しくインポートしていますか?

public class UDPClient : MonoBehaviourという宣言をしていますが、MonoBehaviourがUnityEngineに含まれるもののようです。

https://docs.unity3d.com/jp/540/ScriptReference/MonoBehaviour.html

 

赤い波線はVisual Studioでしたら構文エラーを検知したときに出るもので、その理由は多岐にわたりますが、今回は適切なライブラリをインポートできていないことが原因だと思います。プログラムを書くことが専門ではないとおっしゃっておられますが、LabVIEWとは違いC#はいろいろと細かな作業が必要になる言語です。ネットからコピーしたサンプルコードをそのまま貼り付けて使用できるかといえばそうではない場合もあります。まずはC#の基礎からお勉強なさってはいかがでしょうか。

0 件の賞賛
メッセージ10/12
5,697件の閲覧回数