I'm not sure what your problem is, but it may be related to instances.
Your code shows
MainScreen._message = ByteToHex(comBuffer);
The problem is that _message would normally be the name given to an internal field, used as a property base, and declared as
private
(maybe
protected
). If your code compiles, then if (as you say the comPort code is in a different class then it is accessing a field in the MainScreen class. Not only that, but it would appear to be a
static
field - which means it is not related to any particular instance of the main screen.
Check this! If you are accessing a field, rather than a property, then change that - you should not in general expose fields to elements outside the class they are defined in. You probably need an instance of the MainScreen class as well, or it won't know where to display it...