SerialPort открыт, но выдает исключение NullReferenceException для BytesToRead
Я создал SerialPort, и могу проверить, что он не является нулевым, и что SerialPort.IsOpen() возвращает true. Но когда я проверяю свойство BytesToRead, я получаю исключение NullReferenceException.
NullReferenceException: Object reference not set to an instance of an object
System.IO.Ports.WinSerialStream.get_BytesToRead ()
System.IO.Ports.SerialPort.get_BytesToRead ()
(wrapper remoting-invoke-with-check)
System.IO.Ports.SerialPort:get_BytesToRead ()
...
Я могу перейти к отладчику и убедиться, что непосредственно перед вызовом BytesToRead последовательный порт установлен и открыт, но отладчик не может достичь определенных свойств, включая BytesToRead.
"System.IO.Ports.SerialPort"
base: "System.IO.Ports.SerialPort"
BaseStream: {System.IO.Ports.WinSerialStream}
BaudRate: 9600
BreakState: false
BytesToRead: System.NullReferenceException: Object reference not set to an instance of an object
BytesToWrite: System.NullReferenceException: Object reference not set to an instance of an object
CDHolding: false
CtsHolding: true
DataBits: 8
DiscardNull: System.NotImplementedException: The requested feature is not implemented.
DsrHolding: false
DtrEnable: false
Encoding: {System.Text.ASCIIEncoding}
Handshake: None
IsOpen: true
NewLine: "\r\n"
Parity: None
ParityReplace: System.NotImplementedException: The requested feature is not implemented.
PortName: "COM3"
ReadBufferSize: 4096
ReadTimeout: 50
ReceivedBytesThreshold: System.NotImplementedException: The requested feature is not implemented.
RtsEnable: false
StopBits: One
WriteBufferSize: 2048
WriteTimeout: -1
Что может быть не так?
1 ответ
Решение
Кажется, это было ошибкой для Unity с 2016 года. Они "отложили" работу над этим.
Обходной путь - использовать экспериментальную версию.NET 4.6, если вы можете без проблем перейти на нее в своем проекте.
https://issuetracker.unity3d.com/issues/serialport-bytestoread-returns-null-reference