Я не уверен на 100%, так как раньше я не работал с последовательными портами, но у меня есть внутреннее чувство, что, поскольку каждый раз, когда вы создаете новый экземпляр SerialPort
, он помечается как закрытый, что означает, что вы будетевсегда принимайте IsOpen
как false.
Затем, когда вы пытаетесь открыть его, он уже открыт, и вы получаете эту ошибку, которая выглядит в MSDN:
The current process, or another process on the system, already has the specified COM port open either by a SerialPort instance or in unmanaged code.
Попробуйте, возможно, сохранитьSerialPort
экземпляр и использование его как своего рода синглтон (Также я вижу, что в MSDN это то, что они делают ).
Кроме того, я думаю, вы должны проверить, если портоткройте в начале как проверку работоспособности и остановитесь там вместо того, чтобы делать все и только в конце.