+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31

Discussione: Lettura dati da bilancia

  1. #1
    ljt
    ljt non è in linea Scolaretto
    Post
    126

    Lettura dati da bilancia

    Salve,


    vorrei leggere i dati via com da una bilancia collegata via USB al computer così configurata:
    Porta: COM7
    Baud Rate: 9600
    Parita: ODD (Dispari)
    Bit di dati: 7
    Bit di stop: 1

    Ho utilizzato la seguente funzione:

    codice:
            Dim returnStr As String = ""
    
            Dim seriale As New System.IO.Ports.SerialPort("COM7", 9600, IO.Ports.Parity.Odd, 7, 1)
    
            Try
                seriale = My.Computer.Ports.OpenSerialPort( "COM7" )
                seriale.ReadTimeout = 10000
    
                Do
                    Dim Incoming As String = seriale.ReadLine()
                    If Incoming Is Nothing Then
                        Exit Do
                    Else
                        returnStr &= Incoming & vbCrLf
                    End If
                Loop
            Catch ex As TimeoutException
                returnStr = "Porta seriale in time out."
            Finally
                If seriale IsNot Nothing Then seriale.Close()
            End Try
    
            Return returnStr
    Ma ottengo il messaggio: Porta seriale in timeout" definito nel programma.
    Con Hyper Terminal la connessione funzione con gli stessi parametri definiti nella porta com7.
    Dove potrebbe essere l'errore?

    Grazie
    Ultima modifica di AntonioG; 12-06-2019 12:56 

  2. #2
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,251
    Blogs
    5
    Usi il ReadLine perché sei sicuro che ti venga restituito una serie di dati terminata da NewLine?

    E se il NewLine non viene inviato?

    Le specifiche della bilancia cosa dicono?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  3. #3
    ljt
    ljt non è in linea Scolaretto
    Post
    126
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Usi il ReadLine perché sei sicuro che ti venga restituito una serie di dati terminata da NewLine?

    E se il NewLine non viene inviato?

    Le specifiche della bilancia cosa dicono?
    Ciao Antonio,

    ho provato a mettere:
    codice:
    Dim Incoming As String = seriale.NewLine()
    Il programma loopa e il valore:
    codice:
    returnStr &= Incoming & vbCrLf
    Rimane vuoto, nonostante nella bilancia ci sia un peso.

    Per quanto riguarda le specifiche della bilancia sono quelle che ho postato. Ne sono sicuro perché le ho impostate direttamente nella bilancia. Comunque con altri software (HyperTerminal Putyy la bilancia restituisce il valore corretto.

    Grazie

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,251
    Blogs
    5
    Che fai con quelle linee? Non ci siamo capiti.

    Nelle specifiche, oltre ai parametri per la connessione, c'è anche il tipo di flusso dati che la bilancia usa per trasmettere i dati.

    Di che tipo di bilancia si tratta? Hai un pdf/documento tipo datasheet?
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

  5. #5
    Ferrari_and non è in linea Scolaretto
    Post
    108
    Ciao prova a cercare i metodi

    BytesToRead ReadByte

    Per leggere da seriale un carattere alla volta e vedi se va.

  6. #6
    ljt
    ljt non è in linea Scolaretto
    Post
    126
    Il flusso dati se è questo che intendi è hardware (xon xoff)
    Ho provato a impostare anche quelli senza successo.
    La bilancia è una sartorius Bp2100

  7. #7
    ljt
    ljt non è in linea Scolaretto
    Post
    126
    Ciao Ferrari_and,

    stavo guardando i comandi che mi hai suggerito proprio adesso, ma per ora nulla di che.

  8. #8
    ljt
    ljt non è in linea Scolaretto
    Post
    126
    Quote Originariamente inviato da Ferrari_and Visualizza il messaggio
    Ciao prova a cercare i metodi

    BytesToRead ReadByte

    Per leggere da seriale un carattere alla volta e vedi se va.
    Ho fatto delle prove con i comandi suggeriti:
    Con BytesToRead ottengo sempre come valore 0 anche se nella bilancia ci sono dei pesi.
    Con il comando ReadByte senza nessun oggetto nella bilancio ottengo 32 e se metto un'oggetto cambia in 48 (ma non è il peso dell'oggetto).
    Poi dopo qualche prova ho iniziato ad avere errore di timeout.
    Rimettendo BytesToRead l'errore di timeout sparisce ma restituisce sempre zero.
    Ho provato a utilizzare un codice diverso:

    codice:
       Dim DataReceived As String     'To Store the Received Data 
            Dim mySerialPort As New SerialPort("COM7")
    
            mySerialPort.BaudRate = 9600
            mySerialPort.Parity = Parity.Odd
            mySerialPort.StopBits = StopBits.One
            mySerialPort.DataBits = 7
            mySerialPort.Handshake = Handshake.XOnXOff
            mySerialPort.RtsEnable = True
            mySerialPort.ReadTimeout = 3000
    
            mySerialPort.Open()
    
            'DataReceived = mySerialPort.ReadLine       'Restituisce sempre errore di Timeout
            'DataReceived = mySerialPort.ReadByte      'Restituisce errore di timeout
            DataReceived = mySerialPort.BytesToRead  'Restituisce sempre zero.
    
            MsgBox(DataReceived)
    
            mySerialPort.Close()
    Non so proprio come procedere.

  9. #9
    ljt
    ljt non è in linea Scolaretto
    Post
    126
    Aggiornamento:
    Ho letto e seguito tutta la discussione:
    Vb.net Leggere dati da una bilancia collegata tramite porta seriale

    Ho provato a eseguire il codice postato.
    Ma continuo a non avere il peso.
    Mi viene restituita una stringa vuota

  10. #10
    Ferrari_and non è in linea Scolaretto
    Post
    108
    Ciao Ho provato a cercare il manuale della bilancia ma di quel modello non sono riuscito a trovarlo.
    In ogni caso ho trovato altri della sartorius e tutti prevedono un Handshake (stretta di mano).

    Significa che prima di trasmettere qualsiasi informazione si aspettano di ricevere dei segnali hardware o software.

    Prova a recuperare il manuale e vedi se anche per questa bilancia è previsto un sistema simile.

    Non Handsheke no dati generalmente.

+ Rispondi al Thread
Pagina 1 di 4 123 ... ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi