void ReadTXItems(Table txItems) { for (int i = 0, readOffset = (int)txItems.offset; i < txItems.rowCount; i++, readOffset += txItems.rowSize) { uint id = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 0); byte[] conversion = txItems.ReadFieldRaw(dbReader.rawDB, readOffset, 1); if (!isStarScanDB) { byte tmp = conversion[2]; conversion[2] = conversion[3]; conversion[3] = tmp; tmp = conversion[4]; conversion[4] = conversion[5]; conversion[5] = tmp; } uint dataAcquireId = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 2); uint functionId = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 3); uint moduleMenuId = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 4); byte[] xmit = txItems.ReadFieldRaw(dbReader.rawDB, readOffset, 6); uint nameId = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 8); uint hintId = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 13); uint moduleType = (uint)txItems.ReadField(dbReader.rawDB, readOffset, 14); TXItems[id] = new TXItem(this, id, conversion, dataAcquireId, moduleMenuId, functionId, xmit, nameId, hintId, moduleType); } }
IEnumerable <TXItem> GetFunctionTXChildren(Dictionary <uint, TXItem> FunctionIDToTXItem, Function func) { TXItem linkedItemTemp = null; foreach (Function linkedFunction in func.LinkedFunctions) { if (FunctionIDToTXItem.TryGetValue(linkedFunction.ID, out linkedItemTemp)) { yield return(linkedItemTemp); } } }
void ListBoxUpdater_Tick(object sender, EventArgs e) { foreach (ListViewItem item in lstDataMenuTXs.Items) { if (item.Tag != null && item.Tag.GetType() == typeof(TXItem)) { TXItem txitem = (TXItem)item.Tag; if (txitem.DataDisplay.IsRawDataUpdated) { item.SubItems[1].Text = txitem.DataDisplay.FormattedData; } } } }
public List <SelectableDataItem> GetTXChildren(Module mod, Function func) { List <SelectableDataItem> output = new List <SelectableDataItem>(); foreach (Function child in func.LinkedFunctions) { TXItem linkedTx = mod.TXItems.FirstOrDefault(item => item.FunctionID == child.ID); if (linkedTx != null) { output.Add(linkedTx); } else { output.Add(child); } } return(output); }
void QueryThread() { //listBoxUpdater.Enabled = true; queryTaskStopSignal.Reset(); bool isHighSpeedSciMode = false; while (!queryTaskStopSignal.WaitOne(1)) { List <TXItem> txTemp = null; lock (visibleTxItems) { txTemp = new List <TXItem>(visibleTxItems); } List <TXItem> sciHighSpeedParams = txTemp.Where(tx => tx.DataAcquisitionMethod != null && tx.DataAcquisitionMethod.Protocol == Protocol.SCI && (tx.TransmitBytes[0] & 0xF0) == 0xF0).ToList(); if (sciHighSpeedParams.Any()) { txTemp = visibleTxItems.Except(sciHighSpeedParams).ToList(); if (!isHighSpeedSciMode) { arduino.SendCommand(CommandID.SCI_SetLoSpeed); if (arduino.SendMessageAndGetResponse(Protocol.SCI, 0x12).Count == 1) { arduino.SendCommand(CommandID.SCI_SetHiSpeed); isHighSpeedSciMode = true; } } if (isHighSpeedSciMode) { SCIHiSpeedQuery(sciHighSpeedParams); } if (txTemp.Any()) { arduino.SendMessageAndGetResponse(Protocol.SCI, 0xFE); Thread.Sleep(250); arduino.SendCommand(CommandID.SCI_SetLoSpeed); isHighSpeedSciMode = false; } } for (int i = 0; i < txTemp.Count; i++) { TXItem tx = txTemp[i]; if (tx.TransmitBytes.Length == 0 || tx.DataAcquisitionMethod == null || (tx.TransmitBytes.Length == 1 && tx.TransmitBytes[0] == 0)) { continue; } else if (tx.DataAcquisitionMethod == null) { continue; } byte[] xmitTemp = new byte[tx.DataAcquisitionMethod.RequestLen]; Array.Copy(tx.TransmitBytes, xmitTemp, tx.DataAcquisitionMethod.RequestLen); List <byte> response = arduino.SendMessageAndGetResponse(tx.DataAcquisitionMethod.Protocol, xmitTemp); if (tx.DataAcquisitionMethod.ResponseLen > tx.DataAcquisitionMethod.RequestLen && tx.DataAcquisitionMethod.Protocol == Protocol.SCI) { List <byte> additionalBytes; arduino.GetSCIBytes(tx.DataAcquisitionMethod.ResponseLen - tx.DataAcquisitionMethod.RequestLen, out additionalBytes); if (additionalBytes != null) { response.AddRange(additionalBytes); } } if (response.Count == tx.DataAcquisitionMethod.ResponseLen) { byte[] dataBytes = tx.DataAcquisitionMethod.ExtractData(response.ToArray()); tx.DataDisplay.RawData = dataBytes; } } } if (isHighSpeedSciMode) { arduino.SendMessageAndGetResponse(Protocol.SCI, 0xFE); Thread.Sleep(250); arduino.SendCommand(CommandID.SCI_SetLoSpeed); } //listBoxUpdater.Enabled = false; }
public TestObject(TXItem txItem, List <TXItem> children) { testTx = txItem; ChildTXItems = children; }