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 > vb 2010 รับค่าจาก Serial Port แสดงใน TextBox และบันทึกลงฐานข้อมูล


 

[.NET] vb 2010 รับค่าจาก Serial Port แสดงใน TextBox และบันทึกลงฐานข้อมูล

 
Topic : 104979



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



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


รบกวนสอบถามครับ คือตอนนี้ผมทำโปรแกรมรับค่าจาก Serial Port เพื่อให้ข้อมูลมาแสดงบน TextBox โดยเมื่อมีข้อมูลมาแสดงบน TextBox แล้วให้โปรแกรมตรวจสอบกับฐานข้อมูลว่ามีข้อมูลอยู่หรือไม่ ถ้ามีให้ทำการบันทึกเวลาเข้าไป ทีนี้ผมสามารถเขียนโปรแกรมรับ ส่งข้อมูลกับ Serial Port ได้แล้วครับ ติดอยู่ที่การบันทึกข้อมูลลงฐานข้อมูล ไม่ว่ายังไง มันก็ตรวจสอบว่าไม่เป็นสมาชิกอ่ะครับ ทั้งๆข้อมูลที่รับมาก็เป็นสมาชิกและต้องบันทึกข้อมูลในฐานข้อมูล

โค้ดที่ผมเขียนครับ ไม่ทราบว่าผิดตรงไหนครับ รบกวนสอบถามครับ

Code (VB.NET)
001.Imports System.Data
002.Imports System.Data.SqlClient
003.Imports VB = Microsoft.VisualBasic
004.Imports System.IO.Ports
005.Imports System.Threading
006.Imports System.ComponentModel
007.Imports System
008. 
009.Public Class Form1
010. 
011.    Dim sqlcon As SqlConnection         'ประกาศตัวแปรเพื่อเชื่อต่อกับฐานข้อมูล
012.    Dim sqlcmd As SqlCommand
013.    Dim ds As DataSet
014.    Dim da As SqlDataAdapter
015.    Dim myPort As Array 'COM Ports detected on the system will be stored here
016.    Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
017. 
018. 
019.    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
020.        myPort = IO.Ports.SerialPort.GetPortNames()
021.        cmbBaud.Items.Add(9600)
022.        cmbBaud.Items.Add(19200)
023.        cmbBaud.Items.Add(38400)
024.        cmbBaud.Items.Add(57600)
025.        cmbBaud.Items.Add(115200)
026.        For i = 0 To UBound(myPort)
027.            cmbPort.Items.Add(myPort(i))
028.        Next
029.        cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected
030.        cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list
031. 
032.        btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled
033.        Try
034.            sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")    'เชื่อมต่อกับฐานข้อมูล
035.            sqlcon.Open()
036. 
037.            'MsgBox("เชื่อมต่อฐานข้อมูลแล้ว")
038. 
039.            Call showdata2()
040. 
041.        Catch ex As Exception
042.            MsgBox("Error")
043.        End Try
044.    End Sub
045.    Sub showdata2()
046.        ds = New DataSet
047.        da = New SqlDataAdapter("SELECT * FROM inout;", sqlcon)
048.        da.Fill(ds, "inout")
049. 
050. 
051.        DataGridView1.DataSource = ds.Tables("inout")
052.    End Sub
053. 
054.    Sub cleardata()
055.        txtSN.Clear()
056.    End Sub
057.    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
058.        SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup
059.        SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on
060. 
061.        'Other Serial Port Property
062.        SerialPort1.Parity = IO.Ports.Parity.None
063.        SerialPort1.StopBits = IO.Ports.StopBits.One
064.        SerialPort1.DataBits = 8 'Open our serial port
065.        SerialPort1.Open()
066. 
067.        btnConnect.Enabled = False 'Disable Connect button
068.        btnDisconnect.Enabled = True 'and Enable Disconnect button
069.    End Sub
070.    Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
071.        SerialPort1.Close() 'Close our Serial Port
072. 
073.        btnConnect.Enabled = True
074.        btnDisconnect.Enabled = False
075.    End Sub
076. 
077.    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
078.        Label3.Text = TimeOfDay
079.        Label4.Text = Date.Today
080.        Label9.Text = Date.Today
081.        Label10.Text = TimeOfDay
082.    End Sub
083.    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
084.        ReceivedText(SerialPort1.ReadExisting()) 'Automatically called every time a data is received at the serialPort
085.    End Sub
086.    Private Sub ReceivedText(ByVal [text] As String)
087.        'compares the ID of the creating Thread to the ID of the calling Thread
088.            If Me.txtSN.InvokeRequired Then
089.                Dim x As New SetTextCallback(AddressOf ReceivedText)
090.                Me.Invoke(x, New Object() {(text)})
091.            Else
092.                Me.txtSN.Text &= [text]
093.            End If
094.    End Sub
095. 
096. 
097.    Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
098.        If SerialPort1.IsOpen = False Then
099.            SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports
100.        Else 'without disconnecting first.
101.            MsgBox("port is Closed", vbCritical)
102.        End If
103.    End Sub
104.    Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
105.        If SerialPort1.IsOpen = False Then
106.            SerialPort1.BaudRate = cmbBaud.Text 'pop a message box to user if he is changing baud rate
107.        Else 'without disconnecting first.
108.            MsgBox("port is Closed", vbCritical)
109.        End If
110.    End Sub
111. 
112.    Private Sub txtSN_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSN.TextChanged
113.        If txtSN.Text <> "" Then
114.            Dim dt As String
115.            dt = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")
116.            Dim strSQL As String
117.            Dim intNumRows As Integer
118.            sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")
119.            sqlcon.Open()
120.            strSQL = "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
121.            sqlcmd = New SqlCommand(strSQL, sqlcon)
122.            intNumRows = sqlcmd.ExecuteScalar()
123.            If intNumRows > 0 Then
124.                Thread.Sleep(1000)
125.                ds = New DataSet
126.                da = New SqlDataAdapter("INSERT INTO inout (CardSN,dtin) VALUES ('" & txtSN.Text & "','" & dt & "');", sqlcon)     
127.                da.Fill(ds, "inout")
128.                Call showdata2()
129.                SerialPort1.Write("a")
130.            Else
131.                SerialPort1.Write("s")
132.            End If
133.        End If
134.        sqlcon.Close()
135. 
136.    End Sub
137.End Class




Tag : .NET, Ms SQL Server 2008, VB.NET



ประวัติการแก้ไข
2014-01-24 00:24:52
Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-01-24 00:24:37 By : sjantana28 View : 14846 Reply : 12
 

 

No. 1



โพสกระทู้ ( 74,059 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

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

Code (VB.NET)
1.strSQL = "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
2.sqlcmd = New SqlCommand(strSQL, sqlcon)
3.intNumRows = sqlcmd.ExecuteScalar()


ใช้การ Debug ดูซิครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-24 09:39:44 By : mr.win
 

 

No. 2



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



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

ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2014-01-24 09:39:44
รายละเอียดของการตอบ ::
คือถ้าพิมพ์ใส่ช่อง textbox จะบันทึกค่าได้อ่ะครับ แต่ถ้ารับค่าจาก serial port ยังไงก็บันทึกไม่ได้ ทั้งๆที่เป็นสมาชิก สงสัยตรงนี้อ่ะครับ ว่าเกิดจากอะไรได้บ้าง ?

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-27 16:30:01 By : sjantana28
 

 

No. 3



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



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


txtSN.Text.trim
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-27 16:53:43 By : Honey4U
 

 

No. 4



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



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


ขอโทษนะคับ ผมติด Imports System.IO.Ports ต้องติดตั้งอะไรก่อนหรือป่าวคับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-23 16:06:49 By : timesurfer
 

 

No. 5



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



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


ถ้าสร้าง Project ใหม่ก็ใช้ Import ตัวนี้ได้เลยน่ะครับ
เป็น VB ใช่ไหมครับ

ถ้าไม่แน่ใจไปดูใน Reference ว่ามี System ไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 08:08:22 By : fonfire
 

 

No. 6



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



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


มีนะครับ

มีนะครับ


ประวัติการแก้ไข
2017-03-24 08:22:56
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 08:21:49 By : timesurfer
 

 

No. 7



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



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


ผมก็ไม่แน่ใจน่ะครับ
อันนี้ Visual Studio เวอร์ชั่นอะไรครับ

เห็นในเน็ตบอกว่าต้อง 2005 ขึ้น
ถ้า 2003 จะเป็น System.IO.Serial
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 08:42:53 By : fonfire
 

 

No. 8



โพสกระทู้ ( 4,440 )
บทความ ( 23 )



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

vb 2010 รับค่าจาก Serial Port แสดงใน TextBox และบันทึกลงฐานข้อมูล

ลองทำตามที่ admin บอกยังครับ

เสริมอีกหน่อย

CardSN แรกเริ่มเดิมที รับมาจาก txtSN.Text ตั้งแต่นมนานมาแล้ว หรือเป็นข้อมูลเก่า แล้วเขียนรับจาก txtSN.Text รึครับ
ถ้าข้อมูลเก่า แล้วเขียนรับจาก txtSN.Text ก็เป็นไปได้สูงว่า รูปแบบ อย่างพวก space หรือ ช่องว่าง ไม่ตรงกัน

แนะนำว่า
1. ลอง เรียก CardSN จากฐานข้อมูลมาซักตัว มาใส่ใน txtSN.Text ครับ
2. "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
ถ้ายังไม่ได้อีก ก็ไม่ได้เป็นที่ txtSN.Text ที่รับมาจาก Serial Port แล้วละครับ
น่าจะเป็นที่ SQL database มากกว่า(รึป่าว)
3. ถ้ามันได้อ่ะนะ ก็ต้องมาลองดูว่า txtSN.Text ที่รับมาจาก Serial Port กับ txtSN.Text ที่รับมาจาก CardSN โดยตรงยังไง
ถ้าไม่ต่างกันอีก ก็ขอเดาไปเลยว่า
มันมีอยู่แล้ว(จะ Insert ไปทามมาย) ก็ต้องเปลี่ยนเป็น Update แทน



ส่วนเรื่อง ผมติด Imports System.IO.Ports
ก็แค่ก๊อบโค้ดจากโปรเจคที่เคยทำๆมานั่นแหละมาลงใน ฟอร์มในฟอร์มใหม่
มันจะฟ้องเองว่า ไม่ได้ Imports
ถ้ายังไม่ Reference มาก็ Reference มาไว้
ถ้า Reference แล้ว
ให้ คลิก ตรง กากบาท ที่ Error มันจะมีให้เลือก Import มาครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 09:19:09 By : lamaka.tor
 

 

No. 9



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



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


2003 คับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 13:33:01 By : timesurfer
 

 

No. 10



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



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


System.IO.Serial ก็ติดคับ มันต้องติดตั้งโปรแกรมอะไรก่อนหรือป่าวคับ ผมไม่มีความรู้ด้านนี้เลย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-03-24 13:57:15 By : timesurfer
 

 

No. 11



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



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


ติดต่อเครื่องชั่งหรือป่าวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-04-04 16:05:10 By : dRufFy
 

 

No. 12



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



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


SerailPort

ผมรับค่าจากเครื่องวัดเสียง แล้วมันขึ้นแบบนี้ครับ อ่านค่าไม่ออก พอมีวิธีแก้ไหมครับ

Imports System.Data
Imports System.Data.SqlClient
Imports VB = Microsoft.VisualBasic
Imports System.IO.Ports
Imports System.Threading
Imports System.ComponentModel
Imports System

Public Class Form2

Delegate Sub SetTextCallback(ByVal [text] As String)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
SerialPort1.PortName = "COM3"
SerialPort1.BaudRate = "115200"
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.DataBits = 8
SerialPort1.Open()
End Sub
Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
SerialPort1.Close()
End Sub

Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
ReceivedText(SerialPort1.ReadExisting())
End Sub
Private Sub ReceivedText(ByVal [text] As String)
If Me.txtSN.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.txtSN.Text &= [text]
End If
End Sub

End Class
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-10-18 15:38:35 By : wwwww
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : vb 2010 รับค่าจาก Serial Port แสดงใน TextBox และบันทึกลงฐานข้อมูล
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 อัตราราคา คลิกที่นี่