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