Ik heb een probleempje met een stuk logsoftware wat ik wil gaan maken voor het uitlezen van mijn Soladin 600 omvormer. Ik krijg wel data terug van de Soladin alleen is de data die ik terugkrijg regelmatig leeg ( 31 bytes &h00 ) of de input die ik krijg is precies 1 byte verschoven. Ik verwacht in het begin 00 00 11 hex maar soms krijg ik 00 00 00 11 hex.
Uitlezen doe ik dmv een click op een button.
Code voor het versturen van de instructie.
Ontvangen gebeurd zo.
Waarom is de output af en toe 00 00 00 00 etc. en waarom verschuift de output af en toe 1 byte? Er komt als het goed is altijd 31 bytes binnen wanneer commando B6 wordt gegeven aan de Soladin omvormer.
Uitlezen doe ik dmv een click op een button.
Code voor het versturen van de instructie.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| If Not comportSoladin Is Nothing Then If comportSoladin.isOpen = True Then comportSoladin.ReadTimeout = 200 comportSoladin.WriteTimeout = 100 comportSoladin.ReceivedBytesThreshold = 31 soladinResponse.Clear(soladinResponse, 0, soladinResponse.Length) SoladinOutputTextBox.Text = "" End If 'getting data. comportSoladin.Write(soladinGetValuesCommand, 0, soladinGetValuesCommand.Length) End If |
Ontvangen gebeurd zo.
code:
1
2
3
4
5
6
7
8
9
10
11
12
| Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles comportSoladin.DataReceived Dim bytes As Integer = comportSoladin.BytesToRead Dim comBuffer As Byte() = New Byte(bytes - 1) {} comportSoladin.Read(comBuffer, 0, bytes) soladinResponse = comBuffer Dim hex As String = BitConverter.ToString(soladinResponse) SoladinOutputTextBox.Text = hex End Sub |
Waarom is de output af en toe 00 00 00 00 etc. en waarom verschuift de output af en toe 1 byte? Er komt als het goed is altijd 31 bytes binnen wanneer commando B6 wordt gegeven aan de Soladin omvormer.
Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.