📄 frmdatacollect1.vb
字号:
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 14)
Me.BackColor = System.Drawing.Color.AliceBlue
Me.ClientSize = New System.Drawing.Size(1028, 746)
Me.Controls.Add(Me.BtnShow)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ComboBox1)
Me.Controls.Add(Me.BtnEnd)
Me.Controls.Add(Me.BtnStart)
Me.Controls.Add(Me.GridControl1)
Me.Name = "FrmDataCollect1"
Me.Text = "数据实时采集"
Me.WindowState = System.Windows.Forms.FormWindowState.Maximized
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.DataSet11, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub FrmDataCollect1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If conn.State <> ConnectionState.Open Then
conn.Open()
End If
SelectCmd = "select value from canshu where name='col_time'"
Cmd = New OracleCommand(SelectCmd, conn)
myDatareader = Cmd.ExecuteReader
Cmd = Nothing
While myDatareader.Read
Timer1.Interval = myDatareader.Item(0) * 1000
End While
Station_Show = 1
BindAdd()
Dim ServerIP As IPAddress
ServerIP = IPAddress.Parse(IP)
Dim RemoteEP As New IPEndPoint(ServerIP, DuanKou)
data_index = 0
arConnect = clientSocket.BeginConnect(RemoteEP, AddressOf Connected, clientSocket)
ReDim SendBuffer(3)
SendBuffer(2) = "&H02"
End Sub
Private Sub BindAdd()
SelectCmd = "SELECT STATION_NUM, WAY, CURRENT_DATA, PREVIOUS_DATA, SET_DATA, SET_TIME FROM DATA_COLLECT WHERE STATION_NUM=" & Station_Show
myAdapter = New OracleDataAdapter(SelectCmd, conn)
DataSet11.DATA_COLLECT.Clear()
myAdapter.Fill(DataSet11.DATA_COLLECT)
GridControl1.DataSource = DataSet11.DATA_COLLECT
End Sub
Private Sub BindClear()
DataSet11.Clear()
GridControl1.DataBindings.Clear()
End Sub
Private Sub Connected(ByVal ar As IAsyncResult)
'Bsend.Enabled = True
MsgBox("网络连接成功!")
End Sub
Protected Overrides Sub Finalize()
clientSocket.EndConnect(arConnect)
clientSocket.Close()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
'SendBuffer = System.Text.Encoding.ASCII.GetBytes(TxtInput.Text)
SendBuffer(0) = "&H55"
SendBuffer(1) = "&H55"
If SendBuffer(2) = "&H02" Then
SendBuffer(2) = "&H01"
ElseIf SendBuffer(2) = "&H01" Then
SendBuffer(2) = "&H02"
End If
SendBuffer(3) = "&H22"
Try
clientSocket.BeginSend(SendBuffer, 0, SendBuffer.Length, SocketFlags.None, AddressOf SendComplete, clientSocket)
Catch ex As Exception
MsgBox("网络地址出错或网络连写出现故障!")
End Try
'SendBuffer(0) = "&H55"
'SendBuffer(1) = "&H55"
'SendBuffer(2) = "&H02"
'SendBuffer(3) = "&H22"
'clientSocket.BeginSend(SendBuffer, 0, SendBuffer.Length, SocketFlags.None, AddressOf SendComplete, clientSocket)
'clientSocket.BeginReceive(ReceiveBuffer, 0, 1000, SocketFlags.None, AddressOf getData, clientSocket)
End Sub
Private Sub SendComplete(ByVal ar As IAsyncResult)
clientSocket.EndSend(ar)
clientSocket.BeginReceive(ReceiveBuffer, 0, 1000, SocketFlags.None, AddressOf getData, clientSocket)
End Sub
Private Sub getData(ByVal ar As IAsyncResult)
clientSocket.EndReceive(ar)
If ReceiveBuffer(0) = &H55 And ReceiveBuffer(1) = &H55 And ReceiveBuffer(2) = &H55 Then
Station = "&H" & ReceiveBuffer(3)
If conn.State <> ConnectionState.Open Then
conn.Open()
End If
SelectCmd = "select * from data_collect where station_num=" & Station
Cmd = New OracleCommand(SelectCmd, conn)
myDatareader = Cmd.ExecuteReader
Cmd = Nothing
While myDatareader.Read
UpdateCmd = "update data_collect set previous_data=" & myDatareader.Item("current_data") & " where station_num=" & Station & " and way=" & myDatareader.Item("way")
Cmd = New OracleCommand(UpdateCmd, conn)
Cmd.ExecuteNonQuery()
Cmd = Nothing
End While
SelectCmd = "select * from data_collect where station_num=" & Station
Cmd = New OracleCommand(SelectCmd, conn)
myDatareader = Cmd.ExecuteReader
Cmd = Nothing
If myDatareader.Read Then
For i = 1 To 24
Number = ReceiveBuffer(4 * i) + (ReceiveBuffer(4 * i + 1)) * 256 + (ReceiveBuffer(4 * i + 2)) * 65536 + (ReceiveBuffer(4 * i + 3)) * 16777216
UpdateCmd = "update data_collect set current_data=" & Number & " where station_num=" & Station & " and way=" & i
Cmd = New OracleCommand(UpdateCmd, conn)
Cmd.ExecuteNonQuery()
Cmd = Nothing
Next
Else
For i = 1 To 24
Number = ReceiveBuffer(4 * i) + (ReceiveBuffer(4 * i + 1)) * 256 + (ReceiveBuffer(4 * i + 2)) * 65536 + (ReceiveBuffer(4 * i + 3)) * 16777216
InsertCmd = "insert into data_collect(station_num,way,current_data) values (" & Station & "," & i & "," & Number & ")"
Cmd = New OracleCommand(InsertCmd, conn)
Cmd.ExecuteNonQuery()
Cmd = Nothing
Next
End If
End If
'ReceiveBuffer.Clear(ReceiveBuffer, 0, 10000)
'If SendBuffer(2) = "&H01" Then
' SendBuffer(0) = "&H55"
' SendBuffer(1) = "&H55"
' SendBuffer(2) = "&H02"
' SendBuffer(3) = "&H22"
' clientSocket.BeginSend(SendBuffer, 0, SendBuffer.Length, SocketFlags.None, AddressOf SendComplete, clientSocket)
'End If
If Station = Station_Show Then
BindClear()
BindAdd()
End If
End Sub
Private Sub BtnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStart.Click
Timer1.Enabled = True
End Sub
Private Sub BtnEnd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEnd.Click
Timer1.Enabled = False
End Sub
Private Sub BtnShow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnShow.Click
Station_Show = ComboBox1.Text
BindClear()
BindAdd()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
clientSocket.BeginReceive(ReceiveBuffer, 0, 1000, SocketFlags.None, AddressOf getData, clientSocket)
'data_index = DataIndex
BindClear()
BindAdd()
End Sub
Private Sub FrmDataCollect1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
clientSocket.Close()
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
ReDim SendBuffer(3)
SendBuffer(0) = "&H55"
SendBuffer(1) = "&H55"
SendBuffer(2) = "&H01"
SendBuffer(3) = "&H22"
clientSocket.BeginSend(SendBuffer, 0, SendBuffer.Length, SocketFlags.None, AddressOf SendComplete, clientSocket)
'SendBuffer(0) = "&H55"
'SendBuffer(1) = "&H55"
'SendBuffer(2) = "&H02"
'SendBuffer(3) = "&H22"
'clientSocket.BeginSend(SendBuffer, 0, SendBuffer.Length, SocketFlags.None, AddressOf SendComplete, clientSocket)
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -