Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,038

HOME > .NET Framework > Forum > ทำยังไง winapp รับข้อมูล video stream ผ่านทางTCP มาโชว์ ใน panel ครับ ช่วยหน่อยครับ


 

[.NET] ทำยังไง winapp รับข้อมูล video stream ผ่านทางTCP มาโชว์ ใน panel ครับ ช่วยหน่อยครับ

 
Topic : 131024



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook


โปรเจคคือ ใช้เครื่อง raspberry pi3 ต่อ camera V2 ปล่อย video ทาง TCP เหมือน กล้องวงจรปิด
สิ่งที่ต้องการ คือ รับ ภาพจาก TCP(IP,port) มาโชว์ ที่ panel ครับ


โค้ดครับ ที่ยังติดอยู่

Code (PHP)
001.Imports System.Net.Sockets
002.Imports System.Threading.Thread
003.Imports System.Text
004.Imports System.IO
005. 
006.Public Class Form1
007.    Dim measur(63) As Integer
008.    Dim IPCamera As New TcpClient
009.    Dim byteData As Byte()
010.    Dim stx As Byte = 255
011.    Dim ender As Byte = 217
012.    Dim starter As Byte = 216
013.    Dim byteval1 As Byte()
014.    Dim ms As System.IO.MemoryStream
015.    Dim bmp As Bitmap
016.    Dim gh As Graphics
017.    Dim chk As Integer
018. 
019. 
020. 
021.    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
022.        'On Error GoTo lExit
023.        Timer1.Stop()
024. 
025.        If IPCamera.Connected Then
026.            If IPCamera.Available > 0 Then
027.                Sleep(100)
028.                lbltext1.Text = IPCamera.Available
029.                ReDim byteData(IPCamera.Available)
030.                IPCamera.GetStream.Read(byteData, 0, byteData.Length)
031.                'ms = New IO.MemoryStream(byteData)
032.                Dim endIndex As Integer = 0
033.                Dim enddata As Boolean = False
034.                Dim startIndex As Integer = 0
035.                Try
036. 
037.                    '--------------------------------------
038.                    While (Not enddata)
039.                        endIndex = Array.IndexOf(byteData, stx, endIndex)
040.                        If byteData(endIndex + 1) = starter Then
041.                            startIndex = endIndex
042.                        End If
043.                        If byteData(endIndex + 1) = ender Then
044.                            ReDim byteval1(endIndex + 1)
045.                            Array.Copy(byteData, startIndex, byteval1, startIndex, endIndex + 1)
046.                            ms = New IO.MemoryStream(byteval1)
047.                            Panel1.BackgroundImage = Image.FromStream(ms)
048.                            If Panel2.BackColor = Color.Red Then
049.                                Panel2.BackColor = Color.Pink
050.                            Else
051.                                Panel2.BackColor = Color.Red
052.                            End If
053.                            Exit While
054.                        End If
055.                        enddata = (endIndex = -1)
056.                        endIndex += 1
057. 
058.                    End While
059. 
060. 
061.                Catch ex As Exception
062. 
063.                    lbltext3.Text = byteData.Length
064. 
065.                End Try
066.            End If
067.        End If
068.        'lExit:
069.        Timer1.Start()
070.    End Sub
071. 
072.    Private Sub btConnect_Click(sender As Object, e As EventArgs) Handles btConnect.Click
073.        Dim ip As String = TextBox1.Text
074.        If TextBox1.Text = "" Then ip = "127.0.0.1"
075.        Try
076.            If IPCamera.Connected Then
077.                IPCamera.Close()
078.                Label69.Text = "Disconnect"
079.            Else
080.                IPCamera = New TcpClient
081.                IPCamera.Connect(ip, 5000)
082.                Sleep(100)
083.                If IPCamera.Connected Then
084.                    Label69.Text = "Connected"
085.                    Timer1.Start()
086.                Else
087.                    Label69.Text = "Disconnect"
088.                End If
089.            End If
090.        Catch ex As Exception
091.            MessageBox.Show("Error target IP: " + ip, "Error")
092.        End Try
093.    End Sub
094.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
095.        For i = 0 To measur.Length - 1
096.            Dim lbl As Label = Me.Controls.Find("Label" & (i + 1), True).FirstOrDefault
097. 
098.            lbl.BackColor = Color.FromArgb(50, Color.LightGray)
099.            lbl.Text = ""
100.        Next
101.        'Label68.BackColor = Color.FromArgb(50, Color.LightGray)
102.    End Sub
103.End Class




Tag : .NET, Win (Windows App), VB.NET, C#, VS 2015 (.NET 4.x), VS 2017 (.NET 4.x)



ประวัติการแก้ไข
2018-05-11 10:37:22
2018-05-14 09:28:27
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2018-05-11 10:31:22 By : 2127832830566218 View : 1069 Reply : 1
 

 

No. 1



โพสกระทู้ ( 55 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

วิธี รับข้อมูล video แบบ steamming real time นะครับ นำมาแชร์ วิธีทำ
รับเป็นแบบ MJPEG นะครับ โค้ดนี้ฝั่ง client นะครับ

Code (VB.NET)
001.Imports System.Net.Sockets
002.Public Class Form1
003.    Dim TcpClient As TcpClient
004.    'Dim byteData As Byte()
005.    Dim iStart As Integer, iEnd As Integer
006.    Dim indexByte As Integer, iLen As Integer
007.    Dim fps As Integer
008.    Dim ms As New System.IO.MemoryStream
009.    Dim buffer1() As Byte, buffer2() As Byte
010.    Dim NS As NetworkStream
011.    Dim iScan As Integer
012.    'Dim bEnd As Boolean, bStart As Boolean
013.    Const picMarker = &HFF
014.    Const picStart = &HD8
015.    Const picEnd = &HD9
016. 
017.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
018.        TcpClient = New TcpClient
019.        TcpClient.Connect("192.168.1.29", 5000)
020.        TcpClient.ReceiveBufferSize = 100000
021.        indexByte = 0
022.        ReDim buffer1(TcpClient.ReceiveBufferSize - 1)
023.        ReDim buffer2(TcpClient.ReceiveBufferSize - 1)
024.        If TcpClient.Connected Then
025.            NS = TcpClient.GetStream
026.            Timer1.Start()
027.        End If
028.    End Sub
029. 
030.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
031.        On Error GoTo lExit
032.        Timer1.Stop()
033.        If TcpClient.Connected Then
034.            If TcpClient.Available > 0 Then
035.                iScan += 1
036.                iLen = TcpClient.Available
037.                If iLen > (buffer1.Length - indexByte) Then
038.                    Array.Clear(buffer1, 0, buffer1.Length)
039.                    indexByte = 0
040.                End If
041. 
042.                NS.Read(buffer1, indexByte, iLen)
043.                indexByte += iLen
044.                Label1.Text = indexByte
045. 
046.                Do
047.                    iStart = -1
048.                    For i = 0 To buffer1.Length - 2
049.                        If buffer1(i) = picMarker Then
050.                            If buffer1(i + 1) = picStart Then
051.                                iStart = i
052.                                Exit For
053.                            End If
054.                        End If
055.                    Next
056. 
057.                    iEnd = -1
058.                    For i = iStart To buffer1.Length - 2
059.                        If buffer1(i) = picMarker Then
060.                            If buffer1(i + 1) = picEnd Then
061.                                iEnd = i
062.                                Exit For
063.                            End If
064.                        End If
065.                    Next
066. 
067.                    If iStart >= 0 And iEnd >= 0 And iStart < iEnd Then
068.                        ms.Dispose()
069.                        ms = New System.IO.MemoryStream(buffer1, iStart, iEnd)
070.                        PictureBox1.Image = Image.FromStream(ms)
071. 
072.                        Array.Copy(buffer1, iEnd + 1, buffer2, 0, indexByte - iEnd)
073.                        Array.Clear(buffer1, 0, buffer1.Length)
074.                        Array.Copy(buffer2, 0, buffer1, 0, indexByte - iEnd)
075. 
076.                        Label2.Text = iStart
077.                        Label3.Text = iEnd
078.                        indexByte = indexByte - iEnd - 1
079.                        fps += 1
080.                    Else
081.                        Exit Do
082.                    End If
083.                Loop
084.            End If
085.        End If
086.lExit:
087.        Timer1.Start()
088.    End Sub
089. 
090.    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
091.        Label5.Text = fps
092.        Label10.Text = iScan
093.        fps = 0
094.        iScan = 0
095.    End Sub
096. 
097.    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
098.        Timer1.Stop()
099.        If TcpClient.Connected Then TcpClient.Close()
100.        TcpClient = New TcpClient
101.        TcpClient.Connect("192.168.1.29", 5000)
102.        indexByte = 0
103.        If TcpClient.Connected Then
104.            NS = TcpClient.GetStream
105.            Timer1.Start()
106.        End If
107. 
108.    End Sub
109.End Class



ขอบคุณครับ


ประวัติการแก้ไข
2018-05-15 09:39:13
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2018-05-15 09:36:58 By : 2127832830566218
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ทำยังไง winapp รับข้อมูล video stream ผ่านทางTCP มาโชว์ ใน panel ครับ ช่วยหน่อยครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2025 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่