VB NET開發(fā)的簡單上位機程序_第1頁
VB NET開發(fā)的簡單上位機程序_第2頁
VB NET開發(fā)的簡單上位機程序_第3頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、(通用)上位機Public Class Form1/用到的全局變量Public socketi As 套接字Public Class Form1/用到的全局變量Public socketi As 套接字Dim Aip As String該客戶端 ipDim Aport As String該客戶端 portDim fg As Boolean = True它的值表示連接是否正常Dim reg As Boolean = TrueDimfunct As StringDimfunct1 As String= Speed_LocPIDInitDimfunct2 As String= Angle_LocPI

2、DInitDim Acc As Timers.Timer 接受服務器信息的定時器Dim Isone As Boolean = TrueDim Lock_syn As New 線程鎖Dim Send_Timer As Timers.Timer定時發(fā)送消息的定時器Dim end_start As Boolean/按下左上角的X套接字等。Public Sub Ending()Trysocketi.Close() Catch ce As ExceptionEnd TryTryCh.Abort()Catch ex As ExceptionEnd Try TryAcc.Stop()Catch ex As

3、ExceptionEnd Try TryCatch ex As ExceptionEnd Try fg = End Sub/ 定時發(fā)送所調用的過程Public Sub Time_Send()Dim str As String = test & Now().ToString()當前的時間Dim encText As New System.Text.UTF8Encoding()Dim btText() As BytebtText = encText.GetBytes(str)Trysocketi.Send(btText) Catch ie As ExceptionEnd TryEnd Sub/自動

4、檢測連接是否斷開,如果斷開,則一直嘗試重連并且每次重連會顯示出來Public Sub Ch_fun()Dim str As Int32 = 1Dim cf As Int32 = 1While 1Threading.Thread.Sleep(80)If fg = False Then 10035 = WSAEWOULDBLOCKsocketi.Close() Button1.Enabled = True Button2.Enabled = FalseLabel11.Text = 連接斷開,正在重連Dim LocalEndPoint As NewNet.IPEndPoint(Net.IPAddre

5、ss.Parse(Aip), CInt(Aport)Dim client As Net.Sockets.Socket = Nothingclient = New Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp)嘗試重連While 1TryLabel11.Text = 第 & str.ToString() & 次重連str = str + 1client.Connect(LocalEndPoint) sock

6、eti = clientDim tmp(0) As Bytesocketi.Blocking = False socketi.Send(tmp, 0, 0)Label11.Text = 連接正常socketi.Blocking = True Button2.Enabled = Truestr = 1fg = TrueExit WhileCatch ex As ExceptionLabel11.Text = 連接斷開,正在重連Threading.Thread.Sleep(1000)Continue While End TryEnd WhileElseLabel11.Text = 連接正常cf =

7、 cf + 1TextBox10.Text = cf.ToString()End If End WhileEnd Sub接收消息所用的過程Public Sub Task()If fg = False ThenExit SubEnd IfAcc.Enabled = 接受消息可能會堵塞,設置該值是為了防止重復觸發(fā)Dim str As New Text.StringBuilderDim str2 As String = NothingDim str3 As String = Nothing Dim by(100) As ByteDim ch(100) As Char Dim ch1(100) As

8、Char Dim err As Int32Tryerr = socketi.Receive(by)Catch e As Exceptionerr 0 Thenstr.Append(System.Text.ASCIIEncoding.ASCII.GetString(by, 0, by.Length()/Dim str1 As String = str.ToString()TextBox4.AppendText(vbNewLine & str1) TextBox4.ScrollToCaret()ElseIf err = 0 Thenfg = False Acc.Enabled = TrueExit

9、 SubEnd IfAcc.Enabled = TrueEnd Sub/ 連接過程Public Sub connecting()Ending()啟動新連接前把上個連接關閉。fg = TrueDim flag As Int32 = 1Dim Ip As String = Nothing Dim Port As String = NothingIp = TextBox1.Text Aip = IpWhile Ip Is MsgBox(請輸入 Ip 地址, MsgBoxStyle.OkOnly, Me.Text)ReturnEnd WhilePort = TextBox2.Text Aport =

10、PortWhile Port Is MsgBox(請輸入 Port 地址, MsgBoxStyle.OkOnly, Me.Text)Return End While/鏈接代碼Dim LocalEndPoint As New Net.IPEndPoint(Net.IPAddress.Parse(Ip), CInt(Port)Dim client As Net.Sockets.Socket = Nothing client = NewNet.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.S

11、tream, Net.Sockets.ProtocolType.Tcp) This is how youcan determine whether a socket is still connected.Dim blockingState As Boolean = client.Blocking Tryclient.Connect(LocalEndPoint)socketi = client Dim As Byteclient.Blocking = True client.Send(tmp, 0, 0)MsgBox(Connected!)Catch ie As Exception 10035

12、= WSAEWOULDBLOCKMsgBox(connet failed!, please check your Ip, Port, MsgBoxStyle.Exclamation)Button1.Enabled = TrueReturnFinallyclient.Blocking = blockingStateEnd Tryend_start = False client.Blocking = TrueMsgBox(Connected: 0, client.Connected)If flag 1 Then ReturnEnd If初始化 Ch,AccCh = New Threading.Th

13、read(AddressOf Ch_fun) Ch.Start()Acc = New Timers.Timer(80)Send_Timer = New Timers.Timer(FormatNumber(TextBox11.Text() AddHandler Acc.Elapsed, AddressOf TaskAcc.Start()AddHandler Send_Timer.Elapsed, AddressOf Time_Send Send_Timer.Start()End Sub/ 開始時設置默認參數Private Sub Form1_Load(sender As Object, e As

14、 EventArgs) HandlesMyBase.LoadTextBox1.Text = TextBox2.Text = 8888TextBox8.Text = 8TextBox5.Text = 2TextBox6.Text = 60TextBox7.Text = 18TextBox9.Text = 5TextBox11.Text = 500connecting()End Sub/ 連接按鈕觸發(fā)事件Private Sub Button1_Click(sender As Object, e As EventArgs) HandlesButton1.ClickLabel11.T

15、ext = connecting()End Sub/ 發(fā)送按鈕Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.ClickDim str As String = Nothing str = TextBox3.TextIf str Is ThenMsgBox(請輸入數據, MsgBoxStyle.Information)End If/下面注釋的程序是為了獲取服務器返回的參數,可以忽略。Dim fun(40) As CharDim can1(20) As CharDim can2(20) As C

16、harDim can3(20) As CharDim i As Int32 = 0, j As Int32 = 0 Dim size As Int32 = str.LengthWhile i sizeIf str.Chars(i) = (cThenExit WhileEnd Iffun(j) = str.Chars(i) j = j +1i = i + End Whilei = i + 1 j = 0While i sizeIf str.Chars(i) = ,cThenExit WhileEnd Ifcan1(j) = str.Chars(i) j = j +1i = i + End Whi

17、lei = i + 1 j = 0While i sizeIf str.Chars(i) = ,c Or str.Chars(i) = )cThenExit WhileEnd Ifcan2(j) = str.Chars(i)j = j+ 1i = i+ 1EndWhilei = i + 1 j = 0While i sizeIf str.Chars(i) = ,c Or str.Chars(i) = )cThenExit WhileEnd Ifcan3(j) = str.Chars(i) j = j +1i = i + End WhileIf socketi.Connected = False

18、 ThenEnd IfDim str1 As String = TextBox4.TextIf str1 ThenTextBox4.AppendText(vbNewLine & str & vbNewLine)ElseTextBox4.AppendText(str & vbNewLine)End IfTextBox4.ScrollToCaret()End Sub/ 斷開按鈕Private Sub Button3_Click(sender As Object, e As EventArgs) HandlesButton3.ClickTrysocketi.Close()Catch be As Ex

19、ceptionEnd TryTryCh.Abort()Catch ex As ExceptionEnd Try TryAcc.Stop()Catch ex As ExceptionEnd Try TryCatch ex As ExceptionEnd TryMsgBox(連接斷開) reg = TrueButton1.Enabled = True Button2.Enabled = TrueLabel11.Text = 狀態(tài)SyncLock Lock_syn Isone = TrueEnd SyncLockEnd SubPrivate Sub Button4_Click(sender As O

20、bject, e As EventArgs) Handles Button4.ClickDim str1 As String = funct1Dim str2 As String = TextBox8.Text Dim str3 As String = TextBox5.Text Dim str4 As String = TextBox6.Text Dim str5 As Stringstr5 = str1 & ( & str2 & , & str3 & , & str4 & ) & vbNewLine Dim encText As New System.Text.UTF8Encoding()

21、Dim btText() As BytebtText = encText.GetBytes(str5) socketi.Send(btText)Dim s As String = TextBox4.TextTextBox4.AppendText(vbNewLine & str5 & vbNewLine) TextBox4.ScrollToCaret()End SubPrivate Sub TextBox8_TextChanged(sender As Object, e As EventArgs) Handles TextBox8.TextChangedEnd SubPrivate Sub Label4_Click_1(sender As Object, e As EventArgs) Handles Label4.ClickEnd SubPrivate Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChangedEnd SubPri

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論