NI provides suggestion https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000019SC2SAM&l=en-US but it isn't useful.
In my case it happens when application uses I2C device on Arduino. I think it happens due slow Arduino internal or external device, like AI in NI article or I2C device. It happens when
1. LabVIEW application sends first command through COM interface
2. LINX application in Arduino starts to process first command
3. LabVIEW application sends second command but LINX application hasn't finished to process first command.
Probably, LINX application in Arduino hangs USB interface and COM port over USB interface doesn't work at all. If you would get -5003 error you can try simple Serial test LabVIEW example to see that example gets Serial port from Windows but can't write any data!
Another confirmation that the issues is in Arduino is that this error disappears after rebooting Arduino device.
Suggestion to set delay in Packet Number.vi helps because it slows down communication. For example, LINX Blink example can send command 400 times per sec. When 500 ms delay would be added then LINX Blink example will send command 2 times per sec! But such approach will slow down each command!
So bug is inside of LINX application in Arduino. LabVIEW application could avoid this bug if it would add delay for slow device. For example, LabVIEW application works "I2C write -> Delay XXX mc -> I2C read" instead of "I2C write -> I2C read".