AIR と連携するために VB.NET で UDPSocket
Windows での デジタル入出力(DIO)デバイスを使用する展示システムの、DIOドライバの制御 API が VB.NET だったため、こいつの制御アプリと Adobe AIR 製のフロントアプリを連携させる必要が発生しました。(今回 DIO 制御が必要だったのは下の写真のスイッチ)
ちなみに DIO とは、LED から モーターまで、接点を使用して入出力制御を行うインターフェイスで、これによって PC からの外部機器の入出力制御が可能になります。
今回の上記2つのアプリ間連携には UDP Socket(DatagramSocket)を使用したため、ググりまくってなんとか動作するようになった VB.NET 側の UDP Socket のコードを忘れないように自分用メモ。
'受信側 Dim receivePort As Integer = "受信ポート番号" Dim receivedUDP As New System.Net.Sockets.UdpClient(receivePort) Dim RemoteIpEndPoint As New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0) Dim str As String = "" '受信待ち受け用スレッド Dim threads1 As New System.Threading.Thread(AddressOf receive) Dim LoopFlag As Boolean = True 'スレッド開始 threads1.Start() '送信側 Dim sendAdress As String = "送信先アドレス" Dim sendPort As Integer = "送信ポート番号" Dim sendUDP As New System.Net.Sockets.UdpClient(sendPort) 'UDP 受信 Private Sub received() Do Try Dim receiveBytes As [Byte]() = receivedUDP.Receive(RemoteIpEndPoint) '受信するまでここで停止 Dim returnData As String = System.Text.Encoding.Default.GetString(receiveBytes) str = returnData '受信内容を確認 Console.WriteLine(str) Catch err As Exception Console.WriteLine(err.ToString()) End Try Loop While (LoopFlag) End Sub 'UDP 送信 Private Sub SendUDP(msg As String) Try sendBytes = enc.GetBytes(msg) sendUDP.Send(sendBytes, sendBytes.Length, sendAdress, sendPort) Catch ex As Exception Console.WriteLine(Err.ToString()) End Try End Sub
これで(上記 UDP を実装した VB.NET アプリ経由で)Adobe AIR アプリから DIO を制御できるようになりました。
Adobe AIR の DatagramSocket につきましては、こちらの記事で。