RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
关于vb.net通讯测试代码的信息

VB.NET用子线程进行大批量数据传输,UI卡死,请高手指教。代码如下

试试这个怎么样,添加在子进程里面,就加在你批量传输代码里的每一个传输后面,也就是大批量中的每传输一个数据就暂停一下,而不是每一个大批量才暂停一下

在思明等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供做网站、成都网站建设 网站设计制作按需求定制开发,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,外贸网站制作,思明网站建设费用合理。

System.Threading.Thread.Sleep(10) '让它走慢一点

能给我发个VB与三菱PLC通讯的源代码实例吗,非常感谢啊

得说明是什么型号的PLC啊,串口还是网口,VB6还是VB.NET?

算了,写段代码,VB.NET与Q系列以太网通讯的:

Imports System.Net

Imports System.Runtime.InteropServices

Public Class Form1

Dim Handle1 As Int32

Dim EntLink1 As Boolean

Dim ScanCount1 As Long

Dim PLC As New EntQsPlc_Asc.PlcClient'EntQsPlc_ASC.DLL是Q系列以太网通讯组件

Public Declare Function timeGetTime Lib "winmm.dll" () As UInt32

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.CenterToScreen()

cmbReadMry.Items.Clear()

cmbReadMry.Items.Add("X")

cmbReadMry.Items.Add("Y")

cmbReadMry.Items.Add("M")

cmbReadMry.Items.Add("D")

cmbReadMry.Items.Add("R")

cmbReadMry.Items.Add("Z")

'

cmbWriteMry.Items.Clear()

cmbWriteMry.Items.Add("X")

cmbWriteMry.Items.Add("Y")

cmbWriteMry.Items.Add("M")

cmbWriteMry.Items.Add("D")

cmbWriteMry.Items.Add("R")

cmbWriteMry.Items.Add("Z")

'

cmbBitMry.Items.Clear()

cmbBitMry.Items.Add("X")

cmbBitMry.Items.Add("Y")

cmbBitMry.Items.Add("M")

'

cmbReadType.Items.Clear()

cmbReadType.Items.Add("INT16")

cmbReadType.Items.Add("UINT16")

cmbReadType.Items.Add("DINT32")

cmbReadType.Items.Add("HEX32")

cmbReadType.Items.Add("REAL32")

cmbReadType.Items.Add("BIN16")

'

cmbWriteType.Items.Clear()

cmbWriteType.Items.Add("INT16")

cmbWriteType.Items.Add("UINT16")

cmbWriteType.Items.Add("DINT32")

cmbWriteType.Items.Add("HEX32")

cmbWriteType.Items.Add("REAL32")

cmbWriteType.Items.Add("BIN16")

cmbReadMry.SelectedIndex = 3

cmbWriteMry.SelectedIndex = 3

cmbBitMry.SelectedIndex = 2

cmbReadType.SelectedIndex = 0

cmbWriteType.SelectedIndex = 0

lstRead.Items.Clear()

txtWrite.Text = ""

'

cmbCmdType.SelectedIndex = 0

End Sub

Private Sub butLink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLink.Click

Dim re As Short

Dim restr As String = ""

re = PLC.EntLink(Trim(txtLocalIP.Text), Val(txtLocalPort.Text), Trim(txtRemoteIP.Text), Val(txtRemotePort.Text), "DEMO", Handle1, 1000, CBool(cmbCmdType.SelectedIndex))

txtReLink.Text = re.ToString

If re = 0 Then

EntLink1 = True

MsgBox("PLC联接成功! ")

Else

EntLink1 = False

MsgBox("PLC联接失败: "  restr)

End If

End Sub           

Private Sub butClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butClose.Click

Dim re As Short

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

re = PLC.DeLink(Handle1)

txtReClose.Text = re.ToString

End Sub

Private Sub butRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butRead.Click

Dim re As Short

Dim i As Short

Dim RD() As Object

ReDim RD(Val(txtReadCnt.Text - 1))

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

' Exit Sub

End If

Dim mry As EntQsPlc_Asc.PlcClient.PlcMemory = cmbReadMry.SelectedIndex + 1

Dim typ As EntQsPlc_Asc.PlcClient.DataType = cmbReadType.SelectedIndex + 1

re = PLC.CmdRead(Handle1, mry, typ, CInt(txtReadAdd.Text), CUShort(txtReadCnt.Text), RD)

txtReRead.Text = re.ToString

lstRead.Items.Clear()

For i = 0 To UBound(RD) Step 1

If Not IsNothing(RD(i)) Then lstRead.Items.Add(RD(i))

Next i

If re  0 Then

Timer1.Enabled = False

butScan.Text = "Cycle R/W"

End If

End Sub

Private Sub butWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butWrite.Click

Dim re As Short

Dim i As Short

Dim temp() As String

Dim WD() As Object

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

ReDim WD(Val(txtWriteCnt.Text) - 1)

temp = Split(txtWrite.Text, vbCrLf)

For i = 0 To UBound(WD) Step 1

If i  UBound(temp) Then

WD(i) = 0

Else

WD(i) = Trim(temp(i))

End If

Next i

Dim mry As EntQsPlc_Asc.PlcClient.PlcMemory = cmbWriteMry.SelectedIndex + 1

Dim typ As EntQsPlc_Asc.PlcClient.DataType = cmbWriteType.SelectedIndex + 1

re = PLC.CmdWrite(Handle1, mry, typ, CInt(txtWriteAdd.Text), CUShort(txtWriteCnt.Text), WD)

txtReWrite.Text = re.ToString

If re  0 Then

Timer1.Enabled = False

butScan.Text = "Cycle R/W"

End If

End Sub

Private Sub butScan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butScan.Click

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

Timer1.Enabled = Not Timer1.Enabled

If Timer1.Enabled Then

ScanCount1 = 0

butScan.Text = "Stop R/W"

Else

butScan.Text = "Cycle R/W"

End If

End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

Timer1.Enabled = False

Dim tim As Integer = timeGetTime

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

'

Call butRead_Click(Nothing, Nothing)

Call butWrite_Click(Nothing, Nothing)

'

If (Val(txtReRead.Text)  0) Or (Val(txtReWrite.Text)  0) Then

butScan.Text = "Cycle R/W"

Exit Sub

Else

ScanCount1 += 1

txtScanCnt.Text = ScanCount1

txtScanPrd.Text = (timeGetTime - tim)  "ms"

End If

Timer1.Enabled = True

End Sub

Private Sub butBitTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitTest.Click

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

Dim rd As Boolean

Dim re As Short

Dim mry As EntQsPlc_Asc.PlcClient.PlcMemory = cmbBitMry.SelectedIndex + 1

re = PLC.Bit_Test(Handle1, mry, CUShort(txtBitAdd.Text), rd)

txtBitTest.Text = rd

txtReBit.Text = re

End Sub

Private Sub butBitSet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitSet.Click

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

Dim re As Short

re = PLC.Bit_Set(Handle1, cmbBitMry.SelectedIndex + 1, Val(txtBitAdd.Text))

txtReBit.Text = re

End Sub

Private Sub butBitRst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butBitRst.Click

If Not EntLink1 Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

Dim re As Short

re = PLC.Bit_Reset(Handle1, cmbBitMry.SelectedIndex + 1, Val(txtBitAdd.Text))

txtReBit.Text = re

End Sub

End Class

VB.NET中如何处理串口通信接收的数据?

你可以预先约定一个截止附,读取的字节统统放到缓存区里,直到读到截止附再处理、显示。

谁有VB和OMRON PLC 通信例子啊?能否发个原始代码? 再次特别感谢!

提供一个VB.NET与OMRON以太网通讯的代码,是我项目里面复制出来的:

Dim Handle1 As Int32 'PLC的连接句柄

Dim EntLink As Boolean '连接标志

Dim PLC As New FinsTcp.PlcClient '引用OMRON的通讯组件

Private Sub butLink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butLink.Click

Dim re As Short

Dim restr As String = ""

re = PLC.EntLink(Trim(txtLocalIP.Text), Val(txtLocalPort.Text), Trim(txtRemoteIP.Text), Val(txtRemotePort.Text), "DEMO", Handle1)

txtReLink.Text = re.ToString

If re = 0 Then

EntLink = True

MsgBox("PLC联接成功! ")

Else

EntLink = False

MsgBox("PLC联接失败: "  restr)

End If

End Sub

Private Sub butClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butClose.Click

Dim re As Short

EntLink = False

re = PLC.DeLink(Handle1)

txtReClose.Text = re.ToString

End Sub

Private Sub butRead_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butRead.Click

Dim re As Short

Dim i As Short

Dim RD() As Object

ReDim RD(Val(txtReadCnt.Text - 1))

If Not EntLink Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

Dim mry As FinsTcp.PlcClient.PlcMemory = cmbReadMry.SelectedIndex + 1

Dim typ As FinsTcp.PlcClient.DataType = cmbReadType.SelectedIndex + 1

re = PLC.CmdRead(Handle1, mry, typ, CUShort(Val(txtReadAdd.Text)), CUShort(Val(txtReadCnt.Text)), RD)

txtReRead.Text = re.ToString

lstRead.Items.Clear()

For i = 0 To UBound(RD) Step 1

If Not IsNothing(RD(i)) Then lstRead.Items.Add(RD(i))

Next i

If re  0 Then

Timer1.Enabled = False

butScan.Text = "Cycle R/W"

End If

End Sub

Private Sub butWrite_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butWrite.Click

Dim re As Short

Dim i As Short

Dim temp() As String

Dim WD() As Object

If Not EntLink Then

MsgBox("还未与PLC建立联接!")

Exit Sub

End If

ReDim WD(Val(txtWriteCnt.Text) - 1)

temp = Split(txtWrite.Text, vbCrLf)

For i = 0 To UBound(WD) Step 1

If i  UBound(temp) Then

WD(i) = 0

Else

WD(i) = Trim(temp(i))

End If

Next i

Dim mry As FinsTcp.PlcClient.PlcMemory = cmbWriteMry.SelectedIndex + 1

Dim typ As FinsTcp.PlcClient.DataType = cmbWriteType.SelectedIndex + 1

re = PLC.CmdWrite(Handle1, mry, typ, CUShort(Val(txtWriteAdd.Text)), CUShort(Val(txtWriteCnt.Text)), WD)

txtReWrite.Text = re.ToString

If re  0 Then

Timer1.Enabled = False

butScan.Text = "Cycle R/W"

End If

End Sub

VB.net串口通讯接收数据写法

Do

Application.DoEvents()

Loop Until MSComm1.InBufferCount = 13

Dim a As String = MSComm1.Input

Label1.Caption = a.Substring(1, 9)

Label2.Caption = a.Substring(10, 3)

用vb.net实现网络通信

用 vb.net socket通信

Dim th As Threading.Thread

2 Dim tcpl As System.Net.Sockets.TcpListener

3

4 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

5 th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))

6 th.Start()

7 End Sub

8

9 Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)

10 Try

11 If IP "" Then

12 Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)

13 Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream

14 Dim reqStream As New IO.StreamWriter(tcpStream)

15 reqStream.Write(SendMsg)

16 reqStream.Flush()

17 tcpStream.Close()

18 tcpc.Close()

19 End If

20 Catch ex As Exception

21 MsgBox(ex.Message.ToString)

22 End Try

23 End Sub

24 Private Sub MyListen()Sub MyListen()

25 Try

26 Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)

27 tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)

28 tcpl.Start()

29 While True

30 Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()

31 Dim MyBuffer(1024) As Byte

32 Dim i As Integer

33 i = s.Receive(MyBuffer)

34 If i 0 Then

35 Dim lstrRec As String

36 Dim j As Integer

37 For j = 0 To i - 1

38 TextBox1.Text += Chr(MyBuffer(j)) ","

39 Next

40 End If

41 End While

42 Catch ex As Exception

43 MsgBox(ex.Message.ToString)

44 End Try

45 End Sub

46

47 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

48 SendMessage("192.168.0.61", TextBox2.Text)

49 End Sub


网站名称:关于vb.net通讯测试代码的信息
转载来源:http://cqwzjz.cn/article/hecegp.html