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


 

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

 

No. 1



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

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

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

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

Code (VB.NET)
01.If Me.txtSN.InvokeRequired Then
02.    Dim x As New SetTextCallback(AddressOf ReceivedText)
03.    Me.Invoke(x, New Object() {(text)})
04.    If intNumRows > 0 Then
05.        ds = New DataSet
06.        da = New SqlDataAdapter("INSERT INTO inout (CardSN,dtin) VALUES ('" & txtSN.Text & "','" & dt & "');", sqlcon)      'บันทึกเวลาเมื่อกดปุ่ม เข้า
07.        da.Fill(ds, "inout")
08.        Call showdata2()
09.        SerialPort1.Write("a")
10.    Else
11.        SerialPort1.Write("b")
12.    End If
13.Else
14.    Me.txtSN.Text &= [text]
15.End If


ลอง Debug ดูว่าได้มีการทำงานส่วนนี้หรือไม่
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-01-20 06:14:39 By : mr.win
 

 

No. 2



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



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

อยากได้โปรแกรมนี้ส่งมาให้หน่อยได้ไหมครับ supeanbbr@hotmail.com ขอบคุณครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
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 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)





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 อัตราราคา คลิกที่นี่