static void ReplMain(string[] cmd, ref QhyCcd camera, ref Mount mount) { switch (cmd[0]) { case "camera": if (cmd.Length == 1) { var numCameras = QhyCcd.NumCameras(); if (numCameras == 0) { Console.WriteLine("No QHY cameras found"); } else if (numCameras == 1) { camera = new QhyCcd(false, 0); Console.WriteLine("One QHY camera found, automatically connected"); } else { Console.WriteLine($"Num cameras: {numCameras}"); for (var i = 0; i < numCameras; i++) { var name = QhyCcd.CameraName(i); Console.WriteLine($"{i} = {name}"); } } } else if (cmd.Length == 2 && int.TryParse(cmd[1], out var index)) { camera = new QhyCcd(false, index); } else { goto default; } break; case "mount": if (cmd.Length == 1) { mount = Mount.Create(); if (mount == null) { var ports = Mount.Ports(); if (ports.Length == 0) { Console.WriteLine("No serial ports"); } else { Console.WriteLine("More than one serial ports:"); Console.WriteLine(string.Join(", ", ports)); } } else { Console.WriteLine("One serial port, automatically connected to mount"); } } else if (cmd.Length == 2) { mount = new Mount(cmd[1]); } else { goto default; } break; case "solve": if (cmd.Length == 2) { //var task = PlateSolve.SolveFile(cmd[1]); Console.WriteLine("TODO"); } else { goto default; } break; default: Console.WriteLine($"Unknown command {string.Join(" ", cmd)}"); break; } }