level 1
蓝梦妖蝶
楼主
做一个上位机程序。
每隔10ms读一次数。然后经过很复杂的运算,把结果打印出来。
现在问题是
1,算的速度不一致,有时快有时慢
2,随着数据增多,速度变的是越来越慢
代码:
开了一个线程,线程函数:
Private Sub FindPD()
‘一些初值设置
COM_SEND_data("F00100")
COM_SEND_data("F00753")
Do
COM_SEND_data("FB01")
Threading.Thread.Sleep(1)
COM_SEND_data("FB10")
Dim set0_in0_str As String = ""
Dim set1_in0_str As String = ""
Dim set0_in1_str As String = ""
Dim set1_in1_str As String = ""
If GN_ChkCOM.Checked Then
If GN_ChkIIC.Checked Then 'E0 mod
Else
If PI_chkMCU.Checked Then
Dim seloffset_str_list() As Integer = USB_readFast("FD", "04", 10)
For i = 0 To 7
offset_str(i) = DecToHex(seloffset_str_list(i), 2)
Next
Else
COM_SEND_data("F00107")
Dim seloffset_str_list() As Integer = USB_readFast("F2", "30", 10)
For i = 0 To 7
offset_str(i) = DecToHex(seloffset_str_list(i), 2)
Next
End If
End If
End If
seloffset = StrToDou64_test(offset_str)‘复杂计算’
Dim m_real As Double = GN_m_RX / 2 ^ 28
seloffset = (seloffset * (GN_divin_RX / GN_fin_RX) / m_real) * 10 ^ 3
If maxpd < seloffset Or maxpd = 0 Then
maxpd = seloffset
End If
If minpd > seloffset Or minpd = 0 Then
minpd = seloffset
End If
PI_txtOS_max.Text = maxpd
PI_txtOS_min.Text = minpd
GN_txtResultStr.Text = GN_txtResultStr.Text & Math.Round(seloffset, 6).ToString() + vbCrLf '会越来越慢
Dim time As Int16 = Val(PI_txtOStime.Text)
If time > 6 Then
Threading.Thread.Sleep(time - 5)
ElseIf time < 6 Then
MsgBox("the time interval must >6ms!")
Exit Sub
End If
Loop
End Sub
2019年02月28日 07点02分
1
每隔10ms读一次数。然后经过很复杂的运算,把结果打印出来。
现在问题是
1,算的速度不一致,有时快有时慢
2,随着数据增多,速度变的是越来越慢
代码:
开了一个线程,线程函数:
Private Sub FindPD()
‘一些初值设置
COM_SEND_data("F00100")
COM_SEND_data("F00753")
Do
COM_SEND_data("FB01")
Threading.Thread.Sleep(1)
COM_SEND_data("FB10")
Dim set0_in0_str As String = ""
Dim set1_in0_str As String = ""
Dim set0_in1_str As String = ""
Dim set1_in1_str As String = ""
If GN_ChkCOM.Checked Then
If GN_ChkIIC.Checked Then 'E0 mod
Else
If PI_chkMCU.Checked Then
Dim seloffset_str_list() As Integer = USB_readFast("FD", "04", 10)
For i = 0 To 7
offset_str(i) = DecToHex(seloffset_str_list(i), 2)
Next
Else
COM_SEND_data("F00107")
Dim seloffset_str_list() As Integer = USB_readFast("F2", "30", 10)
For i = 0 To 7
offset_str(i) = DecToHex(seloffset_str_list(i), 2)
Next
End If
End If
End If
seloffset = StrToDou64_test(offset_str)‘复杂计算’
Dim m_real As Double = GN_m_RX / 2 ^ 28
seloffset = (seloffset * (GN_divin_RX / GN_fin_RX) / m_real) * 10 ^ 3
If maxpd < seloffset Or maxpd = 0 Then
maxpd = seloffset
End If
If minpd > seloffset Or minpd = 0 Then
minpd = seloffset
End If
PI_txtOS_max.Text = maxpd
PI_txtOS_min.Text = minpd
GN_txtResultStr.Text = GN_txtResultStr.Text & Math.Round(seloffset, 6).ToString() + vbCrLf '会越来越慢
Dim time As Int16 = Val(PI_txtOStime.Text)
If time > 6 Then
Threading.Thread.Sleep(time - 5)
ElseIf time < 6 Then
MsgBox("the time interval must >6ms!")
Exit Sub
End If
Loop
End Sub
