'AC200控制器串口读取数据代码
Select Case e.Port.PortName
Case vars("com")
Dim cnt As Integer = e.Port.BytesToRead
If cnt = 10 Then '缓冲区是否有数据
Dim Val(cnt - 1) As Byte
e.Port.Read(val,0,cnt)
Dim xy As Decimal
If val(0) = 235 And val(1) = 144 Then
Dim mb,dq As object
mb = DecToBin(val(3)) & DecToBin(val(2))
dq = DecToBin(val(5)) & DecToBin(val(4))
If forms("主窗口").opened Then
Select Case val(7)
Case 1
Forms("主窗口").Controls("zt").text = "减小桨距"
Case 2
Forms("主窗口").Controls("zt").text = "增大桨距"
Case 3
Forms("主窗口").Controls("zt").text = "顺桨增大桨距"
Case 4
Forms("主窗口").Controls("zt").text = "无转速信号"
Case 5
Forms("主窗口").Controls("zt").text = "已到最小桨距"
Case 6
Forms("主窗口").Controls("zt").text = "已到最大桨距"
Case 7
Forms("主窗口").Controls("zt").text = "顺桨桨距限制"
Case 8
Forms("主窗口").Controls("zt").text = "无法低于最小桨距"
Case 9
Forms("主窗口").Controls("zt").text = "无法超过最大桨距"
Case 10
Forms("主窗口").Controls("zt").text = "无法超过顺桨桨距限制"
Case 11
Forms("主窗口").Controls("zt").text = "启动反桨模式(反桨选项步骤一)"
Case 12
Forms("主窗口").Controls("zt").text = "低于最小桨距(反桨选项)"
Case 13
Forms("主窗口").Controls("zt").text = "超过最大桨距(顺桨选项)"
Case 14
Forms("主窗口").Controls("zt").text = "减小桨距时过电流"
Case 15
Forms("主窗口").Controls("zt").text = "增大桨距时过电流"
Case 16
Forms("主窗口").Controls("zt").text = "增大顺桨桨距时过电流"
Case 17
Forms("主窗口").Controls("zt").text = "开路故障"
Case 18
Forms("主窗口").Controls("zt").text = "控制器软件错误"
Case Else
Forms("主窗口").Controls("zt").text = "无定义"
End Select
If val(6) > 30 Then
Forms("主窗口").Controls("ms").text = "手动"
Else
Forms("主窗口").Controls("ms").text = "自动"
End If
Select Case val(6)
Case 17,33
Forms("主窗口").Controls("jd").text = "起飞"
Case 18,34
Forms("主窗口").Controls("jd").text = "爬升"
Case 19,35
Forms("主窗口").Controls("jd").text = "巡航"
Case 20,36
Forms("主窗口").Controls("jd").text = "恒速"
Case 21,37
Forms("主窗口").Controls("jd").text = "顺桨"
Case Else
Forms("主窗口").Controls("jd").text = "无定义"
End Select
Forms("主窗口").Controls("sj").text = BinToDec(dq)
Forms("主窗口").Controls("ys").text = BinToDec(mb)
End If
If vars("k") = 1 Then
Dim dr As DataRow = DataTables("原始数据").addnew()
dr("时间") = Date.now
dr("COM") = vars("com")
dr("cnt") = cnt
For i As Integer = 0 To cnt - 1
If dr.Isnull("val") Then
dr("val") = DecToBin(val(i))
Else
dr("val") = dr("val") & "-" & DecToBin(val(i))
End If
If dr.Isnull("v10") Then
dr("v10") = val(i)
Else
dr("v10") = dr("v10") & "-" & val(i)
End If
If dr.Isnull("v16") Then
dr("v16") = DecToHex(val(i))
Else
dr("v16") = dr("v16") & "-" & DecToHex(val(i))
End If
Next
Dim r As DataRow = DataTables("采集数据").AddNew()
r("时间") = dr("时间")
r("目标转速") = BinToDec(mb)
r("当前转速") = BinToDec(dq)
r("档位状态") = val(6)
r("实时状态") = val(7)
End If
End If
End If
End Select