# Badge log In and switching Users

**URL:** <https://forum.inductiveautomation.com/t/badge-log-in-and-switching-users/113191>\
**Category:** Ignition\
**Tags:** vision\
**Created:** [January 9, 2026, 10:17pm UTC](https://forum.inductiveautomation.com/t/badge-log-in-and-switching-users/113191 "2026-01-09T22:17:54Z")\
**Posts on this page:** 1\
**Showing post:** 4

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [January 12, 2026, 3:23pm UTC](https://forum.inductiveautomation.com/t/badge-log-in-and-switching-users/113191/4 "2026-01-12T15:23:25Z")

</div>

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:

> [@How to listen serial data without interruption](https://forum.inductiveautomation.com/t/how-to-listen-serial-data-without-interruption/15709/2):
>
> This is actually a rather challenging task, requiring a background thread constantly listening to the serial port. You might find inspiration in this example: [clientserial.py](https://www.automation-pros.com/ignition/clientserial.py).

Also these:

[https://forum.inductiveautomation.com/search?q=%40pturmel%20background%20serial%20vision%20order%3Alatest](https://forum.inductiveautomation.com/search?q=%40pturmel%20background%20serial%20vision%20order%3Alatest)

---

_[View the full topic](https://forum.inductiveautomation.com/t/badge-log-in-and-switching-users/113191)._
