After main Window Freeze while updating File using following code. Data Received every 200msec. Only freeze hen stored in File other wise application work ok.
Private Sub initCommPort()
If SerialPort1.IsOpen = False Then
SerialPort1.PortName = ListBox1.SelectedItem
SerialPort1.BaudRate = 115200
SerialPort1.Parity = Parity.None
SerialPort1.DataBits = 8
SerialPort1.StopBits = StopBits.One
SerialPort1.ReadTimeout = 100
SerialPort1.DiscardNull = True
Try
SerialPort1.Open()
vcapMin1 = 9999
vcapMax1 = 0
vcapMin2 = 9999
vcapMax2 = 0
Catch ex As Exception
MsgBox(ex.Message)
End Try
End If
End Sub
Private Sub SerialPort_DataReceived(sender As Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
Do
Try
Dim Incoming As String = SerialPort1.ReadLine()
If Incoming Is Nothing Then
Exit Do
Else
Dim packet As String = Incoming
Incoming = Nothing
If (RequestCmd > 0) Then
If SerialPort1.IsOpen = True Then
SerialPort1.Write(Chr(RequestCmd))
System.Diagnostics.Debug.WriteLine("CMD: " & RequestCmd)
RequestCmd = 0
Else
System.Diagnostics.Debug.WriteLine("CMD: " & RequestCmd)
End If
End If
Me.BeginInvoke(New StringSubPointer(AddressOf ProcessData), packet)
End If
Catch ex As Exception
Exit Do
End Try
Loop
End Sub
Private Sub ProcessData(ByVal Buffer As String)
Dim rawLine As String
If Buffer.Length > 0 Then
Select Case Mid(Buffer, 1, 1)
Case "P"
processPonRegs(Buffer)
If (Mid(Buffer, 2, 1) = "1") Then
If (p1Active = True) Then
rawLine = Mid(Buffer, 1, 2) & " " & Mid(Buffer, 3, 16) & " " & Mid(Buffer, 19, 16) & " " & Mid(Buffer, 35, 16) & " " & Mid(Buffer, 51, 16)
storeRawDataLine(rawLine, 2)
rawLine = " " & Mid(Buffer, 67, 16) & " " & Mid(Buffer, 83, 16) & " " & Mid(Buffer, 99, 16) & " " & Mid(Buffer, 115, 16)
storeRawDataLine(rawLine, 3)
End If
Else
If (p2Active = True) Then
rawLine = Mid(Buffer, 1, 2) & " " & Mid(Buffer, 3, 16) & " " & Mid(Buffer, 19, 16) & " " & Mid(Buffer, 35, 16) & " " & Mid(Buffer, 51, 16)
storeRawDataLine(rawLine, 4)
rawLine = " " & Mid(Buffer, 67, 16) & " " & Mid(Buffer, 83, 16) & " " & Mid(Buffer, 99, 16) & " " & Mid(Buffer, 115, 16)
storeRawDataLine(rawLine, 5)
End If
End If
Case "T"
My.Computer.FileSystem.WriteAllText("TraceBuffer.txt", Buffer, True)
rawLine = Buffer
filedata = Buffer
storeRawDataLine(rawLine, 6)
TBLine = TBLine + 1
Case Else
If Mid(Buffer, 4, 1) = "S" Then
processStatus(Buffer)
rawLine = Mid(Buffer, 4, 1) & " " & Mid(Buffer, 5, 16) & " " & Mid(Buffer, 21, 16) & " " & Mid(Buffer, 37, 16) & " " & Mid(Buffer, 53, 16)
storeRawDataLine(rawLine, 1)
displaySerialNumber()
displayFirmware()
displayAlarms()
increment(nscans1)
ProgressBar1.Value = nscans1
End If
End Select
End If
End Sub
What I have tried:
Used removed timed data extraction