/// <summary> /// Creates and Returns the Command List /// </summary> /// <param name="inputCmds"></param> /// <returns>The Command List</returns> private List <String> CreateCommandList(List <List <String> > inputCmds) { List <String> cmds = new List <string>(); ProfileParamsTb.AppendText("\r\n"); //for each command array foreach (List <String> cmd in inputCmds) { String cmdStr = ""; //for each command array piece foreach (String cmdPiece in cmd) { //add piece to command string cmdStr += cmdPiece; ProfileParamsTb.AppendText(cmdPiece + " "); } //Add command string to List ProfileParamsTb.AppendText("\r\n"); cmds.Add(cmdStr); } //return list return(cmds); }
/// <summary> /// Sends the Command List over the CAN Bus /// </summary> /// <param name="cmds"></param> /// <param name="numPackets"></param> private void SendCommandList(List <String> cmds, byte numPackets) { #region ValCheck if (cmds == null || numPackets == 0) { return; } #endregion #region setup TCLightMsg MsgToSend = new TCLightMsg(); MsgToSend.ID = 0x013EE8E0 | 0x00000001; MsgToSend.Len = 1; MsgToSend.MsgType = MsgTypes.MSGTYPE_EXTENDED; MsgToSend.Data[0] = numPackets; TCLightTimestamp q = new TCLightTimestamp(); q.millis = 1000; console.AddOutsideMessage(MsgToSend, q); PCANLight.Write(ActiveHardware, MsgToSend); #endregion #region move MsgToSend.ID = 0x013EE0E0 | 0x00000001; MsgToSend.Len = 8; MsgToSend.MsgType = MsgTypes.MSGTYPE_EXTENDED; byte count = 0; foreach (String cmd in cmds) { String[] cmd2 = cmd.Split('~'); for (int i = 0; i < MsgToSend.Len; i++) { #region Data switch (i) { case 0: ProfileParamsTb.AppendText(cmd + "\r\n"); MsgToSend.Data[0] = count; count++; break; case 1: MsgToSend.Data[1] = numPackets; break; case 2: MsgToSend.Data[2] = BitConverter.GetBytes(Int16.Parse(cmd2[0]))[1]; break; case 3: MsgToSend.Data[3] = BitConverter.GetBytes(Int16.Parse(cmd2[0]))[0]; break; case 4: MsgToSend.Data[4] = BitConverter.GetBytes(UInt16.Parse(cmd2[1]))[1]; break; case 5: MsgToSend.Data[5] = BitConverter.GetBytes(UInt16.Parse(cmd2[1]))[0]; break; case 6: MsgToSend.Data[6] = BitConverter.GetBytes(UInt16.Parse(cmd2[2]))[1]; break; case 7: MsgToSend.Data[7] = BitConverter.GetBytes(UInt16.Parse(cmd2[2]))[0]; break; } #endregion } console.AddOutsideMessage(MsgToSend, q); PCANLight.Write(ActiveHardware, MsgToSend); } #endregion #region Delete //prevents sending repeats, consider disabling if you want such a feature cmds = null; numPackets = 0; #endregion }