Как Вы читаете последовательный порт с Windows 10 core
Используя python на Raspberry PI, я использую аналогичный код для чтения данных из последовательного порта:
baud = 9600 # baud rate
port = '/dev/ttyACM0' # serial URF port on this computer
ser = serial.Serial(port, baud)
ser.timeout = 0
var message = ser.read(9);
По существу, я просто хочу иметь возможность считывать сообщение с последовательного порта и выполнять действие, основанное на этом сообщении.
Как это может быть достигнуто с помощью Windows 10 Core и c#, может ли кто-нибудь указать мне правильное направление или предоставить пример кода?
Заранее благодарю за любую полученную помощь.
3 ответа:
Оказывается, что последовательный порт на PI еще не поддерживается, что очень расстраивает: https://www.raspberrypi.org/forums/viewtopic.php?t=109047&p=751638
Вот поддерживаемый Способ:
serialPort = await SerialDevice.FromIdAsync(comPortId); serialPort.WriteTimeout = TimeSpan.FromMilliseconds(1000); serialPort.ReadTimeout = TimeSpan.FromMilliseconds(1000); serialPort.BaudRate = 115200; serialPort.Parity = SerialParity.None; serialPort.StopBits = SerialStopBitCount.One; serialPort.DataBits = 7; serialPort.Handshake = SerialHandshake.None; serialPort.IsRequestToSendEnabled = true; dataReaderObject = new DataReader(serialPort.InputStream); // Set InputStreamOptions to complete the asynchronous read operation when one or more bytes is available dataReaderObject.InputStreamOptions = InputStreamOptions.Partial; // Create a task object to wait for data on the serialPort.InputStream loadAsyncTask = dataReaderObject.LoadAsync(ReadBufferLength).AsTask(cancellationToken); // Launch the task and wait UInt32 bytesRead = await loadAsyncTask; if (bytesRead > 0) { try { var msg = dataReaderObject.ReadString(bytesRead); } catch (Exception ex ) { } }
Он поддерживается начиная с Windows 10 IoT Core версии 10.0.10586.0. Смотрите: https://ms-iot.github.io/content/en-US/win10/samples/SerialSample.htm