Ma perché hai creato un altro thread? Così non si capisce nulla!
Comunque, una prova che puoi fare è modificare il codice C e inviare sempre una costante, ad esempio
return 165;
e controllare se il valore viene visualizzato correttamente.
Se è così, il problema è sul codice che legge l'hardware, altrimenti è dall'altra parte.