Advertisement
Robomatics

UDPVideoChat

Jan 6th, 2013
1,918
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 5.58 KB | None | 0 0
  1. Imports System.Net.Sockets
  2. Imports System.Threading
  3. Imports TouchlessLib
  4.  
  5. Public Class Form1
  6.  
  7.     'UDP Defines
  8.     Dim subscriber As New UdpClient(2013)
  9.     Dim publisher As New UdpClient()
  10.     Dim mycomputername As String = Environment.MachineName
  11.     Dim mycomputerIP() As System.Net.IPAddress = System.Net.Dns.GetHostAddresses(mycomputername)
  12.  
  13.     'Webcam Defines
  14.     Dim Touchless As New TouchlessLib.TouchlessMgr
  15.     Dim Camera1 As TouchlessLib.Camera = Touchless.Cameras.ElementAt(0)
  16.     Dim picsize As Size = New Size(160, 120)
  17.  
  18.     Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  19.  
  20.         publisher.Client.Blocking = False
  21.         subscriber.Client.ReceiveTimeout = 100
  22.         subscriber.Client.Blocking = False
  23.         TB_Host.Text = Environment.MachineName
  24.  
  25.         Label3.Text = "My Name: " & Environment.MachineName
  26.  
  27.         Touchless.CurrentCamera = Camera1
  28.         Touchless.CurrentCamera.CaptureWidth = picsize.Width
  29.         Touchless.CurrentCamera.CaptureHeight = picsize.Height
  30.  
  31.     End Sub
  32.  
  33.     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  34.  
  35.         'Send
  36.         Try
  37.  
  38.             Dim bitmapz As Bitmap = New Bitmap(picsize.Width, picsize.Height)
  39.             bitmapz = Touchless.CurrentCamera.GetCurrentImage
  40.             PictureBox1.Image = bitmapz
  41.  
  42.             Dim sendbytes() As Byte
  43.             bytesfromimage(sendbytes, bitmapz)
  44.  
  45.             publisher.Send(sendbytes, sendbytes.Length)
  46.         Catch ex As Exception
  47.         End Try
  48.  
  49.         'Retrieve
  50.         Try
  51.  
  52.             Dim ep As System.Net.IPEndPoint = New System.Net.IPEndPoint(System.Net.IPAddress.Any, 0)
  53.             Dim rcvbytes() As Byte = subscriber.Receive(ep)
  54.             Dim bitmapz As Bitmap = New Bitmap(picsize.Width, picsize.Height)
  55.             imagefrombytes(rcvbytes, bitmapz)
  56.             PictureBox2.Image = bitmapz
  57.  
  58.         Catch ex As Exception
  59.         End Try
  60.  
  61.     End Sub
  62.  
  63.     Private Sub imagefrombytes(ByRef bytez() As Byte, ByRef piccolor As Bitmap)
  64.         Dim rect As New Rectangle(0, 0, piccolor.Width, piccolor.Height)
  65.         Dim bmpData As System.Drawing.Imaging.BitmapData = piccolor.LockBits(rect, _
  66.             Drawing.Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppRgb)
  67.         Dim ptr As IntPtr = bmpData.Scan0
  68.         Dim bytes As Integer = bmpData.Stride * piccolor.Height
  69.         Dim rgbValues(bytes - 1) As Byte
  70.         System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)
  71.  
  72.         Dim secondcounter As Integer
  73.         Dim tempred As Integer
  74.         Dim tempblue As Integer
  75.         Dim tempgreen As Integer
  76.         Dim tempalpha As Integer
  77.         secondcounter = 0
  78.  
  79.         While secondcounter < rgbValues.Length
  80.             tempblue = rgbValues(secondcounter)
  81.             tempgreen = rgbValues(secondcounter + 1)
  82.             tempred = rgbValues(secondcounter + 2)
  83.             tempalpha = rgbValues(secondcounter + 3)
  84.             tempalpha = 255
  85.  
  86.             tempred = bytez(((secondcounter * 0.25) * 3) + 0)
  87.             tempgreen = bytez(((secondcounter * 0.25) * 3) + 1)
  88.             tempblue = bytez(((secondcounter * 0.25) * 3) + 2)
  89.  
  90.             rgbValues(secondcounter) = tempblue
  91.             rgbValues(secondcounter + 1) = tempgreen
  92.             rgbValues(secondcounter + 2) = tempred
  93.             rgbValues(secondcounter + 3) = tempalpha
  94.  
  95.             secondcounter = secondcounter + 4
  96.         End While
  97.  
  98.  
  99.         System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)
  100.  
  101.         piccolor.UnlockBits(bmpData)
  102.  
  103.     End Sub
  104.  
  105.     Private Sub bytesfromimage(ByRef bytez() As Byte, ByRef piccolor As Bitmap)
  106.         Dim rect As New Rectangle(0, 0, piccolor.Width, piccolor.Height)
  107.         Dim bmpData As System.Drawing.Imaging.BitmapData = piccolor.LockBits(rect, _
  108.             Drawing.Imaging.ImageLockMode.ReadWrite, Imaging.PixelFormat.Format32bppRgb)
  109.         Dim ptr As IntPtr = bmpData.Scan0
  110.         Dim bytes As Integer = bmpData.Stride * piccolor.Height
  111.         Dim rgbValues(bytes - 1) As Byte
  112.         System.Runtime.InteropServices.Marshal.Copy(ptr, rgbValues, 0, bytes)
  113.  
  114.         Dim secondcounter As Integer
  115.         Dim tempred As Integer
  116.         Dim tempblue As Integer
  117.         Dim tempgreen As Integer
  118.         Dim tempalpha As Integer
  119.         secondcounter = 0
  120.         Dim bytelist As List(Of Byte) = New List(Of Byte)
  121.  
  122.         While secondcounter < rgbValues.Length
  123.             tempblue = rgbValues(secondcounter)
  124.             tempgreen = rgbValues(secondcounter + 1)
  125.             tempred = rgbValues(secondcounter + 2)
  126.             tempalpha = rgbValues(secondcounter + 3)
  127.             tempalpha = 255
  128.  
  129.             bytelist.Add(tempred)
  130.             bytelist.Add(tempgreen)
  131.             bytelist.Add(tempblue)
  132.  
  133.             rgbValues(secondcounter) = tempblue
  134.             rgbValues(secondcounter + 1) = tempgreen
  135.             rgbValues(secondcounter + 2) = tempred
  136.             rgbValues(secondcounter + 3) = tempalpha
  137.  
  138.             secondcounter = secondcounter + 4
  139.         End While
  140.  
  141.  
  142.         System.Runtime.InteropServices.Marshal.Copy(rgbValues, 0, ptr, bytes)
  143.  
  144.         piccolor.UnlockBits(bmpData)
  145.  
  146.         Dim bytearray(bytelist.Count - 1) As Byte
  147.         For i = 0 To bytelist.Count - 1
  148.             bytearray(i) = bytelist(i)
  149.         Next
  150.         bytez = bytearray
  151.  
  152.     End Sub
  153.  
  154.     'Update Button
  155.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  156.         publisher.Connect(TB_Host.Text, 2013)
  157.     End Sub
  158. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement