vb的serialport问题!
现在做一个串口程序,怎么也得不到正确数据代码如下:
Imports System.IO.Ports
Public Class serialportform
Dim WithEvents serialPort As New IO.Ports.SerialPort
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For i As Integer = 0 To My.Computer.Ports.SerialPortNames.Count - 1
ComboBox1.Items.Add(My.Computer.Ports.SerialPortNames(i))
Next
PictureBox1.Visible = True
End Sub
Private Sub DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles serialPort.DataReceived
RichTextBox2.Invoke(New myDelegate(AddressOf updateTextBox), New Object() {})
End Sub
Public Delegate Sub myDelegate()
Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
If serialPort.IsOpen Then
serialPort.Close()
End If
Try
With serialPort
.PortName = ComboBox1.Text
.BaudRate = ComboBox2.Text
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.DtrEnable() = True
End With
serialPort.Open()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Public Overridable Function ReadChar() As Char
End Function
Public Sub updateTextBox()
Dim buffer As Char
Dim bufferset As String
bufferset = serialPort.ReadChar(buffer, 0, 6)
With RichTextBox2
.AppendText(bufferset)
.ScrollToCaret()
End With
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Try
serialPort.Write(RichTextBox1.Text)
With RichTextBox1
.ScrollToCaret()
End With
RichTextBox1.Text = String.Empty
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
serialPort.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class
我的问题是:
发个16进制的数据给下位机,可发现得到的是asc吗,这中间怎么转换。还有就是对serialPort.ReadChar(buffer, 0, 6)是怎么用的,是不是还要实例化,才能使用。搞了几天了,也没个眉目,还请高人指点,谢谢!!邮箱是vb2005dotnet@126.com ,
qq:253536744.高分。
我把我的思路大体说下:做个和单片机收发的串口程序,需要发送16进制。1帧6个字节。
[解决办法]
转化成16进制数字,直接char-〉unsigned int即可。
int a=(int) 'a ';
[解决办法]
lz,串口助手的16进制发送不是说你发出去的就会自动帮你转换为16进制,而是支持你发16进制的字符!