02-09-2017
10:14 PM
- 最終編集日:
03-24-2025
02:15 PM
、編集者:
Content Cleaner
ゲーム開発エンジン「unity」を「labview8.2」に接続する方法を探しています。プログラミングにあまり明るくなく、このページ http://www.ni.com/tutorial/10060/en/ を読んでみたのですが、いまいちイメージができません。とても抽象的な質問になりましたが、ご教示していただけると幸いです。
03-30-2017 08:40 AM
こんにちは。
LabVIEWから外部アプリケーションを制御する方法としては、既にご覧になっているページで紹介されている
1. ActiveXを使う
2. 「システム実行」関数を用いてコマンドプロンプトからコマンドを叩く
や、
3. .Net frameworkの機能を使用する
などが挙げられると思います。
制御される側がどのような仕組みで動いているかに応じて、その方法も変わります。
ちなみに、「接続する」というのはどういった意味なのでしょうか?
unityで作成したデータにアクセスしたいという意味ですか?
あるいは、LabVIEWを用いてunityプログラミングを行いたいという意味でしょうか?
上述のようにunity側がどのようなプロトコルを受け入れられるのかによっても、またmeu2315さん自体が何をしたいのかによっても方法が変わってくると思います。
04-02-2017 05:47 PM
御存知の通り、Unityは各オブジェクトに対してC#コードでプログラミングが可能です。
C#コードでUDP通信をさせておき、LabVIEWとはUDPをインタフェースに実行する方法が一つ提案できます。
実際私も行ったことがありますが、そこまで難しい処理ではありませんでした。
04-02-2017 09:52 PM
こんにちは。
回答ありがとうございます。
私がやりたいこととしては、unityのゲーム中でオブジェクトが、とあるエリア内に侵入した際に出る判定をlabviewに信号として入力、その後、波形生成でDaqmxを使い電気信号を送りたいと考えております。
現在、UDPもしくは実際のファイルの移動で何とかできないかと考えています。
このような場合、どのようにやればいいのでしょうか?
04-02-2017 10:19 PM
Unity上で判定をされるのであれば、その判定OK/Fail情報をUDPでLabVIEWに転送すれば良いと思います。
その後はLabVIEWのDAQmxのサンプルなどを参照していただき、波形生成をする方法が考えられます。
04-03-2017 09:11 PM
ご回答ありがとうございます。
私がやろうとしている方法で、いけそうなことは分りました。
因みに、私は、unity5.5の環境でやっているのですが、udpを実装する際、ネットを調べながらやっていますが、うまくいきません。
ここで質問する内容ではないと思いますが、もしよろしければYtochigi様が以前行った際のアセットを見せて頂けないでしょうか。宜しくお願い致します。
04-03-2017 09:42 PM
meu2315さん、横から失礼します。今までご自身で構築なさったプログラムなどはありますか?現在どこで躓いているなどなにか具体的な情報があればお手伝いできるかもしれませんが、、、
04-03-2017 09:59 PM
現在は、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という単語に赤い波線が出ている状況です。
私は、プログラムを書くことが専門ではないので、いろいろと勉強していきながら進めている現状なのですが、、、
ご助力を頂けると幸いです。
04-03-2017 11:17 PM
情報を頂きましてありがとうございます。
おそらくこの状況では、私のコードをお渡ししても解決はしないと思います。
"赤い 波線 C#" でgoogle検索すると、以下の資料が見つかります。
"赤い波線は、構文エラー (セミコロンがない、かっこの対応が正しくないなど) またはセマンティック エラー (int 型の変数にリテラル文字列を割り当てようとしているなど) を示します。"
とある通り、そのエラーはincludeされているファイルが足りないなどの原因で参照が不足しているために起こります。
Qiitaのサンプルは他の方が作られたものですので私は詳細わかりませんが、
clientなどの宣言文は、includeされているファイルに定義されているものと思います。
そもそもの質問ですが、今回検討されているアプリケーションでは、本当にUDPでよろしいのでしょうか?
04-03-2017 11:19 PM
こちらのコードはVisual Studioなどの編集ツールで書いていらっしゃるのでしょうか。
UnityEngineを使用するようですが、このライブラリを正しくインポートしていますか?
public class UDPClient : MonoBehaviourという宣言をしていますが、MonoBehaviourがUnityEngineに含まれるもののようです。
https://docs.unity3d.com/jp/540/ScriptReference/MonoBehaviour.html
赤い波線はVisual Studioでしたら構文エラーを検知したときに出るもので、その理由は多岐にわたりますが、今回は適切なライブラリをインポートできていないことが原因だと思います。プログラムを書くことが専門ではないとおっしゃっておられますが、LabVIEWとは違いC#はいろいろと細かな作業が必要になる言語です。ネットからコピーしたサンプルコードをそのまま貼り付けて使用できるかといえばそうではない場合もあります。まずはC#の基礎からお勉強なさってはいかがでしょうか。