Serial.begin(115200);
115200 is quite fast, you might be getting errors, try using 9600 (remember to change it on both the micro and the PC)
lcd.print(DataIn); //For some reason, any data recieved via serial is Signed.
Just out of interest, what happens if you code it to print the numbers on the LCD as decimal
lcd.print(datain,DEC);
also try the slightly different println function
Serial.println(datain, DEC);
you could also try HEX
in VB
outStr = Chr(NumericUpDown1.Value) + Chr(NumericUpDown2.Value)
check both NumericUpDown1 AND NumericUpDown2 have their .Maximum .Minimum values set correct?
Maybe NumericUpDown2 never got changed and is set to -127 +127 or something.
Another thing you could test. If you change your first byte so its 200 instead of 50, does that stop working as well?