/* * Handles connecting to a named Arduino and setting pin modes. */ public bool ConnectToArduino(string name, int _serialSpeed) { arduinoCommunicator = ArduinityCommunicator.GetArduinoByName(arduinoName, _serialSpeed); if (arduinoCommunicator == null) { return(false); } // now set the pinmodes for (int i = 0; i < digitalPinModes.Length; i++) { if (digitalPinModes[i] != ArduinoDigitalPinMode.IGNORE) { string pinModeString = ""; switch (digitalPinModes[i]) { case ArduinoDigitalPinMode.INPUT: pinModeString = "INPUT"; break; case ArduinoDigitalPinMode.OUTPUT: pinModeString = "OUTPUT"; break; case ArduinoDigitalPinMode.INPUT_PULLUP: pinModeString = "INPUT_PULLUP"; break; default: // shouldn't get here, very bad.... pinModeString = "INPUT"; break; } string message = "arduinity_dpinmode " + i + " " + pinModeString; arduinoCommunicator.SendMessage(message); } } return(true); }
/* * Handles connecting to a named Arduino and setting pin modes. */ public bool ConnectToArduino(string name, int _serialSpeed) { arduinoCommunicator = ArduinityCommunicator.GetArduinoByName(arduinoName, _serialSpeed); if (arduinoCommunicator == null) return false; // now set the pinmodes for (int i = 0; i < digitalPinModes.Length; i++) { if (digitalPinModes[i] != ArduinoDigitalPinMode.IGNORE) { string pinModeString = ""; switch(digitalPinModes[i]) { case ArduinoDigitalPinMode.INPUT: pinModeString = "INPUT"; break; case ArduinoDigitalPinMode.OUTPUT: pinModeString = "OUTPUT"; break; case ArduinoDigitalPinMode.INPUT_PULLUP: pinModeString = "INPUT_PULLUP"; break; default: // shouldn't get here, very bad.... pinModeString = "INPUT"; break; } string message = "arduinity_dpinmode " + i + " " + pinModeString; arduinoCommunicator.SendMessage(message); } } return true; }
void LateUpdate() { if (continuousUpdate && IsSetup()) { // TODO: wrap this all in an updatepins function string message; // TODO: switch this to batch mode for (int i = 0; i < digitalPins.Length; i++) { if (digitalPinModes[i] == ArduinoDigitalPinMode.INPUT || digitalPinModes[i] == ArduinoDigitalPinMode.INPUT_PULLUP) { // response should be something like 'arduinity_dvalue 6 1' // which is pin six value high string response = arduinoCommunicator.SendReceiveMessage("arduinity_dread " + i); // read the last number in the response string /*int receivedPin = int.Parse(response.Substring(response.IndexOf(' ')+1,response.LastIndexOf(' '))); * if(receivedPin != i) Debug.Log("Arduinity::LateUpdate(): recieved late message (" + response + ")"); * digitalPins[receivedPin] = int.Parse(response.Substring(response.LastIndexOf(' ') + 1));*/ digitalPins[i] = int.Parse(response.Substring(response.LastIndexOf(' ') + 1)); } else if (digitalPinModes[i] == ArduinoDigitalPinMode.OUTPUT) { message = "arduinity_dwrite " + i + " " + digitalPins[i]; arduinoCommunicator.SendMessage(message); #if debugSerialMessage Debug.Log("ArduinitySerialInterface::LateUpdate(): sent message: " + message); #endif } else if (digitalPinModes[i] == ArduinoDigitalPinMode.OUTPUT_PWM) { message = "arduinity_pwrite " + i + " " + digitalPins[i]; arduinoCommunicator.SendMessage(message); #if debugSerialMessage Debug.Log("ArduinitySerialInterface::LateUpdate(): sent message: " + message); #endif } } for (int i = 0; i < analogPins.Length; i++) { if (analogPinModes[i] == ArduinoAnalogPinMode.INPUT) { string response = arduinoCommunicator.SendReceiveMessage("arduinity_aread " + i); // this will protect from trying to parse empty strings if (response == "" || response == null) { continue; } analogPins[i] = int.Parse(response.Substring(response.LastIndexOf(' ') + 1)); } /*else if (analogPinModes[i] == ArduinoAnalogPinMode.OUTPUT_DIGITAL) * { * message = "arduinity_dwrite A" + i + analogPins[i]; * arduinoCommunicator.SendMessage(message); * }*/ } #if debugSerial Debug.Log(arduinoCommunicator.ReceiveMessage()); #endif } }