X-Received: by 2002:a37:9f09:: with SMTP id i9mr29251396qke.60.1591181387808; Wed, 03 Jun 2020 03:49:47 -0700 (PDT) X-Received: by 2002:a0c:b5c1:: with SMTP id o1mr30556427qvf.9.1591181387523; Wed, 03 Jun 2020 03:49:47 -0700 (PDT) Path: csiph.com!xmission!news.snarked.org!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: it.comp.lang.visual-basic Date: Wed, 3 Jun 2020 03:49:47 -0700 (PDT) In-Reply-To: Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=165.225.203.44; posting-account=yvxj_woAAABxrxq8XihQzP-tWUWpycQc NNTP-Posting-Host: 165.225.203.44 References: <51fb7bce-64e3-4932-a61b-d90f54f8146f@googlegroups.com> <701087e1-f09c-4b35-b4a9-cb063f4c0ae0@googlegroups.com> <1peq5cnjms2fb$.ljcv00sqiioj.dlg@40tude.net> <5e598f4a-26c6-4831-8e78-4e43255bd8b3@googlegroups.com> <4a49b697-09bc-4112-bb2f-71f573e2dab4@googlegroups.com> <5dff9228-de0c-4562-96ff-690d31add42a@googlegroups.com> <937572c5-a043-4091-b7b9-172cacf34b97@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: Subject: Re: Popolare datagridview da rs232 From: Marco75 Injection-Date: Wed, 03 Jun 2020 10:49:47 +0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Lines: 150 Xref: csiph.com it.comp.lang.visual-basic:19797 Il giorno mercoled=C3=AC 3 giugno 2020 12:36:36 UTC+2, RobertoA ha scritto: > Il 03/06/2020 09:58, Marco75 ha scritto: > > Il giorno luned=C3=AC 1 giugno 2020 23:28:14 UTC+2, BobM ha scritto: > >> Il giorno gioved=C3=AC 28 maggio 2020 08:17:38 UTC+2, Marco75 ha scrit= to: > >>> Il giorno gioved=C3=AC 28 maggio 2020 07:51:36 UTC+2, RobertoA ha scr= itto: > >>>> Il 27/05/2020 18:12, Marco75 ha scritto: > >>>>> Il giorno mercoled=C3=AC 27 maggio 2020 18:01:59 UTC+2, Andrea (Wor= k) 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 =3D > >>>>>>> DgvDati.Rows.IndexOf(CounterSample.ToString) .Rows(.Rows.Count - > >>>>>>> 1).Cells(1).Value =3D SerialPort.ReadLine .Rows.Add() End With > >>>>>>> > >>>>>>> nella prima riga ho tentato di inserire un contatore nella second= a leggo > >>>>>>> il dato ma non va a capo e sembra bloccarsi quando invio altri da= ti > >>>>>>> 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= =C3=A8 molto > >>>>>> semplice. > >>>>> > >>>>> grazie, domani e venerd=C3=AC sono in smart working e non posso con= nettermi alla bilancia per eseguire test. Lo prover=C3=B2 marted=C3=AC e ti= faccio sapere > >>>>> Marco > >>>>> > >>>> > >>>> Ci sono dei programmi che puoi usare per creare una porta com virtua= le > >>>> Tu ci scrivi con un emulatore terminale e la porta virtuale e' conne= ssa > >>>> 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 p= oi mercoled=C3=AC torner=C3=B2 a concentrarmi sul test dei dati. > >>> detto ci=C3=B2 sono riuscito a far funzionare l'acquisizione dati met= tendo questo codice sotto timer. il problema =C3=A8 che ricevo i pesi ma si= blocca tutto il resto del form ad esempio il pulsante di uscita e quello d= i disconnessione! > >>> > >>> Private Sub TimerRicevi_Tick(sender As Object, e As EventArgs) Handle= s TimerRicevi.Tick > >>> > >>> DgvDati.Rows.Add(DgvDati.CurrentRow.Index + 1.ToString, Seri= alPort.ReadLine) > >>> DgvDati(0, DgvDati.NewRowIndex).Selected =3D True > >>> > >>> End Sub > >> > >> Ciao, > >> com'e' fatto il protocollo della bilancia? Sei sicuro che la stringa d= i peso sia terminata con un carattere di NewLine? > >> Se guardi la documentazione dice che la Readline legge fino a quando n= on incontra un carattere di NewLine. > >> Pu=C3=B2 essere che alla prima lettura il readline resti appeso e ti b= locchi la UI del programma, in attesa del terminatore NewLine che non arriv= a. > >> > >> > >> https://docs.microsoft.com/it-it/dotnet/api/system.io.ports.serialport= .readline?view=3Dnetframework-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-v= s-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. > >=20 > >=20 > > ho provato cos=C3=AC (SerialPortBil =C3=A8 il nome della mia seriale): > >=20 > > Public Sub StartListener() > >=20 > > Try > >=20 > > '_SerialPort =3D New Ports.SerialPort > > SerialPortBil =3D New Ports.SerialPort > >=20 > > With SerialPortBil > > .PortName =3D CbSerialPort.Text > > .BaudRate =3D 9600 > > .DataBits =3D 8 > > .Parity =3D Ports.Parity.None > > .StopBits =3D Ports.StopBits.One > > .Handshake =3D Ports.Handshake.None > > AddHandler .DataReceived, AddressOf SerialPortBil_Data= Received 'DataReceivedHandler > > End With > >=20 > > SerialPortBil.Open() > > '_SerialPort.Open() > >=20 > > Catch ex As Exception > >=20 > > End Try > > End Sub > >=20 > > Private Shared buffer As String =3D "" > >=20 > > Private Sub SerialPortBil_DataReceived(sender As Object, e As Port= s.SerialDataReceivedEventArgs) Handles SerialPortBil.DataReceived > >=20 > > DgvDati.Rows.Add(DgvDati.CurrentRow.Index + 1.ToString, Serial= Port.ReadLine) > >=20 > > End Sub > >=20 > > sul pulsante di apertura COM ho messo > > SerialPortBil.Open() > >=20 > > non vedo arrivare alcun dato... > > provando con un hyperterminal vedo che la bilancia invia il dato poi va= a capo... > >=20 >=20 > Dovresti provare con altro programma un po' piu' flessibile, tipo=20 > RealTerm o simili > Ti possono far vedere i dati anche in binario o esadecimale > Cosi' vedi esattamente cosa manda a fine riga, se un car 13, un 10,=20 > l'accoppiata dei due o altro > E da quello che spara fuori la bilancia poi dipende il software che=20 > riceve cosa deve attendersi per chiudere una riga in lettura io ho a disposizione Hyperterminal Putty non so se pu=C3=B2 fare le stesse = cose... L'azienda non mi permette l'uso di software anche free che si insta= llano sui PC, se ce n'=C3=A8 uno che non va installato ma lanciato direttam= ente posso provare... in ogni caso io i dati li ricevo, credo sia solo una = questione di modificare il codice che li riceve, ora uso un timer, magari s= baglio l=C3=AC