I am using this header: http://playground.arduino.cc/Interfacing/CPPWindows

My main:

    #include <iostream>
    #include <stdio.h>
    #include <tchar.h>
    #include "SerialClass.h"
    #include <string>
    
    int main(int argc, _TCHAR* argv[])
    {
    	Serial* SP = new Serial("\\\\.\\COM4");
    
    	if (SP->IsConnected())
    		printf("We're connected\n");
    
    	std::string tryStr;
        int value;
        DWORD bytesSend;



        /* Loop */
    	while(SP->IsConnected())
    	{
             /* Take a value from user */
             printf("Value: "); scanf("%d",&value); 
    
             /* Send Arduino */
             BOOL retVal = WriteFile(SP->hSerial, &value, sizeof(value), &bytesSend, NULL);
    
            /* I have no idea what is this for? (SP->status.cbInQue) */
            ClearCommError(SP->hSerial, &SP->errors, &SP->status);
    
            /* Read string from arduino */
            DWORD bytesRead;
            tryStr.assign("");
            bool check = true;
            char tempCharacter;
            while (check==true){
    
                ReadFile(SP->hSerial, &tempCharacter, sizeof(char), &bytesRead, NULL);
                tryStr += tempCharacter;
    
                if(tempCharacter == '$'){
                    check = false;
                }
            }
    
            /* Print the string */
            std::cout << tryStr  << std::endl << std::endl ;
    	}
    	return 0;
    }

My Arduino Code:

    int LedPin= 10; 
    int value;
    String  incomingData = "hello$";
    
    void setup (){
      Serial.begin(9600); 
      pinMode(LedPin, OUTPUT); 
    }
    
    void loop (){
    
      while(!(Serial.available() > 0)){
        /*Wait until take data */
      }
      
      value=Serial.read(); 
    
      if (value == 20)
      {
          digitalWrite (LedPin, HIGH); 
          incomingData.setCharAt(0,'o');
          incomingData.setCharAt(1,'p');
          incomingData.setCharAt(2,'e');
          incomingData.setCharAt(3,'n');
          incomingData.setCharAt(4,'n');
      
          Serial.print(incomingData);
      }
      else if (value == 15)
      {
          digitalWrite (LedPin, LOW);
          incomingData.setCharAt(0,'c');
          incomingData.setCharAt(1,'l');
          incomingData.setCharAt(2,'o');
          incomingData.setCharAt(3,'s');
          incomingData.setCharAt(4,'e');
      
          Serial.print(incomingData);
      }
      
    
    }

This code works perfectly. Output:


> We're connected  Value: 20  openn$
> 
> Value: 15  close$
> 
> Value: 20  openn$
> 
> Value: 20  openn$
> 
> Value: 15  close$
> 
> Value: 15  close$  
> 
> Value: 20  openn$


But I want make this for Arduino Code:

    int LedPin= 10; 
    int value;
    String  incomingData = "hello$";
    
    void setup (){
      Serial.begin(9600); 
      pinMode(LedPin, OUTPUT); 
    }
    
    void loop (){
    
      while(!(Serial.available() > 0)){
        /*Wait until take data */
      }
    
      value=Serial.read(); 
    
      if (value == 20)
      {
          digitalWrite (LedPin, HIGH); 
          incomingData.setCharAt(0,'o');
          incomingData.setCharAt(1,'p');
          incomingData.setCharAt(2,'e');
          incomingData.setCharAt(3,'n');
          incomingData.setCharAt(4,'n');
    
          Serial.print(incomingData);
      }
      else if (value == 15)
      {
          digitalWrite (LedPin, LOW);
          incomingData.setCharAt(0,'c');
          incomingData.setCharAt(1,'l');
          incomingData.setCharAt(2,'o');
          incomingData.setCharAt(3,'s');
          incomingData.setCharAt(4,'e');
    
          Serial.print(incomingData);
      }
      else{                                      // new line added
                                                 // new line added
          incomingData.setCharAt(0,'g');         // new line added
          incomingData.setCharAt(1,'g');         // new line added
          incomingData.setCharAt(2,'g');         // new line added
          incomingData.setCharAt(3,'g');         // new line added
          incomingData.setCharAt(4,'g');         // new line added
                                                 // new line added
          Serial.print(incomingData);            // new line added
      }                                          // new line added
    
    }

But it didn't worked. ScreenShot:
[![ScreenShot][2]][2]

Why didn't worked? By the way lamp is works perfectly. But string is wrong.


  [1]: https://i.sstatic.net/8s7uA.png
  [2]: https://i.sstatic.net/5M71R.png