PORTA SERIAL RS232
Tudo bem galera? Estou com uma duvida referente a uma comunicaçao RS232, preciso enviar o comando Pn1 para uma balança este comando me retornará o valor do peso, Porem não esta funcionando muito bem. Já configurei tanto na balança quanto no software e esta tudo correto.
Estou tentando da seguinte forma:
Private Sub LeBalanca()
Dim A As String
Dim B As String
SerialPort1.Open()
SerialPort1.WriteLine([Ô]Pn1[Ô] & vbCr)
Do
A = SerialPort1.ReadChar
B = B + Chr(A)
If Chr(A) = [Ô]g[Ô] Then
If Len(B) < 7 Then
Exit Do
End If
TextBox1.Text = B
TextBox2.Text = Trim(Mid(B, 1, Len(B) - 1))
TextBox3.Text = Val(TextBox2.Text)
B = [Ô][Ô]
Exit Do
End If
Loop
SerialPort1.Close()
Estou tentando da seguinte forma:
Private Sub LeBalanca()
Dim A As String
Dim B As String
SerialPort1.Open()
SerialPort1.WriteLine([Ô]Pn1[Ô] & vbCr)
Do
A = SerialPort1.ReadChar
B = B + Chr(A)
If Chr(A) = [Ô]g[Ô] Then
If Len(B) < 7 Then
Exit Do
End If
TextBox1.Text = B
TextBox2.Text = Trim(Mid(B, 1, Len(B) - 1))
TextBox3.Text = Val(TextBox2.Text)
B = [Ô][Ô]
Exit Do
End If
Loop
SerialPort1.Close()
Você cita já haver configurado tanto na balança quanto no software, e isso significa, creio, que já verificou as propriedades da porta (BaudRate, Parity etc) no manual da balança e as mapeou na SerialPort1, certo?
E ainda, confirmou que a porta não está aberta, antes de tentar abrir na rotina acima, certo?
E se sim, qual é o retorno que está obtendo, ao ler?
Por outro lado, caso não tenha ainda configurado, tente uma rotina como:
Valew!
E ainda, confirmou que a porta não está aberta, antes de tentar abrir na rotina acima, certo?
E se sim, qual é o retorno que está obtendo, ao ler?
Por outro lado, caso não tenha ainda configurado, tente uma rotina como:
...
Try
If SerialPort1.IsOpen = True Then SerialPort1.Close()
SerialPort1.BaudRate = Integer.Parse( seuValorBaudRate )
SerialPort1.DataBits = Integer.Parse( seuValorDataBits )
SerialPort1.StopBits = DirectCast([Enum].Parse(GetType(StopBits), SeuValorStopBits), StopBits)
SerialPort1.Parity = DirectCast([Enum].Parse(GetType(Parity), SeuValorParity), Parity)
SerialPort1.PortName = NomeDaPorta
SerialPort1.Open()
Catch ex As Exception
MessageBox.Show ex.Message
End Try
...
Valew!
Repare que você está usando o WriteLine, que por padrão envia não só o texto passado mas também um Line Feed e um Carriage Return, se você precisa enviar exatamente [Ô]Pn1[Ô] & vbCr então eu diria para não usar o WriteLine e sim o Write
Tópico encerrado , respostas não são mais permitidas