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.Net การรับค่าจาก Serial port และบันทึกค่าลงในฐานข้อมูล SQL Server



 

VB.Net การรับค่าจาก Serial port และบันทึกค่าลงในฐานข้อมูล SQL Server

 



Topic : 104794



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



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



สอบถามครับ คือผมต้องการเขียนโปรแกรมให้รับค่าจากSerial Port ครับ และเมื่อรับค่านั้นมาก็ให้ทำการตรวจสอบว่าค่าที่รับมานั้นเป็นค่าที่อนุญาตให้บันทึกหรือไม่ ถ้าเป็นค่าที่อนุญาตให้ส่ง a กลับไปยังอุปกรณ์ผ่าน Serial Port และถ้าเป็นค่าที่ไม่อนุญาตให้บันทึกให้ส่ง b กลับไปยังอุปกรณ์ผ่าน Serial Port เป็นต้นครับ ตอนนี้ผมสามารถให้โปรแกรมรับค่าจาก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
    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
        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 Me.txtSN.InvokeRequired Then
            Dim x As New SetTextCallback(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
            If intNumRows > 0 Then
                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("b")
            End If
        Else
            Me.txtSN.Text &= [text]
        End If
            sqlcon.Close()
    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
End Class




ขอบคุณครับ



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







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-01-20 00:48:56 By : sjantana28 View : 3059 Reply : 2
 

 

No. 1



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

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

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

ติดปัญหาตรงไหนครับ ? ลองไล่ไปทีล่ะจุด แล้วก็แก้ไขปัยหานั้น ๆ ให้ได้ก่อนครับ ถ้าไม่ยอมบันทึกค่าก็ดูตรง

Code (VB.NET)
        If Me.txtSN.InvokeRequired Then
            Dim x As New SetTextCallback(AddressOf ReceivedText)
            Me.Invoke(x, New Object() {(text)})
            If intNumRows > 0 Then
                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("b")
            End If
        Else
            Me.txtSN.Text &= [text]
        End If


ลอง Debug ดูว่าได้มีการทำงานส่วนนี้หรือไม่






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-20 06:14:39 By : mr.win
 


 

No. 2



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



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

อยากได้โปรแกรมนี้ส่งมาให้หน่อยได้ไหมครับ [email protected] ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-08-13 13:28:35 By : 2267496246628223
 

   

ค้นหาข้อมูล


   
 

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