umehoshiアプリとは
これをインストールしたPCやスマフォを「UMEHOSHI ITA」とUSBケーブルで接続し、
「umehoshiEdit」で作成したプログラムを転送して「UMEHOSHI ITA」をコントロールする時に使います。
この資料は暫定的で内部の技術的メモです。(ソースは公開していないので、一般には意味がない資料です。)
この作品は、一方のServerSceneの残したまま別のClientSceneをロードする特殊な作りです。
LoadSceneMode.Additive のLoadSceneParametersを指定する使い方です。(Scene間の情報共有のため)
TCPサーバーとし使う場合は、ServerSceneだけ存在し、メニューからクライアントし切り替えて使う場合は、ClientSceneが重なるように
配置されます。
ServerSceneでは、「UMEHOSHI ITA」にコマンドを送信するボタンを任意数配置できます。
(USBで「UMEHOSHI ITA」していれば、このボタン操作で、「UMEHOSHI ITA」に命令を送り操作できます。)
送信情報はFileDatas.csで管理され、この情報とボタンをを管理するのがMy_Button_CMDプレファブです。
別途のクライアントとして起動したUmehoshiアプリとTCP接続状態において、受信した命令を「UMEHOSHI ITA」に命令を送り操作できます。
ソースファイル | 定義概要 | アタッチなどの情報 |
---|---|---|
Main.cs | MainEnum列挙クラスと staticメソッドだけのMainクラスを定義。 "config.txt"のファイルに情報を保存し、起動時に取り出す目的 | 無し |
FileDatas.cs | FileDataクラス定義:「UMEHOSHI ITA」を操作する時に使う1つのファイルを管理し、 この集合を管理するstaticのDictionaryを持つ。 | 無し |
ServerTcp.cs | ServerTcpクラス定義。これが作品のメイン的なクラス | Canvasにアタッチ |
My_USB.cs | UubStae列挙クラスとMy_USBクラス USBの接続と送受信に対する | Canvasにアタッチ |
Panel_SelectFile.cs | SelectModeの操作用列挙クラスと
Panel_SelectFileクラス定義 [UMEHOSHI ITA]に送るボタンの編集や実行のモード指定 (Panel_SelectFileは内部に、Dropdown_op,ToggleGroup,ScrollWiew_FilesのGameObjectを持つ) |
Panel_SelectFileにアタッチ |
ScrollView_Files.cs | ScrollView_Filesクラスの定義
ボタンのScrollViewで[My_Button_CMD]のリストなどを管理 所定のディレクトリ内の全てコマンド用ファイル情報を取り込んで、FileData.dicに記憶して、"My_Button_CMD"などの必要なプレファブを用意するSetFilesメソッドが定義されます。 |
ScrollView_Filesにアタッチ |
My_Button_CMD.cs | My_Button_CMDプレファブ内のBUttonにアタッチ用に定義しておます。ここで「UMEHOSHI ITA」操作用ボタンの
編集用に移動処理などのメソッドがある。 また、FileDataオブジェクトの相互参照ができる。 (UMEHOSHI ITAへの送信命令のクリックイベントPointerUpメソッドを持つ。) プレファブ内のボタンは、RectTransformの設定で画面の下からの座標にしている。 |
My_Button_CMDのプレファブにアタッチ |
ClientTcp.cs | ServerSceneを残したままロードして
接続相手側のにServerSceneのServer.csと通信する機能を定義しています。 また、指定Webページ内にある[UMEHOSHI ITA]用のコード(id="UMH〜")を取り込む機能の GetHtmlData()関数を定義している。 で webページからのボタン情報取得してボタンを生成する。 |
ClientSceneのCanvas_Cにアタッチ |
Comm.cs | 通信状態を色で示す場合のMyColorクラス、 通信ストリーム制御用のstaticメソッドを持つStreamRWクラスを定義 | ClientTcp.cs、ServerTcpで利用 |
QueueBuffer.cs | 連続したメッセージ受信スレッドで蓄えて、Updeteで取り出せる。(UMEHOSHI ITAの受信表示で利用) | ClientTcp.csで利用 |
MyWebCamera.cs | カメラ表示制御用 RawImageとWebCamTextureを制御 | EventSystem にアタッチ |
My_Sound.cs | サウンド管理(My_SoundとSoundBuffクラスを定義) | Canvasにアタッチ |
● [ServerScene]から起動する。
このCanvasにアタッチされる「ServerTcpクラス」のStartメソッドと、「USBクラス」のStartメソッドが最初の起動である。
このどちらかのStart内で実行される「Main.Restore();」で前回実行時の情報取得が取得され、ベンダーIDやIPアドレスなどが初期化される。
● [ServerScene]の「Panel_SelectFile」のパネルにアタッチしている「Panel_SelectFile.cs」の
Start()メソッド内で、"ScrollView_Files"のGameObjectを「this.scrollView_Files_Obj」に取得ししています。
そして、「this.scrollView_Files_Obj.SetFiles(Panel_SelectFile.change_now_value)メソッド」で
所定のディレクトリ(Windowsであれば、「C:/Users/yuu.PC7/AppData/LocalLow/SHIEN_LAB/umehoshi/CMDFILES1」)内の
「ueme_dir.txt」(可視状態の)の情報を読み取り、ボタンの情報を読み込んで、初期表示をしています。
また、このディレクトリ内で"*.umh"のファイルがサーチされFileDataクラスのdicに管理される。
この「this.scrollView_Files_Obj.SetFilesメソッド」の呼び出しは、Panl_SelectFiles.cs内のドロップダウンリスト変更でも行われ、
その中でファイルをサーチして、FileDataクラスのdicの更新とボタン配置の更新を行う。
上記で示した通りに「this.scrollView_Files_Obj.SetFilesメソッド」で、
所定のディレクトリ内の「ueme_dir.txt」には、可視状態のボタンのファイル「〜.umh」ファイル名が並んでいます。
このファイルの各行の繰り返しでファイル名からScrollView_Files.setItemメソッドで生成して、fileDataに記憶します。
また、"My_Button_CMD"プレファブを生成して、fileData.SetCmdButton(myButtonCmd);で表示や位置情報を後進しています。
ScrollView_Files.setItemメソッド内で、FileData.getFileDataWithCreatingメソッドで未生成の場合にFileDataを生成してfileDataに記憶ます。
また、setItemメソッド内では、fileData.loadメソッドで、「〜.umh」をロードします。