An EventWaitHandle is not the appropriate synchronization object here. You require mutual exclusion so that only one thread can be in a state where it sent a command and is waiting for the response. In other words, threads must strictly take their turn to talk to the device.
A ManualResetEvent doesn't give you that guarantee, as soon as you call Set() then all the threads that are blocking on the WaitOne() call will be unblocked. If that's more than one then your program will malfunction when two or more threads try to send a command at the same time.
A Mutex provides MUTual EXclusion. That's how it got its name.