读书人

vb的serialport有关问题

发布时间: 2012-03-11 18:15:39 作者: rapoo

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进制的字符!

读书人网 >VB Dotnet

热点推荐