vb.net下位机,vb串口上位机源代码
vb.net 怎么用事件触发的方式读取串口数据
首先:
鹤山网站建设公司创新互联,鹤山网站设计制作,有大型网站制作公司丰富经验。已为鹤山上1000+提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的鹤山做网站的公司定做!
textbox里没有显示,是因为SerialPort1和TextBox2不是同一线程创建的,需要跨线程操作。需要用到委托,这样才能显示出来。
其次:
我觉得用串口的接收数据事件更好一些。
下面代码供参考:
'----------------------
'串口接收数据事件,其实比用定时器更好,
'触发事件的条件可以自己在form_load中设置ReceivedBytesThreshold属性数值,默认为ReceivedBytesThreshold=1
Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Dim strRecvData As String = ""
strRecvData = SerialPort1.ReadExisting
Call disPlayComData(strRecvData)
End Sub
Delegate Sub callback(ByVal strT As String) '定义委托
Sub showString(ByVal comdata As String) '显示结果
Me.TextBox1.Text = "结果:" comdata
End Sub
Sub disPlayComData(ByVal strTmp As String) '判定是否为跨线程
If Me.TextBox1.InvokeRequired Then
Dim d As New callback(AddressOf showString)
Me.Invoke(d, New Object() {strTmp})
Else
Me.TextBox1.Text = strTmp
End If
End Sub
请问各位大侠,利用VB.NET如何实现下位机发送的不短变化的数据,在VB界面上也能自动实时显示。
1、发送数据需要协议支持
自己设计一个协议,协议是什么,是两个通信段之间的约定。比如我说,我打一个奥特曼的手势表示已经看到美女了,这就是一个协议。协议完成将bit转换为对应的含义。
2、需要编程技术的支持
你怎样获取数据,将数据如何处理,怎样保存。这个需要你自己的技术支持,这里的回答没法帮你。花钱报个班吧,如果你还在上大学,那么选个选修课好好听课。下课多做小程序,就会学会了。
VB.NET SerialPort1.ReadLine与SerialPort1.ReadExisting的区别?
看方法名就应该能猜出来了嘛~
ReadLine 只读一行,而 ReadExisting 读取现有的全部。
假如下位机上送了三行数据,ReadExisting会连回车一起全部返回给你。
VB.NET中如何处理串口通信接收的数据?
你可以预先约定一个截止附,读取的字节统统放到缓存区里,直到读到截止附再处理、显示。
VB中,将从下位机读取的数据,用控件的方式画出以时间为横轴的曲线
1.用picturebox 控件可以实现
2.可以使用Scale方法移动坐标原始位置和改变坐标轴方向,以下该方法:
Scale(x1,y1)-(x2,y2)
X1和y1为对象左上角的新坐标位置;
X2和y2为对象右下角的新坐标位置;
现在让我们看看一些范例。这一方法将使原点处于左上角,但将坐标系统单位改变为窗体大小的1/100:
Picture1.Scale(0,0)-(100,100)
以下调用将移动原点到窗体的左下角,并旋转Y轴:
Picture1.Scale(0,100)-(100, 0)
以下调用将移动原点到窗体的正中心,并旋转Y轴,然后将坐标单位转换为窗体大小的1/5000:
Picture1.Scale(-2500,2500)-(2500,2500)
用Picture1.Line (x1,y1)-(x2,y2)
如果不指定(x1,y1)则line方法默认为上次line方法的(x2,y2)为当前line方法(x1,y1)
For i = 1 To 100
j = i + 10
Me.Picture1.Line -(i, j), vbRed '可以指定画线的颜色
Next
3.如果画到最右边的时候,可以清掉picturebox 的内容,从头再画。
给段代码,供参考:
Private Sub Form_Load()
Dim i, j As Integer
Me.Picture1.Scale (0, Me.Picture1.Height)-(Me.Picture1.Width, 0)
Me.Picture1.AutoRedraw = True
Me.Picture1.Line (0, 0)-(0, 0), vbRed
For i = 1 To 1000
j = i + 10
Me.Picture1.Line -(i, j), vbRed
Next
End Sub
我这样画过曲线,大概思路就是这样吧,希望能帮到你
网站名称:vb.net下位机,vb串口上位机源代码
文章URL:http://myzitong.com/article/hssgsi.html