示例#1
0
        //-----------------------------------------------------------------------

        private void addRow(messageSendParams p)
        {
            grid.AllowUserToAddRows = true;

            // cb, id, dlc, data, period, count
            object[] values =
            {
                true,                                                                       // cb
                p.Message.Id.GetIdAsString(),                                               // id
                p.MessageType == canMessageType.data ? p.Message.Id.GetDlcAsString() : " ", // dlc
                p.MessageType == canMessageType.data ?
                p.Message.GetDataString(" ") : "RTR",                                       // data
                p.TimerPeriod.ToString() + " ms",                                           // period
                p.Modifiers.enabled(),                                                      // mods
                0,                                                                          // count //p.MessageCount
            };

            grid.Rows.Add(values);
            grid.AllowUserToAddRows = false;

            // grid.Rows[grid.Rows.GetLastRow(DataGridViewElementStates.None)].Cells[m_colTrigger.Index].Value = interval.ToString() + " ms";

            m_colData.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;

            // foreach row expect the 1st one (checbox) switch readonly on
            using (var r = grid.Rows[grid.Rows.GetLastRow(DataGridViewElementStates.None)])
                foreach (DataGridViewColumn col in grid.Columns)
                {
                    r.Cells[col.Index].ReadOnly = m_colEnable != col;
                }
        }
        // constructor
        #region Constructors
        public canSendWorker(canSender sender, messageSendParams p)
        {
            this.sender = sender;

            Params = p;

            // create the timer
            timer         = new System.Windows.Forms.Timer();
            timer.Tick   += new EventHandler(callback);
            timer.Enabled = false;

            totalSent             = 0;
            remainSendToCheckStop = 0;
        }
        public messageSendParams getParams()
        {
            messageSendParams param = new messageSendParams();

            // message
            param.Message      = getMessage();
            param.MessageCount = getMessageCount();
            // timer
            param.TimerPeriod = getInterval();
            // triggers
            param.TriggerStart = getStartTrigger();
            param.TriggerStop  = getStopTrigger();

            param.PostCondition = getParamAfterStop();
            param.MessageType   = geMessageType();
            param.Modifiers     = getModifiers();

            return(param);
        }
示例#4
0
        private void onContextMenuClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            string clicked = e.ClickedItem.Text.ToLower();

            if ("new message" == clicked)
            {
                FrmAddEditMessage f = new FrmAddEditMessage();
                if (DialogResult.OK == f.ShowDialog())
                {
                    // get params
                    messageSendParams p = f.getParams();
                    addRow(p);
                    // create an item
                    canSendWorker item = new canSendWorker(this.sender, p);
                    items.Add(item);
                    item.row = grid.Rows[grid.Rows.Count - 1];
                    item.start();
                }
            }

            if ("edit selected" == clicked)
            {
            }

            if ("delete selected" == clicked)
            {
                for (int i = grid.Rows.Count - 1; i >= 0; i--)
                {
                    var row = grid.Rows[i];
                    if (row.Selected)
                    {
                        var item = getMessageWithRow(row);
                        item.stop();
                        grid.Rows.Remove(row);
                    }
                }
            }

            if ("enable all" == clicked)
            {
                startAll();
            }

            if ("disable all" == clicked)
            {
                stopAll();
            }

            if ("delete all" == clicked)
            {
                foreach (canSendWorker item in items)
                {
                    item.stop();
                }

                items.Clear();
                grid.Rows.Clear();
            }

            if ("copy selected" == clicked)
            {
            }
        }