試試這個(gè)怎么樣,添加在子進(jìn)程里面,就加在你批量傳輸代碼里的每一個(gè)傳輸后面,也就是大批量中的每傳輸一個(gè)數(shù)據(jù)就暫停一下,而不是每一個(gè)大批量才暫停一下
在思明等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供做網(wǎng)站、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需求定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站制作,思明網(wǎng)站建設(shè)費(fèi)用合理。
System.Threading.Thread.Sleep(10) '讓它走慢一點(diǎn)
得說明是什么型號(hào)的PLC啊,串口還是網(wǎng)口,VB6還是VB.NET?
算了,寫段代碼,VB.NET與Q系列以太網(wǎng)通訊的:
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系列以太網(wǎng)通訊組件
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聯(lián)接成功!?")
Else
EntLink1?=?False
MsgBox("PLC聯(lián)接失敗:?"??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建立聯(lián)接!")
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建立聯(lián)接!")
'?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建立聯(lián)接!")
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建立聯(lián)接!")
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建立聯(lián)接!")
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建立聯(lián)接!")
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建立聯(lián)接!")
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建立聯(lián)接!")
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
你可以預(yù)先約定一個(gè)截止附,讀取的字節(jié)統(tǒng)統(tǒng)放到緩存區(qū)里,直到讀到截止附再處理、顯示。
提供一個(gè)VB.NET與OMRON以太網(wǎng)通訊的代碼,是我項(xiàng)目里面復(fù)制出來的:
Dim?Handle1?As?Int32?'PLC的連接句柄
Dim?EntLink?As?Boolean?'連接標(biāo)志
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聯(lián)接成功!?")
Else
EntLink?=?False
MsgBox("PLC聯(lián)接失敗:?"??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建立聯(lián)接!")
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建立聯(lián)接!")
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
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 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
文章題目:關(guān)于vb.net通訊測試代碼的信息
標(biāo)題路徑:http://vcdvsql.cn/article18/hecegp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、靜態(tài)網(wǎng)站、微信小程序、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)