Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    13

    VB - Comunicazione seriale e dati non desiderati

    Buongiorno,
    sono nuovo del Forum e avrei bisogno di una mano con la comunicazione seriale.
    Vado con ordine:
    - devo fare un programma che: 1) manda codice ad un microprocessore (il quale non da risposta di messaggio ricevuto/corretto...) tramite porta seriale dicendo di mettere sulla stessa porta il contenuto di un registro 2) leggere il contenuto del registro posto sulla seriale;
    - ho gia sviluppato parte del programma riuscendo con successo a parlare con il processore;
    - ho notato, pero', che dopo il comando di scrittura viene generato sull'input buffer un dato non desiderato che mi compromette la lettura del dato corretto (questo dato non voluto lo leggo prima o dopo il contenuto del registro a secondo dei timing che inserisco).

    Il dato non desiderato che si genera dopo ogni write e': BA D0 0B AD e penso che sia dovuto all'istruzione di write stessa in quanto mi si genera anche quando testo il programma con il processore spento...
    Il codice e' organizzato in thread e ve ne posto alcune parti:

    MAIN:
    Public Class Main
    [...]
    Dim ThreadWriteDataSerialPort = New Thread(AddressOf WriteDataSerialPort)
    ThreadWriteDataSerialPort.Start()
    [...]
    Public Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim Data(11) As Byte
    Data(0) = &H1B
    Data(1) = &H0
    Data(2) = &H3
    Data(3) = &H0
    Data(4) = &H0
    Data(5) = &H0
    Data(6) = &H88
    Data(7) = &H1
    Data(8) = &H0
    Data(9) = &H0
    Data(10) = &H0
    Data(11) = &H0
    WriteDataSerialPort(Data)
    End sub
    [...]
    End Class

    Thread comiunicazione seriale:
    Public Class SerialComunication
    [...]
    Public Shared Sub WriteDataSerialPort(ByVal Data() As Byte)

    If Data IsNot Nothing Then

    comPort.Write(Data, 0, 12)
    End If


    End Sub

    [...]
    Public Shared Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles comPort.DataReceived

    Dim TempVar(1) As Object
    If comPort.IsOpen Then
    TempVar(1) = comPort.ReadExisting
    End If
    End Sub
    [...]
    End Class


    Avete idea da cosa possa essere generato e come posso eliminarlo?
    Grazie per l'aiuto!!!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Imposta l'encoding UTF8 per trasmettere

    codice:
    comPort.Encoding = System.Text.Encoding.UTF8

    Inoltre non si capisce come usi il metodo ReadExisting che restituisce una String
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    13
    Intanto grazie.
    Ho importato l'encoding UTF8, ma non risolve.
    Sinceramente ho provato tutti i tipi di read...penso usero' una readbyte (dato ke mi aspetto 11 byte da leggere)...
    Anche con readbyte ho sempre questi 4 byte che non capisco perche' vengono generati.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'UTF8 mi sembra necessario. Poi dovresti fare un po' di debugging sulla scheda del Micro (magari facendo una prova a ritrasmettere i dati appena ricevuti). Come ulteriore passo, si dovrebbe dare un'occhiata approfondita al codice del micro.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    13
    Risolto: Errore dovuto all'adattatore tra processore e porta COM del PC...
    Grazie = !!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.