private void Update(byte[] data) { HoleADValues ad = RawDataToAD(data); for (int i = 0; i < _listAD0.Count; ++i) { /* * listAD0[i].Content = string.Empty + ad.orginADValues[i / 8][i % 8][0]; * listAD1[i].Content = string.Empty + ad.orginADValues[i / 8][i % 8][1]; * listAD2[i].Content = string.Empty + ad.orginADValues[i / 8][i % 8][2]; * listAD3[i].Content = string.Empty + ad.orginADValues[i / 8][i % 8][3]; */ //listAD0[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][0] * 1000.0 / 0xFFFF); //listAD1[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][1] * 1000.0 / 0xFFFF); //listAD2[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][2] * 1000.0 / 0xFFFF); //listAD3[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][3] * 1000.0 / 0xFFFF); int one = (int)(ad.adValues[i / 8][i % 8][0] * 1000.0 / 0xFFFF); int two = (int)(ad.adValues[i / 8][i % 8][0] * 1000.0 / 0xFFFF); int three = (int)(ad.adValues[i / 8][i % 8][2] * 1000.0 / 0xFFFF); int four = (int)(ad.adValues[i / 8][i % 8][3] * 1000.0 / 0xFFFF); //if ((one >= 360 && one <= 600) && (two >= 360 && two <= 600) && (three >= 360 && three <= 600) && (four >= 360 && four <= 600)) //if ((one >= 300 && one <= 600) && (two >= 300 && two <= 600) && (three >= 300 && three <= 600) && (four >= 300 && four <= 600)) if (one >= 100) { _listAD0[i].Content = "OK"; } else { _listAD0[i].Content = "ERROR"; } if (i < 6) { if (i == 4 && Global.deviceHole.HmCount == 0) { _listAD2[i].Content = string.Empty; } else { _listAD2[i].Content = "OK"; } } else { _listAD2[i].Content = string.Empty; } if (0 == (i % 8)) { //listADDark[i].Content = string.Empty + (int)(ad.darkAdValues[i / 8] * 1000.0 / 0xFFFF); } } }
HoleADValues RawDataToAD(byte[] data) { int idx = 1; int LED_ROW = data[idx]; int LED_COL = 8; int LED_NUMS = 4; HoleADValues ad = new HoleADValues(LED_ROW, LED_COL, LED_NUMS); idx = 2; for (int i = 0; i < LED_ROW; ++i) { ++idx;// 1个byte的长度 // 灯全灭,暗电流 ad.darkAdValues[i] = ((UInt32)data[idx]) + ((UInt32)(data[idx + 1] << 8)) + ((UInt32)(data[idx + 2] << 16)) + ((UInt32)(data[idx + 3] << 24)); idx += 4; for (int j = 0; j < LED_COL; ++j) { for (int k = 0; k < LED_NUMS; ++k) { ad.orginADValues[i][j][k] = ((UInt32)data[idx]) + ((UInt32)(data[idx + 1] << 8)) + ((UInt32)(data[idx + 2] << 16)) + ((UInt32)(data[idx + 3] << 24)); ad.adValues[i][j][k] = ad.orginADValues[i][j][k]; idx += 4; if (ad.adValues[i][j][k] < ad.darkAdValues[i]) { ad.adValues[i][j][k] = 0; } else { ad.adValues[i][j][k] -= ad.darkAdValues[i]; } // adValues[offset] * 1000 / 0x10000 ,将AD转换成3.3V的千分之几。直观显示。 } } ++idx;// 1个byte的校验 } return(ad); }
private void Update(byte[] data) { try { HoleADValues ad = RawDataToAD(data); for (int i = 0; i < _listAD0.Count; ++i) { _listAD0[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][0] * 1000.0 / 0xFFFF); _listAD1[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][1] * 1000.0 / 0xFFFF); _listAD2[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][2] * 1000.0 / 0xFFFF); _listAD3[i].Content = string.Empty + (int)(ad.adValues[i / 8][i % 8][3] * 1000.0 / 0xFFFF); if (0 == (i % 8)) { _listADDark[i].Content = string.Empty + (int)(ad.darkAdValues[i / 8] * 1000.0 / 0xFFFF); } } } catch (Exception ex) { MessageBox.Show("异常(Update):\n" + ex.Message); } }