AIR と連携するために VB.NET で UDPSocket


Windows での デジタル入出力(DIO)デバイスを使用する展示システムの、DIOドライバの制御 API が VB.NET だったため、こいつの制御アプリと Adobe AIR 製のフロントアプリを連携させる必要が発生しました。(今回 DIO 制御が必要だったのは下の写真のスイッチ)

switch

ちなみに 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 につきましては、こちらの記事で。