At a quick glace, there's a couple problems. Maybe more, but haven't tested it yet.

With the first USBIN, if there isn't any incoming data from USB, it just loops back to MainLoop. It never makes it to SERIN, unless it receives data from USB at the same time.

You really should use HSERIN. The RS232 data may start while the program is sending or receiving USB data, in which case you would not be able to catch it with SERIN.

Added: And the 100ms timeout on the SERIN will cause it to lose the USB connection, since it isn't servicing it anymore.