與語(yǔ)言沒(méi)有關(guān)系, 你需要考慮的是兩個(gè)系統(tǒng)直接如何通訊. 選一種通訊協(xié)議(一般用http協(xié)議), 設(shè)計(jì)好數(shù)據(jù)結(jié)構(gòu), 可以是xml或json. 假設(shè)選用http協(xié)議傳輸json數(shù)據(jù). 你需要做以下工作:
在陸良等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需制作網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè),陸良網(wǎng)站建設(shè)費(fèi)用合理。
使用php開(kāi)發(fā)一個(gè)http接口, 根據(jù)參數(shù)查詢(xún)數(shù)據(jù)庫(kù), 把結(jié)果轉(zhuǎn)換為json格式后返回. 這是目前最流行的接口格式, 基本上所有語(yǔ)言都可以開(kāi)發(fā)和請(qǐng)求這樣的接口, 很多開(kāi)放平臺(tái)都是這樣設(shè)計(jì)接口的, 例如微信的這個(gè)接口,你可以參考一下?網(wǎng)頁(yè)鏈接
使用VB.NET請(qǐng)求這個(gè)接口, 獲取返回的數(shù)據(jù)(json格式, 一個(gè)特殊的字符串), 使用VB.NET對(duì)json數(shù)據(jù)進(jìn)行解碼
所以,要完成這個(gè)工作,你需要知道http接口開(kāi)發(fā)和請(qǐng)求, 以及json編碼和解碼的相關(guān)知識(shí)和技能, 祝你好運(yùn)
用 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
這個(gè)圈里的是通訊過(guò)程中傳送的Asc碼,包含了PLc的站號(hào)地址、指令、起始符等內(nèi)容,具體要看你的PLc通訊協(xié)議。通訊與開(kāi)關(guān)量是兩回事,你得補(bǔ)習(xí)下與通訊相關(guān)的內(nèi)容。
關(guān)于串口通訊的問(wèn)題:
很明顯,你還不知道(不會(huì)、不習(xí)慣)使用事件驅(qū)動(dòng)的方式接收數(shù)據(jù)。
建議你仔細(xì)看看串口組件(無(wú)論VB6還是VB.net)的OnComm事件,你的問(wèn)題很容易解決。
關(guān)于以太網(wǎng)通訊:
在TCP通訊中端口確實(shí)可以重用,你百度一下“TCP端口重用”能查到很多示例。
但絕大多數(shù)情況下不推薦端口重用,而應(yīng)該采取服務(wù)器端建立連接池的方法。
或者,干脆不用TCP,用UDP解決也可以。
Private Sub Form_Load()
With Winsock1
.RemoteHost = "124.135.13.106" '對(duì)方的IP
.RemotePort = 1002 ' 對(duì)方的端口號(hào)
.Bind 1001 ' 本機(jī)的端口號(hào)
End With
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
Winsock1.GetData strData '接收字節(jié)
List1.AddItem strData
End Sub
這個(gè)用UDP進(jìn)行連接的。只不過(guò)是對(duì)單個(gè)機(jī)器進(jìn)行的。