Difference between tag change scripts and gateway message handler scripts?

I think you are begging for trouble trying to read from a serial port in either a tag event or a message handler. You might find this discussion helpful: