2-Part question because I think I may know the answer to the first part:
The existing solution was to set a timer on a form and read track by track for a few seconds. That doesn't seem too robust.
My idea is to parse the card data and that way I'll know when I'm done.
Unfortunately I just realized while writing this that I don't know how many tracks I'm going to be reading in so I can't really do that.
I was wondering, however, if there was a standard way that magnetic card readers alert you that they're at the end of their lines and have no more lines. I could check one or two of my test readers, but I don't know if it's standard.