Ho provato ad utilizzare la classe SerialPort inserendo l'oggetto SerialPort1 in un form che ho chiamato Main. All'interno dello stesso form ho inserito l'oggetto Timer1 in modo tale che il l'avvio dell'applicazione non coincidesse con l'invio della stringa e un oggetto Button1 che permetta il reinvio della stringa attraverso il riavvio del timer. Di seguito il codice:
Il costrutto DO-LOOP per il momento l'ho tralasciato.codice:Imports System Imports System.IO.Ports Public Class Main Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e _ As System.EventArgs) Handles ExitToolStripMenuItem.Click End End Sub Private Sub Main_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load With SerialPort1 .BaudRate = 9600 .DataBits = 8 .Parity = Parity.None .StopBits = StopBits.One .ReceivedBytesThreshold = 1 .Handshake = Handshake.None .Encoding = System.Text.Encoding.Default End With SerialPort1.Open() Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Timer1.Tick Timer1.Stop() SerialPort1.Write(Chr(&H55) & Chr(&H80) & Chr(&H80) & Chr(&H3)) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles Button1.Click Timer1.Start() End Sub End Class
PROBLEMA: inviando la stringa di caratteri Chr(&H55) & Chr(&H80) & Chr(&H80) & Chr(&H3) dovrei ricevere un byte di risposta dal dispositivo... cosa che non accade. In VB6 inviando la stessa stringa di caratteri aggiungendo il carattere "$" dopo il comando Chr (ovvero: Chr$(&H55) & Chr$(&H80) & Chr$(&H80) & Chr$(&H3)) il byte di risposta lo ricevo. VB.NET non consente l'utililzzo del carattere "$" dopo il comando Chr (cacchio!!).
Da ieri sera sono bloccato a questo punto... Ho scaricato un programma per il monitoraggio della comunicazione seriale che mi ha permesso di vedere che i caratteri inviati in un primo momento erano errati. Questo mi ha portato in un secondo momento ad aggiungere la riga di comando:
In questo modo i caratteri inviati coincidono con i caratteri inviati in VB6.codice:.Encoding = System.Text.Encoding.Default
Il problema della ricezione del byte di risposta dal dispositivo, comunque, resta.

Rispondi quotando