1. C# / Говнокод #5406

    +120

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    static void processCmd(string command) {
    	string[] c_args = command.Split(" ".ToCharArray());
    	switch (c_args[0]) {
    		case "beep":
    			nbr.PlayTone(4096, 500);
    			break;
    		case "exit":
    			exit_op();
    			break;
    		case "info":
    			log_ca("Info:");
    			log_ca(Application.ProductName + " " + Application.ProductVersion);
    			log_ca("listener is " + ((services_running[0]) ? "running" : "down"));
    			log_ca("updater is " + ((services_running[1]) ? "running" : "down"));
    			break;
    		case "start":
    			try {
    				switch (c_args[1]) {
    					case "updater":
    						break;
    					case "listener":
    						if (services_running[0])
    							log_ca("listener is already running");
    						else
    							start_listener();
    						break;
    					default:
    						throw new ArgumentException();
    						break;
    				}
    			}
    			catch {
    				log_ca("Usage: start <service>. Available services: listener, updater.");
    			}
    			break;
    		case "help":
    			foreach (string hs in System.IO.File.ReadAllLines("help.txt")) {
    				log_ca(hs);
    			}
    			break;
    		default:
    			log_ca("\"help\" will display all available commands");
    			break;
    		case "stop":
    			try {
    				nbr.MotorA.Brake();
    				nbr.MotorB.Brake();
    				nbr.MotorC.Brake();
    			}
    			catch { }
    			break;
    		case "run":
    			try {
    				switch(c_args[1]) {
    					case "a":
    						if(arr_motor[0]=="none")
    							log_e("Motor not found or config error");
    						else {
    							if (c_args[4] == "false")
    								nbr.MotorA = new NxtMotor(false);
    							else
    								nbr.MotorA = new NxtMotor(true);
    							nbr.MotorA.Run(Convert.ToSByte(c_args[2]), Convert.ToUInt32(c_args[3]));
    						}
    						break;
    					case "b":
    						if(arr_motor[1]=="none")
    							log_e("Motor not found or config error");
    						else {
    							if (c_args[4] == "false")
    								nbr.MotorB = new NxtMotor(false);
    							else
    								nbr.MotorB = new NxtMotor(true);
    							nbr.MotorB.Run(Convert.ToSByte(c_args[2]), Convert.ToUInt32(c_args[3]));
    						}
    						break;
    					case "c":
    						if(arr_motor[2]=="none")
    							log_e("Motor not found or config error");
    						else {
    							if (c_args[4] == "false")
    								nbr.MotorC = new NxtMotor(false);
    							else
    								nbr.MotorC = new NxtMotor(true);
    							nbr.MotorC.Run(Convert.ToSByte(c_args[2]), Convert.ToUInt32(c_args[3]));
    						}
    						break;
    					default:
    						throw new Exception();
    						break;
    				}
    			}
    			catch (Exception ex) {
    				log_ca("Usage: run <motor> <speed> <tacho> <reverse>. Example: run a 100 0 false.");
    			}
    		break;
    	}
    }

    Мой код, написано 3 года назад.

    Запостил: A1mighty, 27 Января 2011

    Комментарии (12) RSS

    • Lego Mindstorms NXT?
      Ответить
      • Да, оно. Была задача управлять им через сайт, расположенный в любом месте.
        Ответить
        • эх... такими макаронами лет через ннадцать появятся всякие "Собери свой спутник за 10 минут"...
          Ответить
          • Да уж. У меня там все было навалено в кучу. Сайт был на PHP+MySQL+jQuery+еще какой-то JS код+еще что-то. А сервак на компе, написанный на C#, куда был подключен NXT (по bluetooth ;)), принимал команды вида 'run a 100 0' (обработчик этих команд - как раз этот редкостный говнокод из одних свитчей). jQuery на сайте подгружал в тело PHP скрипт, в котором с помощью fsockopen и fputs открывал доступ к серваку и отправлял команду. При этом вся эта шаткая система еще и ухитрялась работать и не тормозить (при схеме с расстоянием от робота до пользователя ~500км средний пинг был 250-300мс)
            Ответить
            • ...сервак... блютуф(с)... я стопицот лет назад голову ломал как же подключить ннадцать устройств через однопроводной канал вида "1-0"...
              всё, пора на свалку... :)
              Ответить
              • >>однопроводной канал вида "1-0".
                я вроде смыслю в телекоммуникациях, но такого термина не встречал
                Ответить
                • :) такого термина и нет в природе...
                  Грубый аналог радиомодуля с цифровой передачей данных и скоростью порядка 512 бод, только вместо радиоволн, кхм, - обычный провод.
                  --
                  ( вот так, давным давно, развлекалась школота олдфажная )
                  Ответить
            • А если не секрет, для чего нужно было управлять роботом со столь большого расстояния? :)
              Сколько разных проектов с ним не делал - надобности такой не возникало...
              Ответить
              • Демонстрация возможностей NXT вместе с MindSqualls (чтобы школы их для обучения брали). Для непосвященных людей из какого-нибудь пгт возможность просто зайти на сайт и погонять этим роботом мою кошку в моей же квартире (при этом еще и видя по камере, что там делается), которая находится в нескольких сотнях километров, была просто фантастической. А тут мы им делаем 50% скидку на комплект, если они в своей школе соглашаются развивать робототехнику.
                Ответить
        • Что за библиотека? MindSqualls, NXT#?
          Ответить

    Добавить комментарий