title: C ~ Arduino: halt after call to function
body: <p>I'm having a hard time debugging this piece of code, and i'm hoping someone can point out where i am making the mistake.<br>
  <br>
  My serial output is:</p>
  
  <pre><code>connected
  GetData()
  got data...
  next stage...
  </code></pre>
  
  <p><br>
  I've tested with a simple network client that loops sending a hello world, and it works fine. Every time this code halts after attempting to send a value to the <code>client</code>. I know that  <code>getData()</code> is causing the issue, but i cannot work out why, or how to best resolve it.
  (apologies for the code dump, i want to be thorough)</p>
  
  <pre><code>#include &lt;LiquidCrystal.h&gt;
  #include &lt;dht11.h&gt;
  #include &lt;SPI.h&gt;
  #include &lt;Ethernet.h&gt;
  dht11 DHT11;
  #define DHT11PIN 8
  
  byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
  
  IPAddress server(192,168,1,100);
  IPAddress ip(192,168,1,50);
  EthernetClient client;
  
  LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
  
  const int trigPin = 6;
  const int echoPinOne = 7;
  const int echoPinTwo = 8;
  const int echoPinThree = 9;
  const int echoPinFour = 10;
  
  void setup() { 
    lcd.begin(16, 2);
    Serial.begin(9600);
    delay(1000);
  
    //Network
   if (Ethernet.begin(mac) == 0) {
      Serial.println("DHCP FAIL");
      Ethernet.begin(mac, ip);
    }
    delay(1000);
    Serial.println("connecting...");
    lcd.setCursor(0, 0);
    lcd.print("connecting");
    connect();  
  }
  
  void connect(){ 
      if (client.connect(server, 8080)) {
        Serial.println("connected");
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("connected");
  
        client.println("hello server");
        client.println();
        delay(500);
        lcd.clear();
    } 
    else {
      Serial.println("connection failed");
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Connection Failure");
    }
    delay(500);
  }
  
  void loop() {
     //network
    if(!client.available()){
      Serial.println("lost connection!-restart");
      lcd.println("Disconnection");
      client.stop();
      connect();
    }
    else {
      int inp[5];   
      getData(inp);
      Serial.println("next stage...");
      char *output = (char *) &amp;inp[0];   
      client.println(output);
      client.println("first");    
      Serial.println("sent first...");
      //here repeats the same process for the other sensors - omitted for clear reading 
    }
     //end network
     delay(500);
  }
  
  void getData(int *inputBuf){  
    Serial.println("GetData()");
    long durationThree, inchesThree, cmThree = 0;
    long durationOne, inchesOne, cmOne = 0;
    long durationTwo, inchesTwo, cmTwo = 0;
    long durationFour, inchesFour, cmFour = 0;
  
    //SENSOR ONE
    pinMode(trigPin, OUTPUT);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
  
    pinMode(echoPinOne, INPUT);
    durationOne = pulseIn(echoPinOne, HIGH);
  
    delay(100);
  
    //SENSOR TWO
    pinMode(trigPin, OUTPUT);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
  
    pinMode(echoPinTwo, INPUT);
    durationTwo = pulseIn(echoPinTwo, HIGH);
  
    delay(100);
  
    //SENSOR THREE
    pinMode(trigPin, OUTPUT);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
  
    pinMode(echoPinThree, INPUT);
    durationThree = pulseIn(echoPinThree, HIGH);
  
    delay(100);
  
    //SENSOR FOUR
    pinMode(trigPin, OUTPUT);
    digitalWrite(trigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(trigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(trigPin, LOW);
  
    pinMode(echoPinFour, INPUT);
    durationFour = pulseIn(echoPinFour, HIGH);
  
    //DISTANCE CALCULATION
    cmOne = microsecondsToCentimeters(durationOne);
    cmTwo = microsecondsToCentimeters(durationTwo);
    cmThree = microsecondsToCentimeters(durationThree);
    cmFour = microsecondsToCentimeters(durationFour);
  
    //Serial.println("sending...");
    //char *out = (char *) &amp;cmOne;
    //Serial.println(out);
    //client.println(out);
    //Serial.println("sent!");      used this to test - same issue
  
    Serial.println("got data...");
    inputBuf[0] = cmOne;
    inputBuf[1] = cmTwo;
    inputBuf[2] = cmThree;
    inputBuf[3] = cmFour;
  
  }
  
  long microsecondsToCentimeters(long microseconds)
  {
    return microseconds / 29 / 2;
  } 
  </code></pre>