把你的控件 继承Panel类,而不要集成UserControl类。
创新互联于2013年创立,先为宝鸡等服务建站,宝鸡等地企业,进行企业商务咨询服务。为宝鸡企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
你可以在集成Panel后,往Panel里面加一些你自己的方法或Control来实现你需要的功能。向里面拖控件的功能则由Panel来控制,你自己就不用管了。
你定义的委托需要带参数才行,DataReceived事件中没有接收数据代码,下面的代码经测试可用
Delegate Sub SetTextCallback(ByVal InputString As String)
Private Sub ShowString(ByVal comData As String)
txt_Rect.Text += comData '将收到的数据入接收文字框中
txt_Rect.SelectionStart = txt_Rect.Text.Length
txt_Rect.ScrollToCaret()
End Sub
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim inData As String = SerialPort1.ReadExisting
Dim d As New SetTextCallback(AddressOf ShowString)
BeginInvoke(d, inData)
End Sub
应该是你的转换格式不正确,下面代码就是将文本框中以一个空格隔开的十六进制转为字节的代码,文本框中数字格式为:01 02 03
Dim TestArray() As String = Split(TextBox1.Text)
Dim hexBytes() As Byte
ReDim hexBytes(TestArray.Length - 1)
Dim i As Integer
For i = 0 To TestArray.Length - 1
hexBytes(i) = Val("h" TestArray(i))
Next
SerialPort.Write(hexBytes, 0, hexBytes.Length)
如果有问题可以再联系。
n = SerialPort1.BytesToRead '读取字节数 If n 0 Then '若字节数大于0.则执行以下操作
ReDim rc(n) '重新定义rc的长度,(之前有定义过)
strrc = 0 '变量类型为字符串(string),一开始使它为0
For i = 1 To n
rc(i) = SerialPort1.ReadByte ‘读取数据
strrc += CStr(Hex(rc(i))) '这里Hex 函数 返回表示数的十六进制值的字符串
'CStr 函数 返回已被转换为字符串子类型的变体的表达式。
Next
TextBox1.Text = strrc '将strrc的值付给TextBox1.Text即可
End If
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款