Метод .rxbuffrq

Назначение:Для выбранного последовательного порта (выбор выполняется через ser.num) предварительно запрашивает numpages страниц буфера (1 страница = 256 байт) для буфера приёма (RX) этого порта.
Синтаксис:ser.rxbuffrq(numpages as {byte | word}) as {byte | word}
Возвращает:Фактическое число страниц, которое можно выделить.
См. также:Выделение памяти для буферов, ser.txbuffrq

ПараметрОписание
numpagesЗапрашиваемое число страниц буфера для выделения.

Подробности

Возвращает фактическое число страниц, которое можно выделить. Само выделение происходит при использовании метода sys.buffalloc. Если ёмкость буфера приёма (RX) равна 0, последовательный порт не может принимать данные. Фактическую текущую ёмкость буфера можно проверить через ser.rxbuffsize, которое возвращает ёмкость буфера в байтах.

Связь между ними такова: ser.rxbuffsize = num_pages * 256 - X (или = 0 при num_pages = 0), где «num_pages» - число страниц буфера, ПРЕДОСТАВЛЕННОЕ по запросу ser.rxbuffrq. Вычитание «- X» связано с тем, что часть байтов нужна для внутренних переменных буфера. X = 17 байт на 16-разрядных платформах и 33 байта на 32-разрядных. Тип платформы указан в документации по платформе.

Выделение буфера не сработает, если порт, которому он принадлежит, открыт (ser.enabled = 1 - YES) в момент выполнения sys.buffalloc. Менять размеры буферов можно только у закрытых портов.

У старых устройств объём ОЗУ был меньше, поэтому аргумент numpages и значение, возвращаемое методом, имели тип byte. Максимально возможное число страниц поэтому не могло превышать 255. На новых устройствах с большим объёмом ОЗУ метод принимает и возвращает значения типа word. Чтобы знать, какой тип данных используется, посмотрите объявление метода на используемой платформе.

Исходный материал Tibbo обновлён 9 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке