static public canAnalyzer.canMessage2 str2msg(string str) { if (str == null || str == string.Empty) { return(null); } object[] ob = str2row(str, 0); if (ob == null || ob.Length == 0) { return(null); } string sts = ob[1].ToString().Replace(" s.", string.Empty); int ts = (int)(Convert.ToDouble(sts) * 1000); string sid = ob[2].ToString(); int id = Convert.ToInt32(sid, 16); bool is29bit = sid.Length > 3; int dlc = Convert.ToInt32(ob[3]); byte[] data = new byte[dlc]; for (int i = 0; i < data.Length; i++) { data[i] = Convert.ToByte(ob[4 + i].ToString(), 16); } canAnalyzer.canMessage2 msg = new canAnalyzer.canMessage2(id, is29bit, data, 0); msg.timestamp_absolute = ts; return(msg); }
// conver a row to the message public canAnalyzer.canMessage2 row2message(DataGridViewRow row) { int cellIdx = 1 + 1; string sId = row.Cells[cellIdx++].Value.ToString(); int id = Convert.ToInt32(sId, 16); // format bool is29b = sId.Length > 5; // 0x7FF // dlc int dlc = Convert.ToInt32(row.Cells[cellIdx++].Value.ToString(), 10); // data byte[] data = new byte[dlc]; for (int i = 0; i < dlc; i++) { data[i] = Convert.ToByte(row.Cells[cellIdx + i].Value.ToString(), 16); } // timestamp string sTs = row.Cells[0].Value.ToString(); sTs = sTs.Replace(" ", string.Empty); sTs = sTs.Substring(0, sTs.IndexOf("s.")); int ts = (int)(Convert.ToDouble(sTs) * 1000.0d); // convert canAnalyzer.canMessageId canId = new canAnalyzer.canMessageId(id, dlc, is29b); canAnalyzer.canMessage2 canMsg = new canAnalyzer.canMessage2(canId, data, ts); return(canMsg); }
// convert a message to a row (obsolete) /* * static public object[] msg2row (canAnalyzer.canMessage2 msg, timestamp ts, int idx) * { * int dataIdx = 0; * * string[] data = msg.GetDataStringList().ToArray(); * * int tsVal = ts.update(msg.TimeStamp.TimeStamp); * * // timestamp string * string sTs = msecTs2String(tsVal); * * // ts, id, dlc, data * object[] values = { * idx, * sTs, * msg.Id.GetIdAsString(), * msg.Id.GetDlcAsString(), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * ( data.Length >= ++dataIdx ? data[dataIdx-1] : string.Empty ), * }; * * return values; * } */ // convert a message to the row (new) static public object[] msg2row(canAnalyzer.canMessage2 msg, timestamp_offset ts, int idx) { int dataIdx = 0; string[] data = msg.GetDataStringList().ToArray(); //int tsVal = ts.update(msg.TimeStamp.TimeStamp); int tsVal = ts.update(msg.timestamp_absolute); // timestamp string string sTs = msecTs2String(tsVal); // ts, id, dlc, data object[] values = { idx, sTs, msg.Id.GetIdAsString(), msg.Id.GetDlcAsString(), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), (data.Length >= ++dataIdx ? data[dataIdx - 1] : string.Empty), }; return(values); }
public void send(canAnalyzer.canMessage2 m) { stop(); msgList = new List <canAnalyzer.canMessage2>(1); msgList.Add(m); worker = new Thread(onWorker); worker.Name = "traceWorker"; worker.Start(); }
// CAN message to script static public string message2string(canAnalyzer.canMessage2 msg) { string res = string.Empty; string sData = msg.GetDataString(", ", "0x"); res = string.Format("{0} 0x{1}, {2} );", msg.Id.Is29bit ? cmdSend29 : cmdSend, msg.Id.GetIdAsString(), sData); return(res); }
private void btnSendStep_Click(object sender, EventArgs e) { // send selected message var sel = grid.SelectedRows; if (sel.Count >= 1) { var row = sel[0]; canAnalyzer.canMessage2 m = conv.row2msg(row); if (CanTool.SendCanMessage(m)) { selectNextRow(); } } }
private void onWorker() { stopRequest = false; int msgIdx = 0; bool allMessagesAreSent = false; while (!stopRequest && !allMessagesAreSent) { // get canAnalyzer.canMessage2 msg = msgList[msgIdx]; // send CanTool.SendCanMessage(msg); // check if (msgIdx == msgList.Count - 1) { allMessagesAreSent = true; continue; } int delayMs = msgList[msgIdx + 1].TimeStamp.TimeStamp - msg.TimeStamp.TimeStamp; if (delayMs > 0) { const int delayStep = 50; if (delayMs < delayStep) { Thread.Sleep(delayMs); } else { while (!stopRequest) { if (delayMs > delayStep) { Thread.Sleep(delayStep); delayMs -= delayStep; } else { Thread.Sleep(delayMs); break; } } } } if (stopRequest) { break; } msgIdx++; parent.selectNextRow(); } stopRequest = false; Thread.Sleep(10); //worker.Abort(); // if(allMessagesAreSent) //MessageBox.Show(string.Format("{0} messages were sent", msgList.Count), "Tracer"); }
// convert a message to a row public object[] get_test_row(canAnalyzer.canMessage2 msg, int idx) { object[] test = { "1", "123s.", "7DF", "8", "00", "01", "03", "04", "05", "06", "07" }; return(test); }
// conver a message to a row public object[] msg2row(canAnalyzer.canMessage2 msg, int idx) { return(msg2row(msg, TS, idx)); }