Вот именно существует. Только там свой канальный уровень - ориентированный на Ethernet с её кадровой природой. А SPP-профиль в BT - это байтовый поток, а-ля - COM-порт. Т.е. - совсем не кадровый по своей природе, а поток байт. Только он не имеет временных характеристик обычного COM-порта. А значит - ни канальный уровень Modbus-TCP ни канальный уровень последовательного порта здесь применить нельзя. С Modbus-TCP дела не имел, но думаю что там кадр Modbus полностью входит внутрь TCP-кадра, так и определяются его границы.
А как вы границы Modbus-кадра в SPP-профиле определите? Нужен другой алгоритм выделения кадров. Для такого канала как BT, где нельзя привязаться к временным характеристикам и он не имеет пакетной природы, подойдёт например SLIP-протокол канального уровня. Он не имеет привязки к временным характеристикам - может работать на любом последовательном канале, хоть железный UART, хоть любой виртуальный (BT, GSM, CDC-USB и т.п.).
Для передачи IP-датаграмм через последовательные каналы как раз и используют SLIP-протокол, когда среда передачи представляет из себя поток байт. Например ранее, когда были телефонные модемы, он как раз и использовался. SLIP-протокол обеспечивает деление на кадры и кодонезависимость. Можно использовать и другой протокол, с меньшей избыточностью.
Либо можно использовать какой-то другой BT-профиль, где передача носит кадровый характер (с приемлемыми размерами кадров).
|