BA Cnet сегментация не поддерживается на мобильных устройствах - PullRequest
0 голосов
/ 18 февраля 2020

Я реализую библиотеку ba cnet для чтения и записи некоторых экземпляров объекта. Но я не понимаю, почему с P C и с таким приложением, как Yabe, если я прошу общий контроллер прочитать более 300 объектов, сегментация поддерживается вместо этого с помощью мобильного телефона и по тому же запросу тот же контроллер сегментация не поддерживается. И P C, и смартфон находятся в одной сети по Wi-Fi. Так в чем же проблема / разница?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Ничего не стоит взять с собой P C или мобильный телефон. Любые IP-совместимые устройства мобильного телефона, настольного компьютера, ноутбука, чипы Arduino будут работать с BA Cnet. Ваша проблема в сегментации. Вам придется обрабатывать сегментированные сообщения, поступающие от контроллера. Каждый поставщик контроллеров BA Cnet указывает MaxApduLength (т. Е. Максимальную длину данных, передаваемых в одном UDP-пакете). Стандартная длина APDU составляет 1476 байтов. Таким образом, контроллер BA Cnet не может отправлять данные, превышающие длину APDU, указанную в нем.

Запрос 300 объектов из контроллера приводит к определенному большому APDU, чем предел контроллера. В этом случае контроллер отправит вам сегментированные сообщения, каждое из которых имеет порядковый номер. Вам придется обрабатывать все эти сегментированные сообщения и объединять их в одно сообщение, тогда только вы получите точный ответ. То же самое с Yabe и другими клиентами BA Cnet.

Я также написал библиотеки BA Cnet для наших мобильных приложений в Java и Swift 4.0, и оба могут читать любое количество объектов с контроллера с добавленной поддержкой сегментации. Я проверил их с контроллерами, имеющими более 400 объектов.

0 голосов
/ 19 февраля 2020

Сегментация используется для APDU (ответов), которые слишком велики, чтобы поместиться в один кадр на линии данных. Если оба устройства поддерживают сегментацию, то отлично. Если одно из устройств не поддерживает сегментацию, а APDU не подходит, выдается ошибка «Сегментация не поддерживается». (и затем вы должны повторить меньший запрос).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...