https://aticleworld.com/serial-port-programming-using-win32-api/