// Use this for initialization void Start() { tabCol = table.GetComponent <Collider>(); rb = GetComponent <Rigidbody>(); ab = GetComponent <ArduinoBridge>(); points = 0; ballNbr = 1; SwapBall(); sceneChange = false; holding = false; }
// Use this for initialization void Start () { arduino = (ArduinoBridge)this.GetComponent(typeof(ArduinoBridge)); baseRotation = new Vector3 (0, 0, 0); lastRotation = new Vector3 (90, 180, 180); }
public static void Main(string[] args) { //Helpers.MotorTest(); Console.CancelKeyPress += Console_CancelKeyPress; socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Bind(new IPEndPoint(0, BattleBotServerPort)); logWriter = LogWriter.Instance; CheckConnectionToClientObject = new CheckConnectionToClient(); ArduinoBridge = new ArduinoBridge(); // var arduinoBridgeThread = new Thread(ArduinoBridge.PrintAnalog); var checkConnectionThread = new Thread(CheckConnectionToClientObject.CountTimeSinceLastCommand); //arduinoBridgeThread.Start(); if (args.Length != 0) { if (args[0] == "TestMotors") { Helpers.TestMotors(); } } Console.WriteLine("Awaiting Data"); while (true) { socket.Listen(100); accepted = socket.Accept(); if (clientIP == null) { var clientIPEndPoint = accepted.RemoteEndPoint as IPEndPoint; clientIP = clientIPEndPoint.Address; //socketHelper = new SocketHelper(clientIPEndPoint); checkConnectionThread.Start(); } Buffer = new byte[accepted.SendBufferSize]; var bytesRead = accepted.Receive(Buffer); var formatted = new byte[bytesRead]; for (var i = 0; i < bytesRead; i++) { formatted[i] = Buffer[i]; } var strData = Encoding.ASCII.GetString(formatted); Console.WriteLine(strData); var typcom = strData.Split(':'); if (typcom.Length == 2 || typcom.Length == 3) { Console.WriteLine("Normal command recieved"); Console.WriteLine($"Command: {strData}"); var commandtype = typcom[0]; var command = typcom[1].ToLower(); string parameters = null; if (typcom.Length == 3) { parameters = typcom[2]; } if (commandtype == "CLIENT") { if (command == "disconnected") { CheckConnectionToClientObject.RequestStop(); } if (command == "connected") { CheckConnectionToClientObject.RequestStart(); } } if (commandtype == "DC") // We are dealing with drive commands. { if (typcom.Length == 3) { var motorpart = command.Split(','); var servopart = parameters.Split(','); if (motorpart.Length == 3) { speed = int.Parse(motorpart[0]); wheelPos1 = int.Parse(motorpart[1]); wheelPos2 = int.Parse(motorpart[2]); } else { Console.WriteLine("Error, can't parse motor command \"" + command + "\""); } if (servopart.Length == 2) { servoX = int.Parse(servopart[0]); servoY = int.Parse(servopart[1]); } else { Console.WriteLine("Error, can't parse servo command \"" + parameters + "\""); } Helpers.motorCalcsTank(speed, wheelPos1, wheelPos2, servoX, servoY); } else { Console.WriteLine("Error, can't parse drive command \"" + strData + "\""); } } if (commandtype == "L") // We are dealing with something we need to log server sided. { Console.WriteLine("LOG: " + command); if (parameters != null) { logWriter.WriteToLog(parameters, command); } else { logWriter.WriteToLog(command); } } if (commandtype == "C") // We are dealing with a system command. The array can be more than 2 if parameters are added { if (command == "shutdown") { Console.WriteLine("Ima shutting down"); } if (command == "reboot") { Console.WriteLine("REEEEEEEEEEBOOT"); } if (command == "resetmh") { Helpers.ResetMotorHat(); } if (command == "exit") { break; } } } else { Console.WriteLine("Can't parse \"" + strData + "\" as a command."); } // Ok we processed all our data, so lets manipulate that data to simulate damage. if (Damage.ControllUnit >= 25) // Control unit damage, Changes the sleeptime of the loop { var temp = random.Next(50, Damage.ControllUnit + 50) * 1.20; sleepTime = (int)Math.Floor(temp); } if (DoDamageSimulation) { if (Damage.Motor >= 25 && MotorConfig == "Normal") { if (speed > 0) { speed -= random.Next(0, Damage.Motor); if (speed < 0) { speed = 0; } } if (speed < 0) { speed += random.Next(0, Damage.Motor); if (speed > 0) { speed = 0; } } } if (Damage.LeftMotor >= 25 && MotorConfig == "Tank") { if (wheelPos1 > 0) { wheelPos1 -= random.Next(0, Damage.LeftMotor); if (wheelPos1 < 0) { wheelPos1 = 0; } } if (wheelPos1 < 0) { wheelPos1 += random.Next(0, Damage.LeftMotor); if (wheelPos1 > 0) { wheelPos1 = 0; } } } if (Damage.RightMotor >= 25 && MotorConfig == "Tank") { if (wheelPos2 > 0) { wheelPos2 -= random.Next(0, Damage.RightMotor); if (wheelPos2 < 0) { wheelPos2 = 0; } } if (wheelPos2 < 0) { wheelPos2 += random.Next(0, Damage.RightMotor); if (wheelPos2 > 0) { wheelPos2 = 0; } } } DoDamageSimulation = false; } else { if (DamageTimer == 10) { DoDamageSimulation = true; } DamageTimer++; } int[] motorSpeeds = { 0, 0, 0 }; CheckConnectionToClientObject.timeSinceLastCommand = 0; // LeftMotorSpeed = motorSpeeds[1]; // RightMotorSpeed = motorSpeeds[2]; // var temperature = Helpers.GetPiTemp(); // var load = Helpers.GetPiLoad(); // socketHelper.SendToServer($"SYS:{temperature}|37%|{load}|{LeftMotorSpeed}|{RightMotorSpeed}"); } socket.Close(); accepted.Close(); }
// Use this for initialization void Start() { bts = ball.GetComponent <BallTriggeringScript>(); rb = ball.GetComponent <Rigidbody>(); ab = ball.GetComponent <ArduinoBridge>(); }