Unity,Arduino,oculus questを用いてシリアル通信をしたいと考えています。
現状シリアル通信のopen関数が起動せずに困っています。
こちらのサイトを参考にしています。
https://usupra.wordpress.com/2018/07/02/unity%E3%81%A8arduino%E3%81%A7%E7%9B%B8%E4%BA%92%E9%80%9A%E4%BF%A1%E3%82%92%E3%81%99%E3%82%8B%E3%80%82/
試したこと
新規プロジェクトを作成しファイルをコピペして実行(成功)
新規シーンを作成しファイルをコピペして実行(oculusでデバックしたところ同じくopenで動かなくなってしまいました。)
デバック用にtextを表示して実行したところ、
Col.linejudge = "serialport = " + serialPort_.PortName;
までは表示されたがopen関数が動かずその先が表示されなかった。
よろしくおねがいします。
追記
いじっていたらエラーが変わりました。
今まで入っていたOpen()のtryに入らなくなり、linejudgeにtryに捕まったと表示されるようになりました。
e.messageの内容を表示したところno such file or directryと表示されました。
特にファイルを弄ったりした記憶はなく何のことなのかわかりません。
よろしくおねがいします。
SerialHandler
1using UnityEngine; 2using System.Collections; 3using System.IO.Ports; 4using System.Threading; 5 6public class SerialHandler : MonoBehaviour 7{ 8 public delegate void SerialDataReceivedEventHandler(string message); 9 public event SerialDataReceivedEventHandler OnDataReceived; 10 11 public string portName = "COM8"; //変更する必要あり 12 public int baudRate = 38400; // ボーレート(Arduinoに記述したものに合わせる) 13 14 private SerialPort serialPort_; 15 private Thread thread_; 16 private bool isRunning_ = false; 17 18 private string message_; 19 private bool isNewMessageReceived_ = false; 20 21 void Awake() 22 { 23 Open(); 24 } 25 26 void Update() 27 { 28 if (isNewMessageReceived_) 29 { 30 OnDataReceived(message_); 31 } 32 isNewMessageReceived_ = false; 33 } 34 35 void OnDestroy() 36 { 37 Close(); 38 } 39 40 private void Open() 41 { 42 Col.linejudge = "open入った"; 43 try 44 { 45 serialPort_ = new SerialPort(portName, baudRate); 46 Col.linejudge = "serialport = " + serialPort_.PortName; 47 serialPort_.Open(); 48 Col.linejudge = serialPort_.IsOpen.ToString(); 49 } 50 catch(System.Exception e) 51 { 52 Col.linejudge = "tryに捕まった"; 53 } 54 55 isRunning_ = true; 56 57 thread_ = new Thread(Read); 58 thread_.Start(); 59 } 60 61 private void Close() 62 { 63 isNewMessageReceived_ = false; 64 isRunning_ = false; 65 66 if (thread_ != null && thread_.IsAlive) 67 { 68 thread_.Join(); 69 } 70 71 if (serialPort_ != null && serialPort_.IsOpen) 72 { 73 serialPort_.Close(); 74 serialPort_.Dispose(); 75 } 76 } 77 78 private void Read() 79 { 80 while (isRunning_ && serialPort_ != null && serialPort_.IsOpen) 81 { 82 try 83 { 84 message_ = serialPort_.ReadLine(); 85 isNewMessageReceived_ = true; 86 } 87 catch (System.Exception e) 88 { 89 Debug.LogWarning(e.Message); 90 } 91 } 92 } 93 94 public void Write(string message) 95 { 96 try 97 { 98 serialPort_.Write(message); 99 } 100 catch (System.Exception e) 101 { 102 Debug.LogWarning(e.Message); 103 } 104 } 105}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/09 09:41
2019/10/09 09:44
2019/10/09 10:00 編集
2019/10/09 10:02
2019/10/09 10:12
2019/10/09 10:16
2019/10/09 10:19
2019/10/09 10:22
2019/10/09 10:25
2019/10/09 10:27
2019/10/09 10:34
2019/10/09 10:43 編集
2019/10/09 10:58
2019/10/09 11:01
2019/10/09 11:06
2019/10/09 11:08
2019/10/09 11:16
2019/10/09 11:42
2019/10/09 11:48
2019/10/09 12:05
2019/10/09 12:19