I think you are not totally of track! You are on the right way =)... the thing is ... it depends =).
If you go with WPF or a XAML based language you should definitely take advantage of the MVVM pattern! Because it's about separation of concerns, testabillity and structuring your software. Before you pick a framework I would strongly suggest to dive more into the pattern (or guidance) MVVM itself. As soon as you got a clear understanding the framework is just a choice of taste.
Getting back to your question.
SerialPort: In MVVM you would probaly have a IDeviceService
which could have an implementation for serial port, one for bluetooth, one for RFID. Your app talks only to IDeviceService
and the implementation is easily swap-able with dependency injection (clear separation of concerns).
Ribbons: Ribbons is just the view and with that the representation of your data which is backed up by a viewmodel. If you decide to go with another UI control this can be exchanged as well. It depends surely on the behavior if you need to code a new view model but controls are just the view and should not contain much logic.
If you decide to go cross OS you might consider looking at a framework which builds upon the PCL http://msdn.microsoft.com/en-us/library/gg597391(v=vs.110).aspx ...
https://github.com/MvvmCross/MvvmCross mvvmcross is well appriciated for cross platform .Net MVVM development lately...
But after all I would suggest to try to get used to the MVVM concepts with smaller projects and get familiar and after that it is just your choice of taste to go with any of the framework or might role your own =)...
HTH