protected virtual void OnCanReceivedEvent(CanMessageEventArgs e)
 {
     if (CanMessageReceived != null)
     {
         CanMessageReceived(this, e);
     }
 }
Exemple #2
0
        /// <summary>
        /// Recieves Data from XBee Port
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Port_DataReceived()
        {
            SerialPort          sp         = this.canPort; //Get Serial Port that has the data
            CanMessageEventArgs newMessage = new CanMessageEventArgs();


            while (getCanData)
            {
                string dataIn = null;
                try
                {
                    dataIn = sp.ReadLine();

                    if (dataIn != null)
                    {
                        this.messagesReceived++;
                        newMessage.canMessage = dataIn;
                        if (CanMessageReceived != null)
                        {
                            CanMessageReceived(this, newMessage);
                        }

                        this.newData = true;

                        DateTime now  = DateTime.Now;
                        string   time = now.TimeOfDay.ToString();
                        string   s    = string.Format("Rcvd {0}: {1} : {2}", messagesReceived, time, dataIn);
                        Console.WriteLine(s);
                        this.logBuilder.AppendLine(s);
                    }
                }
                catch (Exception ex)
                {
                    //this.errorLog("CANBUS-Port_DataReceived() - " + ex);
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Update All Nodes state
        /// </summary>
        public void UpdateNodeState(object sender, CanMessageEventArgs e)
        {
            try {
                //Parse incoming data
                string[] parsedString = e.canMessage.Split(',');

                int nodeID = Convert.ToInt32(parsedString[0]);
                if (nodeID == cv.canControlID)
                {
                    nodeID = 0;
                }
                else if (nodeID > 20)
                {
                    nodeID -= 10;
                }

                node[nodeID].reportRec = Convert.ToByte(parsedString[1]);

                //Console.WriteLine("Incomming Message : Node {1}: {0}", e.canMessage, nodeID);

                if (node[nodeID].reportRec == 9)
                {
                    node[nodeID].fromPC = Convert.ToInt32(parsedString[2]);
                    node[nodeID].toPC   = Convert.ToInt32(parsedString[3]);
                    node[nodeID].commandNodeMessagesReceived = Convert.ToInt32(parsedString[4]);
                    node[nodeID].commandNodeMessagesSent     = Convert.ToInt32(parsedString[5]);
                    node[nodeID].nodeMessagesReceived        = Convert.ToInt32(parsedString[6]);
                    node[nodeID].nodeMessagesSent            = Convert.ToInt32(parsedString[7]);

                    node[cv.controlBoard].nodeMessagesSent     = Convert.ToInt32(parsedString[4]);
                    node[cv.controlBoard].nodeMessagesReceived = Convert.ToInt32(parsedString[5]);
                }
                else
                {
                    node[nodeID].lightStatus  = this.cb.colorCode(parsedString[2]);
                    node[nodeID].lightMode    = parsedString[3];
                    node[nodeID].gameMode     = this.cb.gameModeCode(parsedString[4]);
                    node[nodeID].inputStatus  = Convert.ToByte(parsedString[5]);
                    node[nodeID].outputStatus = Convert.ToByte(parsedString[6]);
                    node[nodeID].byte6        = Convert.ToByte(parsedString[7]);
                    node[nodeID].byte7        = Convert.ToByte(parsedString[8]);

                    // <TODO> determine switch inputs
                    switch (nodeID)
                    {
                    case 1:
                    case 5:
                    case 6:
                    case 10:
                        // at least one of the buttons is pressed
                        if (InputState(nodeID, 0) || InputState(nodeID, 1))
                        {
                            node[nodeID].scored = true;
                        }
                        else
                        {
                            node[nodeID].scored = false;
                        }
                        break;

                    case 3:
                    case 8:
                        // at least one of the buttons is pressed
                        if (!InputState(nodeID, 0) || !InputState(nodeID, 1))
                        {
                            node[nodeID].scored = true;
                        }
                        else
                        {
                            node[nodeID].scored = false;
                        }
                        break;

                    default:
                        break;
                    }
                }
            } catch (Exception ex) {
                logWrite("Update Node Failed - " + ex);
            }
        }