c serial port read

Определение

Выполняет чтение из входного буфера SerialPort. Reads from the SerialPort input buffer.

Перегрузки

Считывает из входного буфера SerialPort определенное число байтов и записывает их в байтовый массив, начиная с указанной позиции. Reads a number of bytes from the SerialPort input buffer and writes those bytes into a byte array at the specified offset.

Считывает из входного буфера SerialPort определенное число символов и записывает их в символьный массив, начиная с указанной позиции. Reads a number of characters from the SerialPort input buffer and writes them into an array of characters at a given offset.

Read(Byte[], Int32, Int32)

Считывает из входного буфера SerialPort определенное число байтов и записывает их в байтовый массив, начиная с указанной позиции. Reads a number of bytes from the SerialPort input buffer and writes those bytes into a byte array at the specified offset.

Параметры

Массив байтов, в который записываются входные данные. The byte array to write the input to.

Смещение в buffer , с которым следует записывать байты. The offset in buffer at which to write the bytes.

Максимальное число байтов, предназначенных для чтения. The maximum number of bytes to read. Считывается меньшее число байтов, если count больше числа байтов во входном буфере. Fewer bytes are read if count is greater than the number of bytes in the input buffer.

Возвраты

Количество прочитанных байтов. The number of bytes read.

Исключения

Буфер для записи задан значением null . The buffer passed is null .

Указанный порт не открыт. The specified port is not open.

Значение параметра offset или count выходит за пределы указанного массива buffer . The offset or count parameters are outs >buffer being passed. Значение параметра offset или count меньше нуля. Either offset or count is less than zero.

offset плюс count превышает длину массива buffer . offset plus count is greater than the length of the buffer .

Отсутствуют байты, доступные для чтения. No bytes were available to read.

Комментарии

Если необходимо переключаться между чтением текста и считыванием двоичных данных из потока, выберите протокол, который аккуратно определяет границу между текстовыми и двоичными данными, например чтение вручную байтов и декодирование данных. If it is necessary to switch between reading text and reading binary data from the stream, select a protocol that carefully defines the boundary between text and binary data, such as manually reading bytes and decoding the data.

BaseStream Так как SerialPort класс помещает данные в буфер, а поток, содержащийся в свойстве, не имеет значения, два могут конфликтовать с тем, сколько байтов доступно для чтения. Because the SerialPort class buffers data, and the stream contained in the BaseStream property does not, the two might conflict about how many bytes are available to read. Свойство может означать, что есть байты для чтения, но эти байты могут быть недоступны для потока, содержащегося BaseStream в свойстве, так как они SerialPort были помещены в буфер класса. BytesToRead The BytesToRead property can indicate that there are bytes to read, but these bytes might not be accessible to the stream contained in the BaseStream property because they have been buffered to the SerialPort class.

Метод не блокирует другие операции, когда число считанных байтов равно count , но в последовательном порте остаются непрочитанные байты. Read The Read method does not block other operations when the number of bytes read equals count but there are still unread bytes available on the serial port.

Read(Char[], Int32, Int32)

Считывает из входного буфера SerialPort определенное число символов и записывает их в символьный массив, начиная с указанной позиции. Reads a number of characters from the SerialPort input buffer and writes them into an array of characters at a given offset.

Параметры

Массив символов, в который записываются входные данные. The character array to write the input to.

Смещение в buffer , с которым следует записывать знаки. The offset in buffer at which to write the characters.

Максимальное число считываемых символов. The maximum number of characters to read. Считывается меньшее число знаков, если count больше числа знаков во входном буфере. Fewer characters are read if count is greater than the number of characters in the input buffer.

Возвраты

Число прочитанных знаков. The number of characters read.

Исключения

offset плюс count превышает длину буфера. offset plus count is greater than the length of the buffer.

— или — -or- count равно 1 и в буфере имеется символ-суррогат. count is 1 and there is a surrogate character in the buffer.

В качестве buffer передано null . The buffer passed is null .

Значение параметра offset или count выходит за пределы указанного массива buffer . The offset or count parameters are outs >buffer being passed. Значение параметра offset или count меньше нуля. Either offset or count is less than zero.

Указанный порт не открыт. The specified port is not open.

Отсутствуют символы, доступные для чтения. No characters were available to read.

Комментарии

Используйте этот метод для чтения символов из последовательного порта. Use this method for reading characters from the serial port.

Если необходимо переключаться между чтением текста и считыванием двоичных данных из потока, выберите протокол, который аккуратно определяет границу между текстовыми и двоичными данными, например чтение вручную байтов и декодирование данных. If it is necessary to switch between reading text and reading binary data from the stream, select a protocol that carefully defines the boundary between text and binary data, such as manually reading bytes and decoding the data.

BaseStream Так как SerialPort класс помещает данные в буфер, а поток, содержащийся в свойстве, не имеет значения, два могут конфликтовать с количеством доступных для чтения символов. Because the SerialPort class buffers data, and the stream contained in the BaseStream property does not, the two might conflict about how many characters are available to read. Свойство может указывать на то, что для чтения есть символы, но эти символы могут быть недоступны для потока, содержащегося BaseStream в свойстве, так как они SerialPort были помещены в буфер класса. BytesToRead The BytesToRead property can indicate that there are characters to read, but these characters might not be accessible to the stream contained in the BaseStream property because they have been buffered to the SerialPort class.

Метод не блокирует другие операции, когда число считанных байтов равно count , но в последовательном порте остаются непрочитанные байты. Read The Read method does not block other operations when the number of bytes read equals count but there are still unread bytes available on the serial port.

I’ve read a lot of questions here about how to read data from serial ports using the .NET SerialPort class but none of the recommanded approaches have proven completely efficient for me.

Here is the code I am using for now:

And the event handler:

But I am still missing some data sometimes. I’ve tried different way of reading the data in the event handler but with no luck.

As the .NET 4.5 brings new possibilities to do some asynchronous tasks, like with the ReadAsync method that seems to be useable on a SerialPort stream, I’m curious to see what would be the recommended approach to handle those cases.

В данном уроке мы откроем тему построения программы на C #(ОС Windows ), предназначенную для взаимодействия с COM -портом системы. Данный порт и по сей день очень часто используется для передачи данных между внешними устройствами и ПК.

Оперировать данными COM порта можно при помощи готовых программ. Например, Terminal и COM Port Toolkit , которые Вы запросто сможете найти Вашим любимым поисковиком. Однако они позволяют лишь читать или передавать данные при помощи порта. Обрабатывать данные, отображать их в удобном для пользователя виде они не могут, потому что это не их основная задача. Каждое разрабатываемое устройство уникально, и поэтому, если Вы хотите создать законченный проект, который каким либо образом взаимодействует с пользователем при помощи ПК, рано или поздно возникает необходимость создания программы-интерфейса взаимодействия с пользователем. С помощью данной программы Вы сможете принимать/отправлять данные используя COM -порт, обрабатывать их, представлять в удобном пользователю виде.

Для создания данной программы, отлично подойдет среда Visual Studio и язык программирования C #, так как с их помощью можно не только непосредственно взаимодействовать с портом, но и построить удобный интерфейс( GUI ) в очень сжатые сроки.

Работать с COM портом будем используя класс SerialPort . Данный класс принимает всю аппаратную часть интерфейса на себя, нам лишь необходимо настроить его и считывать/передавать данные используя буфер этого класса.

Для начала перечислим список доступных COM портов системы:

Оцените статью