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,027

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



 

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

 



Topic : 104979



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



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



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

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

Code (VB.NET)
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 Form1

    Dim sqlcon As SqlConnection         'ประกาศตัวแปรเพื่อเชื่อต่อกับฐานข้อมูล
    Dim sqlcmd As SqlCommand
    Dim ds As DataSet
    Dim da As SqlDataAdapter
    Dim myPort As Array 'COM Ports detected on the system will be stored here
    Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        myPort = IO.Ports.SerialPort.GetPortNames()
        cmbBaud.Items.Add(9600)
        cmbBaud.Items.Add(19200)
        cmbBaud.Items.Add(38400)
        cmbBaud.Items.Add(57600)
        cmbBaud.Items.Add(115200)
        For i = 0 To UBound(myPort)
            cmbPort.Items.Add(myPort(i))
        Next
        cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected
        cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list

        btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled
        Try
            sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")    'เชื่อมต่อกับฐานข้อมูล
            sqlcon.Open()

            'MsgBox("เชื่อมต่อฐานข้อมูลแล้ว")

            Call showdata2()

        Catch ex As Exception
            MsgBox("Error")
        End Try
    End Sub
    Sub showdata2()
        ds = New DataSet
        da = New SqlDataAdapter("SELECT * FROM inout;", sqlcon)
        da.Fill(ds, "inout")


        DataGridView1.DataSource = ds.Tables("inout")
    End Sub

    Sub cleardata()
        txtSN.Clear()
    End Sub
    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup
        SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on 

        'Other Serial Port Property
        SerialPort1.Parity = IO.Ports.Parity.None
        SerialPort1.StopBits = IO.Ports.StopBits.One
        SerialPort1.DataBits = 8 'Open our serial port
        SerialPort1.Open()

        btnConnect.Enabled = False 'Disable Connect button
        btnDisconnect.Enabled = True 'and Enable Disconnect button
    End Sub
    Private Sub btnDisconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDisconnect.Click
        SerialPort1.Close() 'Close our Serial Port

        btnConnect.Enabled = True
        btnDisconnect.Enabled = False
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Label3.Text = TimeOfDay
        Label4.Text = Date.Today
        Label9.Text = Date.Today
        Label10.Text = TimeOfDay
    End Sub
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
        ReceivedText(SerialPort1.ReadExisting()) 'Automatically called every time a data is received at the serialPort
    End Sub
    Private Sub ReceivedText(ByVal [text] As String)
        'compares the ID of the creating Thread to the ID of the calling Thread
            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


    Private Sub cmbPort_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbPort.SelectedIndexChanged
        If SerialPort1.IsOpen = False Then
            SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports
        Else 'without disconnecting first.
            MsgBox("port is Closed", vbCritical)
        End If
    End Sub
    Private Sub cmbBaud_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBaud.SelectedIndexChanged
        If SerialPort1.IsOpen = False Then
            SerialPort1.BaudRate = cmbBaud.Text 'pop a message box to user if he is changing baud rate
        Else 'without disconnecting first.
            MsgBox("port is Closed", vbCritical)
        End If
    End Sub

    Private Sub txtSN_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSN.TextChanged
        If txtSN.Text <> "" Then
            Dim dt As String
            dt = DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss")
            Dim strSQL As String
            Dim intNumRows As Integer
            sqlcon = New SqlConnection("Server=TOSHIBA-PC\SQLEXPRESS;Database=parking;Trusted_Connection=True;")
            sqlcon.Open()
            strSQL = "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
            sqlcmd = New SqlCommand(strSQL, sqlcon)
            intNumRows = sqlcmd.ExecuteScalar()
            If intNumRows > 0 Then
                Thread.Sleep(1000)
                ds = New DataSet
                da = New SqlDataAdapter("INSERT INTO inout (CardSN,dtin) VALUES ('" & txtSN.Text & "','" & dt & "');", sqlcon)      
                da.Fill(ds, "inout")
                Call showdata2()
                SerialPort1.Write("a")
            Else
                SerialPort1.Write("s")
            End If
        End If
        sqlcon.Close()

    End Sub
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 : 14403 Reply : 12
 

 

No. 1



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

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

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

Code (VB.NET)
            strSQL = "SELECT COUNT(*) FROM member WHERE CardSN = '" & txtSN.Text & "'"
            sqlcmd = New SqlCommand(strSQL, sqlcon)
            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,436 )
บทความ ( 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



โพสกระทู้ ( 234 )
บทความ ( 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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

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