串口助手上接收到的数据格式为 FC 02 00 00 , 02 表示有两台设备连接, 后面的两个 00 表示各自的速度
成员变量
public int ClientCount = 2; //设备数量
public int[] High2Arr; //高位数组
public int[] SpeedValueArr; //速度数组
public List<byte> listReceive = new List<byte>(); //存储串口数据的数组
这是读取串口数据的函数
private void readPortData() {
try {
while ((serialPort.ReadByte()) != null) {
byte spDate = Convert.ToByte(serialPort.ReadByte());
listReceive.Add(spDate);
ParseReceive();
}
} catch (Exception ex) {
sysMsg = ex.Message.ToString();
}
}
这是解析串口数据的函数
if (listReceive.Count < ClientCount + 2)
return;
for (int i = 0; i < ClientCount; i++) {
High2Arr[i] = (listReceive[listReceive.Count - 1 - i] & 0x00) >> 6;//高两位状态
if (High2Arr[i] == 2) { //高两位等于10=2 :前进
SpeedValueArr[i] = (listReceive[listReceive.Count - 1 - i] & 0x3f);// 低六位速度值
} else if (High2Arr[i] == 3) { //高两位等于11=3 :后退
SpeedValueArr[i] = 0;
} else if (High2Arr[i] == 0) { //高两位等于00=0 :闲置静止
SpeedValueArr[i] = 0;
}
}
listReceive.RemoveRange(0, ClientCount + 2);
可是我最后并没有接收到任何的数据,,,
请问这是怎么了
我也不知道为什么我没有C 币, 请见谅