SendReceiveMessage() public method

public SendReceiveMessage ( string messageToArduino ) : string
messageToArduino string
return string
示例#1
0
    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
        }
    }