Advertisement
Robomatics

UDPVideoChat2

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