When you write this in Form2:
public static MainMenu MM = new MainMenu();
it does what it says: creates a new instance of the form which - like all other class instances - has nothing to do with any existing instances.
In addition, doing it this way breaks OOPs: it "locks" the two forms together so you can't change one without considering the effects on the other.
"Child" forms should not know or care about "Parent" forms: the parent needs to know some info about the child because it is explicitly displaying it, but the reverse should not be the case.
Instead, pass the serial port instance to the Form2 when you create it:
Transferring information between two forms, Part 1: Parent to Child[
^] and pass information abck up if you need to like this:
Transferring information between two forms, Part 2: Child to Parent[
^]