static async Task MainAsync() { while (true) { int userChoice; do { Console.Clear(); ConsoleOutput.Logo(); Console.ForegroundColor = ConsoleOutput.menuColor; Console.WriteLine("---------------------------\r"); Console.WriteLine(" OAT Communication Test\r"); Console.WriteLine(" Main Menu\r"); Console.WriteLine("---------------------------\r"); Console.WriteLine("Choose one of the following options:\r"); Console.WriteLine("[ 1 ] COM Settings"); Console.WriteLine("[ 2 ] Manual Command Test"); Console.WriteLine("[ 3 ] Test Gyro"); Console.WriteLine("[ 4 ] Test GPS"); Console.WriteLine("[ 5 ] Run Test/Compile Info"); Console.WriteLine("[ 0 ] Quit application\n"); Console.ResetColor(); } while (!int.TryParse(Console.ReadLine(), out userChoice) || userChoice < 0 || userChoice > 5); switch (userChoice) { case 1: await Settings(); break; case 2: var result = await Connect(); if (result) { await CustomCommand(); } break; case 3: result = await Connect(); if (result) { await TestGyro(); } break; case 4: result = await Connect(); if (result) { await TestGPS(); } break; case 5: result = await Connect(); if (result) { await StartTest(); } break; case 0: Environment.Exit(0); break; default: Console.WriteLine("Try again!!"); break; } } }
static async Task <bool> StartTest() { Dictionary <string, string> keyValuePairs = new Dictionary <string, string>(); keyValuePairs.Add("GVP#,#", "Product name"); keyValuePairs.Add("GVN#,#", "Firmware version"); keyValuePairs.Add("XGM#,#", "Mount configuration"); keyValuePairs.Add("Gt#,#", "Site Latitude"); keyValuePairs.Add("Gg#,#", "Site Longitude"); keyValuePairs.Add("XGR#,#", "RA Steps"); keyValuePairs.Add("XGD#,#", "DEC Steps"); if (_firmwareVersion >= 10869) { keyValuePairs.Add("XGDL#,#", "DEC Limits"); } keyValuePairs.Add("XGT#,#", "Tracking speed"); keyValuePairs.Add("XGH#,#", "HA"); keyValuePairs.Add("XGL#,#", "LST"); keyValuePairs.Add("GC#,#", "Local date"); keyValuePairs.Add("GL#,#", "Local time"); keyValuePairs.Add("GG#,#", "UTC Offset"); keyValuePairs.Add("XGN#,#", "Network settings"); List <CommandResponse> replys = new List <CommandResponse>(); foreach (var cmd in keyValuePairs) { Console.ForegroundColor = ConsoleColor.Magenta; Console.WriteLine("----- {0} -----\r", cmd.Value); Console.ResetColor(); var result = await SendCommand(cmd.Key); if (!result.Success) { Console.WriteLine("Press any key to return..."); Console.ReadKey(); return(false); } replys.Add(result); } // Disconnect _commHandler.Disconnect(); _commHandler = null; // Print summery int cnt = 0; ConsoleOutput.Info("--------------------------------------- SUMMARY -----------------------------------------------------------\r"); foreach (var cmd in keyValuePairs) { ConsoleOutput.Info(string.Format("| {0} | {1} |\r", cmd.Value.PadLeft(30), replys[cnt].Data.PadRight(70))); cnt++; } ConsoleOutput.Info("-----------------------------------------------------------------------------------------------------------\r"); ConsoleOutput.Info("Press any key to return..."); Console.ReadKey(); return(true); }
static async Task <bool> Connect() { while (true) { // List available COM devices var devices = DiscoverDevices(); if (!devices.Contains(_comPort)) { int userChoice; do { Console.Clear(); ConsoleOutput.Logo(); // ListComDetails(); ConsoleOutput.PreTestInfo(); Console.ForegroundColor = ConsoleOutput.menuColor; Console.WriteLine("---------------------------\r"); Console.WriteLine(" OAT Communication Test\r"); Console.WriteLine(" Connect\r"); Console.WriteLine("---------------------------\r"); Console.WriteLine("Select Serial Port:\r"); int cnt = 1; foreach (var dev in devices) { Console.Write("[ {0} ] {1}\n", cnt, dev); cnt++; } Console.WriteLine("[ 0 ] Return\n"); Console.ResetColor(); } while (!int.TryParse(Console.ReadLine(), out userChoice) || userChoice < 0 || userChoice > devices.Count); if (userChoice == 0) { return(false); } else if (userChoice >= 0 && userChoice <= devices.Count) { _comPort = devices[userChoice - 1]; } else { Console.WriteLine("Try again!!"); } } if (!string.IsNullOrEmpty(_comPort)) { var connectResult = await CreateCommHandler(_comPort); if (connectResult) { return(true); } else { return(false); } } } }