//updates the port when selected private void listBox_avPorts_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { serialPort.Close(); serialPort.PortName = listBox_avPorts.SelectedItem.ToString(); serialPort.Open(); } catch (Exception) { serialPort.PortName = " "; } }
static void Main(string[] args) { HrController.port = ComPort; ComPort.DataReceived += HrDecoder.DecodePacket; HrDecoder.OnDataDecodedEvent += HrDecoder.ProcessPacket; HrDecoder.OnStatAckEvent += HrDecoder_OnStatAckEvent; HrDecoder.OnIjogAckEvent += HrDecoder_OnIjogAckEvent; HrDecoder.OnSjogAckEvent += HrDecoder_OnSjogAckEvent; HrDecoder.OnRamReadAckEvent += HrDecoder_OnRamReadAckEvent; HrDecoder.OnEepReadAckEvent += HrDecoder_OnEepReadAckEvent; ComPort.Open(); while (lockShell) { Console.Write('>'); string[] parsedCmd = ParseShellCmd(Console.ReadLine()); switch (parsedCmd[0]) { case "REBOOT": if (parsedCmd.Length == 1) { Console.WriteLine("REBOOT <pID>"); } else { HrController.REBOOT(Convert.ToByte(parsedCmd[1])); } break; case "ROOLBACK": if (parsedCmd.Length == 1) { Console.WriteLine("ROLLBACK <ID>"); } else { HrController.ROLLBACK(Convert.ToByte(parsedCmd[1])); } break; case "EEP_WRITE": if (parsedCmd.Length == 1) { Console.WriteLine("EEP_WRITE <pID> <StartAddr> <Length> <DataDecimal>"); } else { HrController.EEP_WRITE(Convert.ToByte(parsedCmd[1]), Convert.ToByte(parsedCmd[2]), Convert.ToByte(parsedCmd[3]), Convert.ToUInt16(parsedCmd[4])); } break; case "EEP_READ": if (parsedCmd.Length == 1) { Console.WriteLine("EEP_READ <pID> <StartAddr> <Length>"); } else { HrController.EEP_READ(Convert.ToByte(parsedCmd[1]), Convert.ToByte(parsedCmd[2]), Convert.ToByte(parsedCmd[3])); } break; case "STAT": if (parsedCmd.Length == 1) { Console.WriteLine("STAT <pID>"); } else { HrController.STAT(Convert.ToByte(parsedCmd[1])); } break; //for testing incredible things case "debug": if (parsedCmd.Length == 1) { Console.WriteLine("debug <JOG1> <JOG2>"); } else { Ser1Config.JOG = Convert.ToUInt16(parsedCmd[1]); Ser2Config.JOG = Convert.ToUInt16(parsedCmd[2]); ROBOT_ARM_CONFIG = new List <JOG_TAG> { Ser1Config, Ser2Config }; HrController.S_JOG(ROBOT_ARM_CONFIG, 0x3C); } break; //implemented, working case "moveto": if (parsedCmd.Length == 1) { Console.WriteLine("moveto <ID> <JOG>"); } else { floatingConfig.ID = Convert.ToByte(parsedCmd[1]); floatingConfig.JOG = Convert.ToUInt16(parsedCmd[2]); HrController.S_JOG(floatingConfig, 10); } break; case "GetPos": if (parsedCmd.Length == 1) { Console.WriteLine("GetPos <pID>"); } else { HrController.RAM_READ(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Absolute_Position, 2); } break; //implemented, working case "torqueControl": if (parsedCmd.Length == 1) { Console.WriteLine("torqueControl <ID> <TRK_ON, BRK_ON, TRK_FREE>"); } else { if (parsedCmd[2] == "TRK_ON") { HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Torque_Control, 1, 0x60); } if (parsedCmd[2] == "BRK_ON") { HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Torque_Control, 1, 0x40); } if (parsedCmd[2] == "TRK_FREE") { HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Torque_Control, 1, 0x00); } } break; case "RAM_READ": if (parsedCmd.Length == 1) { Console.WriteLine("RAM_READ <pID> <StartAddr> <Length>"); } else { HrController.RAM_READ(Convert.ToByte(parsedCmd[1]), Convert.ToByte(parsedCmd[2]), Convert.ToByte(parsedCmd[3])); } break; case "RAM_WRITE": if (parsedCmd.Length == 1) { Console.WriteLine("RAM_WRITE <pID> <StartAddr> <Length> <Value> {ADDR 48 / 49 for error status}"); } else { HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), Convert.ToByte(parsedCmd[2]), Convert.ToByte(parsedCmd[3]), Convert.ToUInt16(parsedCmd[4])); } break; case "initPos": floatingConfig.ID = 1; floatingConfig.JOG = 512; floatingConfig.playTime = 100; HrController.I_JOG(floatingConfig); floatingConfig.ID = 2; floatingConfig.JOG = 512; floatingConfig.playTime = 100; HrController.I_JOG(floatingConfig); break; case "allFree": HrController.RAM_WRITE(1, (byte)RAM_ADDR.Torque_Control, 1, 0x00); HrController.RAM_WRITE(2, (byte)RAM_ADDR.Torque_Control, 1, 0x00); break; case "allOn": HrController.RAM_WRITE(1, (byte)RAM_ADDR.Torque_Control, 1, 0x60); HrController.RAM_WRITE(2, (byte)RAM_ADDR.Torque_Control, 1, 0x60); break; case "disconnect": ComPort.Close(); break; case "connect": ComPort.Open(); break; case "list": Console.WriteLine("moveto <ID> <JOG>"); Console.WriteLine("torqueControl <ID> <TRK_ON, BRK_ON, TRK_FREE>"); Console.WriteLine("RAM_READ <pID> <StartAddr> <Length>"); Console.WriteLine("RAM_WRITE <pID> <StartAddr> <Length> <Value> {ADDR 48 / 49 for error status}"); Console.WriteLine("initPos"); Console.WriteLine("allFree"); Console.WriteLine("allOn"); Console.WriteLine("disconnect"); Console.WriteLine("connect"); break; case "ResolveErrs": if (parsedCmd.Length == 1) { Console.WriteLine("ResolveErrs <pID>"); } else { HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Status_Error, 1, 0x00); HrController.RAM_WRITE(Convert.ToByte(parsedCmd[1]), (byte)RAM_ADDR.Torque_Control, 1, 0x60); } break; case "quit": ComPort.Close(); lockShell = false; break; } } }