Springen naar inhoud


Tutorial info

  • Toegevoegd op: 14 feb 2012 08:59
  • Datum bijgewerkt: 14 feb 2012 09:02
  • Bekeken: 4622
 


* * * * *
3 Beoordeling

Serial Port Interfacing met VB.net 2010

Het schrijven van een programma dat communiceert via de COM-poort met ander hardware.

Geplaatst door pascalbianca op14 feb 2012 08:59
Voor dat ik begin wil ik vermelden dat deze tutorial niet van mij afkomstig is maar met goedkeuring (van Tiktaks) wel geplaatst mag worden hier.

De seriële poort op onze computers zit er al heel lang op.
Het is meer bevoorrechte dan de parallelle poort voor koppeling met de buitenwereld, omdat het minder draden nodig heeft en kan een verdere afstand afleggen en kan zelfs gebruikt worden met nieuwere technologieën zoals Bluetooth met behulp van de seriële poort vermogen.

In deze tutorial is een Quick Start Guide in communicatie met de seriële poort met behulp van VB.net zonder enige voorkennis.
Voordat we beginnen, moet VB.net 2010 worden geïnstalleerd.  
De installatie kan gratis worden gedownload van Microsoft .

Start Visual Basic 2010 Express en u krijgt de Start Page venster voor zich.

start_page1.jpg

Selecteer New Project en selecteer Windows Form Application en geef het project een naam, in dit geval noem ik het Serial Port Interface.

newproject.jpg

Een blanco formulier wordt weergegeven met de naam Form1.  
Dit is de belangrijkste form die bevat alle andere bedieningsorganen.

blankform.jpg

Klik op de toolbox om de controles te tonen, u kunt klikken op de pen om de Autohide functie uit te schakelen.

controls.jpg

Klik op de form om zijn naam te veranderen naar frmMain (snellere identificatie speciaal bij het toevoegen van meer vormen).  
Ook zijn naam veranderen, in dit geval VB.net Terminal - Philrobotics.
Deze naam zal worden weergegeven op de titelbalk.
Omdat dit programma klein is, kunnen we de knop Maximaliseren uitschakelen door MaximizeBox waarde op false te zetten.

Laten we beginnen om een ​​aantal controles toe te voegen aan ons formulier.
Van de Common Controls, (2) twee labels, (2) twee combo box en (2) twee knoppen toe te voegen.  
Wijzig de tekst van het eerste label op "Com Port:" en de tweede naar "Baud Rate:".
Voor de keuzelijst wijzigt men de naam in cmbPort en cmbBaud ten behoeve van de identificatie makkelijker als we de codes toevoegen aan onze controles.  
Wijzig ook de tekst van de twee knoppen, de eerste op "Connect" en de tweede op "Verbreken" en veranderen hun naam in btnConnect en btnDisconnect.
Zoals je kunt zien, gebruik ik CMB en btn prefix om te verwijzen naar de keuzelijst en de knop om dezelfde reden als hierboven, snellere identificatie.

firshalf.jpg

Voeg vervolgens uit de twee Groep box en verander de tekst "Transmit Data" en "Ontvangen gegevens".  
In de Transmit groep Gegevens box, voeg een tekstvak en een knop toe.  
Verander de naam van het tekstvak naar txtTransmit en de knop naar btnSend, veranderen ook de tekst naar verzenden.  
Op de ontvangen gegevens groepsvak, voeg een RTF-Box en verander de naam in rtbReceived.  
Ten slotte en de belangrijkste, voeg de seriele poort van de componenten toe.

secondhalf.jpg

Nu komen we bij het volgende deel, het toevoegen van de instructies om ons programma te laten lopen.
Om te beginnen met coderen dubbelklik op de form of druk op F7 om de code te bekijken.
Om een ​​code toe te voegen aan individuele controles gewoon terug naar de ontwerper gaan of druk op Shift + F7 en dubbelklik op een controle om code toe te voegen.

blankcode.jpg

Bijvoorbeeld als we dubbel klikt op de knop Verzenden op de ontwerper de mening van de code-editor zal ons naar
Private Sub btnSend_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
Op dit deel is waar we in onze codes.
End Sub

codeeditor.jpg

Plaats nu de volgende code in de editor.:

Visual Basic Code:
‘Serial Port Interfacing with VB.net 2010 Express Edition
‘Copyright © 2010  Richard Myrick T. Arellaga
‘
‘This program is free software: you can redistribute it and/or modify
‘it under the terms of the GNU General Public License as published by
‘the Free Software Foundation, either version 3 of the License, or
‘(at your option) any later version.
‘
‘This program is distributed in the hope that it will be useful,
‘but WITHOUT ANY WARRANTY; without even the implied warranty of
‘MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
‘GNU General Public License for more details.
‘
‘ You should have received a copy of the GNU General Public License
‘ along with this program.  If not, see <http://www.gnu.org/licenses/>.
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Public Class frmMain
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 frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
‘When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box.
myPort = IO.Ports.SerialPort.GetPortNames() ‘Get all com ports available
cmbBaud.Items.Add(9600)	 ‘Populate the cmbBaud Combo box to common baud rates used
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
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 btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
SerialPort1.Write(txtTransmit.Text & vbCr) ‘The text contained in the txtText will be sent to the serial port as ascii
‘plus the carriage return (Enter Key) the carriage return can be ommitted if the other end does not need it
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.rtbReceived.InvokeRequired Then
Dim x As New SetTextCallback(AddressOf ReceivedText)
Me.Invoke(x, New Object() {(text)})
Else
Me.rtbReceived.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(”Valid only if 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(”Valid only if port is Closed”, vbCritical)
End If
End Sub
End Class

Nadat u alle codes heeft geplakt zijn we nu klaar om ons project te compileren.  
Om dit te doen gaan, Debug -> Build SerialPortInterface.  
Als er geen fouten zijn, zal het aangeven Build Geslaagd aangeven op de statusbalk.

build.jpg

Het uitvoerbare bestand van de gecompileerde project bevindt zich meestal op de bin  Release van het project map.
Om te testen of ons programma werkt, kortom de TX en RX pin van uw seriële poort en druk op F5 of klik op de groene driehoek.  
Elke gegeven we die sturen zal worden ontvangen door ons programma.
In mijn setup gebruik ik een USB-naar-serieel converter en wordt toegewezen op COM18.



Of downbload filmpje.:

Bijlage  SerialPort Example(360p_H.264-AAC).mp4   1,64MB   299 downloads

Donwload bovestaand voorbeeld.:

Bijlage  SerialPortInterface.zip   132,89K   516 downloads

Inloggen


Untitled 1

Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno dec 2000)
Met dank aan Mike en Ronneke voor de jarenlange inzet van vbib.be (anno dec 2010)
Met dank aan PascalBianca voor de jarenlange inzet van vbib.be (anno dec 2016)