VB.net 串口传送回数据处理的问题使用委托方式处理:
Public Class Form1
Dim mSTR As String
Dim strData As String
Dim strDat As String
【vb.net串口委托 vb串口接收程序】Dim mRecvByte() As Byte
Dim Hexsj As String
Dim form2 As Form
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim mSize As Integer = Me.SerialPort1.BytesToRead
ReDim mRecvByte(mSize - 1)
SerialPort1.Read(mRecvByte, 0, mSize)
BeginInvoke(New EventHandler(AddressOf ONMLoadA), SerialPort1.BytesToRead()) '使用委托方式显示接收到的字符串
End Sub
Sub ONMLoadA(ByVal sender As System.Object, ByVal e As System.EventArgs) '委托
strDat = ""
TextBox1.Text = ""
Dim i As Integer
For i = 0 To UBound(mRecvByte) 'mSize - 1
strData = https://www.04ip.com/post/strDataIIf(mRecvByte(i)15, Hex(mRecvByte(i)),"0"Hex(mRecvByte(i)))" "
Next
Dim sj As Byte
For i = 1 To Len(strData) Step 3 '处理为ASCII字符
sj = Val("H"Mid(strData, i, 2))
If sj32 Or sj128 Then '当接收字节中有Chr(0)时,其后字符被切割
strDat = strDat"."
Else
strDat = strDatChr(sj)
End If
Next
TextBox1.Text = strDat '显示字符
TextBox2.Text = strData '显示为16进制
TextBox3.Text = Len(strData) / 3
End Sub
vb.net SerialPort控件接收数据问题,用串口调试助手发数据 , 只有第一次可以正常接收你定义的委托需要带参数才行,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
VB与VB.NET串口及以太网通迅关于串口通讯的问题:
很明显,你还不知道(不会、不习惯)使用事件驱动的方式接收数据 。
建议你仔细看看串口组件(无论VB6还是VB.net)的OnComm事件 , 你的问题很容易解决 。
关于以太网通讯:
在TCP通讯中端口确实可以重用,你百度一下“TCP端口重用”能查到很多示例 。
但绝大多数情况下不推荐端口重用,而应该采取服务器端建立连接池的方法 。
或者,干脆不用TCP,用UDP解决也可以 。
VB.NET SerialPort 串口DataReceived事件 , 超过五十分钟后无法触发一般是数据线vb.net串口委托的问题(是不是USB转232vb.net串口委托的vb.net串口委托 , 如果是vb.net串口委托,长时间测试一定要用上100元/条的那种线)
vb.net 中在模块(module)里如何实现委托委托三个步骤
1、声明委托用Delegate 声明一个委托 类型参数要和 被委托的方法一样例如Delegate Function a(byval x as string)as string
2、实例化委托dimt as new a(AddressOfFunction Name)
3.通过 t(参数)或者t.Invoke(参数调用委托)
示例:
Module module1
Delegate Function a(ByVal x As Integer, ByVal y As Integer) As Integer'声明委托类型 委托可以使一个对象调用另一个对象的方法
Function sum(ByVal x As Integer, ByVal y As Integer) As Integer
Return (x + y)
End Function
Sub main()
Dim d As New a(AddressOf sum)'实例化委托
Dim s = 0
s = d.Invoke(1, 2)'执行委托
推荐阅读
- 手机钉钉直播课怎么发图片,钉钉直播课怎么上传图片
- 手机怎么提供电脑流量数据,手机怎么给电脑流量
- win7如何更改word图标,修改桌面word文档图标
- html5怎么让整个页面居中显示,html网页制作怎么设置居中
- linux挂载命令配置 linux挂载命令怎么理解
- 两千价位吃鸡显卡怎么样,现在吃鸡显卡一般要什么价位
- u8与sap,u8与sap区别
- vb.net大型项目 vbnet datagrid
- jquery获取form参数乱码,jquery form validate