You create a long-lived thread to monitor the serial port. To safely do that, you would put the thread into a unique key in the persistent dictionary from system.util.globals. You would have that thread write badge read results to a Vision Client Tag, monitored with a client tag change event to apply it appropriately.
Some reading for you:
Also these: