while(Serial.available() > 0){
for (int i = 0; i < 3; i++){
myChar = Serial.read();
When there is at least one byte to read, read all 3 of them. That will almost never work.
If you know that there are three bytes in a packet, you need to wait for three bytes to be available to read before you read anything.
However, "sendSony, 0x000000,32" is NOT three bytes. It's also unnecessarily complex. There are not that many IR protocols. Instead of "sendSony", you could send "S". Instead of sending the value in hex, send it in decimal. Then, when there is one byte to read, the protocol to use, read it, and then call Serial.parseInt() to read the 1st value, and call Serial.parseInt() again to read the 2nd value.
The parseInt() function is a blocking function. That means that it will wait for the data to arrive.
Once you have the protocol and the two values, calling the appropriate function is trivial.