Il codice vb è migliorabile. È consigliabile ridurre l'uso degli if, sostituendoli quando sono tanti con i select case. Per il tuo codice comincerei almeno a sistemare l'if di verifica apertura porta Inserendo ELSE invece che due IF:
If Not SerialPort1.IsOpen Then
Serialport1.open()
Serialport1.write(x)
Else serialPort1.write(x)
Cosi gli dici direttamente se non è aperta aprila e poi scrivi altrimenti (quindi significa che al primo controllo è risultata aperta) scrivi direttamente.
Il codice si riduc e si alleggerisce. Ciao