示例#1
0
        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);
        }
示例#2
0
        // 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);
        }
示例#3
0
        // 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);
        }
示例#4
0
        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);
        }
示例#6
0
        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();
                }
            }
        }
示例#7
0
        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");
        }
示例#8
0
 // 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);
 }
示例#9
0
 // conver a message to a row
 public object[] msg2row(canAnalyzer.canMessage2 msg, int idx)
 {
     return(msg2row(msg, TS, idx));
 }