protected virtual void OnCanReceivedEvent(CanMessageEventArgs e) { if (CanMessageReceived != null) { CanMessageReceived(this, e); } }
/// <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); } } }
/// <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); } }