Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.lang.visual-basic > #19795

Re: Popolare datagridview da rs232

Newsgroups it.comp.lang.visual-basic
Date 2020-06-03 00:58 -0700
References (5 earlier) <1peq5cnjms2fb$.ljcv00sqiioj.dlg@40tude.net> <5e598f4a-26c6-4831-8e78-4e43255bd8b3@googlegroups.com> <ranjh5$ql3$1@gioia.aioe.org> <4a49b697-09bc-4112-bb2f-71f573e2dab4@googlegroups.com> <5dff9228-de0c-4562-96ff-690d31add42a@googlegroups.com>
Message-ID <937572c5-a043-4091-b7b9-172cacf34b97@googlegroups.com> (permalink)
Subject Re: Popolare datagridview da rs232
From Marco75 <marcoporzi75@gmail.com>

Show all headers | View raw


Il giorno lunedì 1 giugno 2020 23:28:14 UTC+2, BobM ha scritto:
> Il giorno giovedì 28 maggio 2020 08:17:38 UTC+2, Marco75 ha scritto:
> > Il giorno giovedì 28 maggio 2020 07:51:36 UTC+2, RobertoA ha scritto:
> > > Il 27/05/2020 18:12, Marco75 ha scritto:
> > > > Il giorno mercoledì 27 maggio 2020 18:01:59 UTC+2, Andrea (Work) ha scritto:
> > > >> Il Wed, 27 May 2020 02:46:01 -0700 (PDT), Marco75 ha scritto:
> > > >>
> > > >>> dopo l'apertura della porta COM ho messo questo:
> > > >>>
> > > >>> DgvDati.Select() 'Seleziono il DataGridView With DgvDati
> > > >>> '.Rows(.Rows.Count - 1).Cells(0).Value =
> > > >>> DgvDati.Rows.IndexOf(CounterSample.ToString) .Rows(.Rows.Count -
> > > >>> 1).Cells(1).Value = SerialPort.ReadLine .Rows.Add() End With
> > > >>>
> > > >>> nella prima riga ho tentato di inserire un contatore nella seconda leggo
> > > >>> il dato ma non va a capo e sembra bloccarsi quando invio altri dati
> > > >>> dalla bilancia... grazie
> > > >>
> > > >> Io metterei i dati in una list of MIA CLASSE, che popolerai quando arrivano
> > > >> dati dalla COM.
> > > >> Poi la griglia visualizza questa lista.
> > > >>
> > > >> A quel punto mettere una colonna con un numero, e una con il testo è molto
> > > >> semplice.
> > > > 
> > > > grazie, domani e venerdì sono in smart working e non posso connettermi alla bilancia per eseguire test. Lo proverò martedì e ti faccio sapere
> > > > Marco
> > > > 
> > > 
> > > Ci sono dei programmi che puoi usare per creare una porta com virtuale
> > > Tu ci scrivi con un emulatore terminale e la porta virtuale e' connessa 
> > > alla porta com fisica
> > > Il pc vede i dati arrivare sulla com della bilancia
> > > Eltima e' la prima che mi viene in mente ma anche su sourgeforce c'e' 
> > > roba utile per questo
> > 
> > L'azienda non concede l'installazione di programmi esterni anche free comunque mi sono lasciato tutti gli aspetti grafici per lo smart working poi mercoledì tornerò a concentrarmi sul test dei dati.
> > detto ciò sono riuscito a far funzionare l'acquisizione dati mettendo questo codice sotto timer. il problema è che ricevo i pesi ma si blocca tutto il resto del form ad esempio il pulsante di uscita e quello di disconnessione!
> > 
> > Private Sub TimerRicevi_Tick(sender As Object, e As EventArgs) Handles TimerRicevi.Tick
> > 
> >         DgvDati.Rows.Add(DgvDati.CurrentRow.Index + 1.ToString, SerialPort.ReadLine)
> >         DgvDati(0, DgvDati.NewRowIndex).Selected = True
> > 
> >     End Sub
> 
> Ciao, 
> com'e' fatto il protocollo della bilancia? Sei sicuro che la stringa di peso sia terminata con un carattere di NewLine? 
> Se guardi la documentazione dice che la Readline legge fino a quando non incontra un carattere di NewLine. 
> Può essere che alla prima lettura il readline resti appeso e ti blocchi la UI del programma, in attesa del terminatore NewLine che non arriva.
> 
> 
> https://docs.microsoft.com/it-it/dotnet/api/system.io.ports.serialport.readline?view=netframework-4.8
> 
> Qui trovi un esempio che mi sembra abbastanza corretto, in particolare il metodo 2 citato, ma dovresti cambiare approccio, usando gli eventi del SerialPort:
> https://stackoverflow.com/questions/21688818/net-serialport-readline-vs-datareceived-event-handler/21689420
> 
> Ps: Attenzione che gli eventi arrivano su un thread diverso da quello della UI,
> cerca come va usato il metodo InvokeRequired.


ho provato così (SerialPortBil è il nome della mia seriale):

Public Sub StartListener()

        Try

            '_SerialPort = New Ports.SerialPort
            SerialPortBil = New Ports.SerialPort

            With SerialPortBil
                .PortName = CbSerialPort.Text
                .BaudRate = 9600
                .DataBits = 8
                .Parity = Ports.Parity.None
                .StopBits = Ports.StopBits.One
                .Handshake = Ports.Handshake.None
                AddHandler .DataReceived, AddressOf SerialPortBil_DataReceived  'DataReceivedHandler
            End With

            SerialPortBil.Open()
            '_SerialPort.Open()

        Catch ex As Exception

        End Try
    End Sub

    Private Shared buffer As String = ""

    Private Sub SerialPortBil_DataReceived(sender As Object, e As Ports.SerialDataReceivedEventArgs) Handles SerialPortBil.DataReceived

        DgvDati.Rows.Add(DgvDati.CurrentRow.Index + 1.ToString, SerialPort.ReadLine)

    End Sub

sul pulsante di apertura COM ho messo
SerialPortBil.Open() 

non vedo arrivare alcun dato...
provando con un hyperterminal vedo che la bilancia invia il dato poi va a capo...

Back to it.comp.lang.visual-basic | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-26 10:26 -0700
  Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-05-27 08:04 +0200
    Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-26 23:18 -0700
    Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-26 23:21 -0700
      Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-05-27 08:46 +0200
        Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-27 02:46 -0700
          Re: Popolare datagridview da rs232 "Andrea (Work)" <andrea.isworkDELETEME@gmail.invalid> - 2020-05-27 18:01 +0200
            Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-27 09:12 -0700
              Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-05-28 08:06 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-05-27 23:17 -0700
                Re: Popolare datagridview da rs232 "Andrea (Work)" <andrea.isworkDELETEME@gmail.invalid> - 2020-05-30 10:17 +0200
                Re: Popolare datagridview da rs232 BobM <dbtools@email.it> - 2020-06-01 14:28 -0700
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-03 00:58 -0700
                Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-06-03 12:51 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-03 03:49 -0700
                Re: Popolare datagridview da rs232 logica mente <npaolini_no_spam_@ennepisoft.it> - 2020-06-03 14:25 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-03 05:57 -0700
                Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-06-03 16:34 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-03 07:21 -0700
                Re: Popolare datagridview da rs232 RobertoA <amorosik@tiscalinet.it> - 2020-06-03 15:42 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-03 06:57 -0700
                Re: Popolare datagridview da rs232 Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2020-06-03 18:57 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-04 04:49 -0700
                Re: Popolare datagridview da rs232 Franz_aRTiglio <franzgol@N0SPAMtin.it> - 2020-06-04 21:47 +0200
                Re: Popolare datagridview da rs232 Marco75 <marcoporzi75@gmail.com> - 2020-06-04 23:12 -0700

csiph-web