Newsgroup: it.comp.lang.visual-basic
Titolo: VB.Net e Porta Seriale

Ciao, devo creare un'applicazione in VB.net che mi permette di leggere
il peso di una bilancia industriale che comunica tramite porta
seriale.
La stessa applicazione l'avevo fatta in VB6, dove utilizzavo il
componente MSComm. Impostavo la velocità di comunicazione e
quant'altro, aprivo la porta facevo tutti i controlli a me necessari e
riuscivo a leggere i dati da seriale.
Ora con VB.Net non ho la minima idea di come fare. Leggo, da forum,
che bisogna utilizzare classi esterne, bisogna importate la
System.IO.Port (smentito da altri siti)... insomma ho un po' di
confusione a riguardo. Qualcuno sa indicarmi la strada giusta e
semplice da eseguire per leggere i dati di una bilancia, dove questi
valori mi arrivano da seriale? Naturalmente il record di lettura della
bilancia lo gestisco io, ma ho problemi (o meglio non capisco) come
gestire l'apertura ed il settaggio della porta seriale da programma.
Grazie Lanfra

 
Ciao, hai guardato su codeproject?
http://www.codeproject.com/cs/system/Serialport_COM.asp
http://www.codeproject.com/useritems/Serial_port_tester.asp
io ho cominciato da li...
Roberto
dbtools_NoSPAM@MAPSoN_email.it

 dbtools_NoSPAM@MAPSoN_email.it
Ti ringrazio per il consiglio, ho trovato anche degli esempi al sito
http://www.devx.com/dotnet/Article/31001/1954?pf=true
, ora devo solo
gestire il buffer....
grazie
Lanfra ;>

Questo è quello che ho partorito. Leggo 2 seriali, una per la bilancia
ed una per la pistola [ ; > ] del codice a barre. Naturalmente tutto è
appoggiato ad un file di INI che mi inizializza le variabili
principali:
''''''''''''''''''''''''''''
Sub PortaSerialeBilancia()
        With ConnSerialPortBil
            .PortName = gPortaCOM
            .BaudRate = gVelCOM
            .Parity = IO.Ports.Parity.None
            .DataBits = 8
            .StopBits = IO.Ports.StopBits.One
        End With
        If Not ConnSerialPortBil.IsOpen Then ConnSerialPortBil.Open()
    End Sub
    Private Sub DataReceived(ByVal sender As Object, ByVal e As
System.IO.Ports.SerialDataReceivedEventArgs) Handles
ConnSerialPortBil.DataReceived, _
 
ConnSerialPortBarCode.DataReceived
        On Error Resume Next
        Select Case sender.portname
            Case gPortaCOM
                UDCPESO.Invoke(New myDelegate(AddressOf
aggiornaPesoUDC), New Object() {})
            Case gPortaCOMPistola
                IDE_UDCDEST.Invoke(New myDelegate(AddressOf
leggiBarCode), New Object() {})
        End Select
    End Sub
    Public Delegate Sub myDelegate()
    Public Sub aggiornaPesoUDC()
        Dim sTxtBilancia As String
        sTxtBilancia = ConnSerialPortBil.ReadTo(gFineCarBilancia)
        UDCPESO.Text = GlmTxtInNumero(0, sTxtBilancia)
    End Sub
    Sub PortaSerialeBarCode()
        With ConnSerialPortBarCode
            .PortName = gPortaCOMPistola
            .BaudRate = gVelCOM
            .Parity = IO.Ports.Parity.None
            .DataBits = 8
            .StopBits = IO.Ports.StopBits.One
        End With
        If Not ConnSerialPortBarCode.IsOpen Then
ConnSerialPortBarCode.Open()
    End Sub
    Public Sub leggiBarCode()
        Dim sTxtBarCode As String
        sTxtBarCode = ConnSerialPortBarCode.ReadTo(gFineCarPistola)
        If Len(sTxtBarCode) <> 10 Then Exit Sub
        If Mid(UCase(sTxtBarCode), 1, 1) = "P" Then
            IDE_PALLET.Text = sTxtBarCode
            IDE_PALLET.Select()
        ElseIf Mid(UCase(sTxtBarCode), 1, 1) = "F" Then
            IDE_UDCDEST.Text = sTxtBarCode
            IDE_UDCDEST.Select()
        End If
    End Sub
''''''''''''''''''''''''''''
Ciao e grazie a tutti.....