Какие существуют ограничения на длину String?
- Войдите на сайт для отправки комментариев
Втр, 30/10/2012 - 12:10
В программе приходится работать с внешним устройством по COM порту. На определенные команды это устройство может прислать ответ объемом до 800 байт. Используя String для чтения данных из Serial, получаю только 63 байта.
Где наложены ограничения? В буфере Serial или в String?
Где наложены ограничения? В буфере Serial или в String?
Длина буфера Serial - 128 байт, проблемы возникают только в случае переполнения (поздней или недостаточно быстрой реакции на поступающую/поступившую информацию)
Длина строки ограничивается доступным объемом RAM.
Стало быть, ограничение - в ваших кодах, которые здесь не представлены.
Ограничение буфера находится в файле hardware\arduino\cores\arduino\HardwareSerial.cpp
String ограничен только доступной памятью. Помните, что памяти в контроллере не вагон, она нужна еще для кучи переменных, стека и т.д. Постарайтесь лучше как-то изменить алгоритм приема строки или ее формат. Многовато 800 для дуины...
Это что за версия - с таким ограничением?
В IDE23:
Версия 1.0.1
Спасибо за наводку на файл HardwareSerial.cpp
По крайней мере смог безболезненно увеличить буфер для Serial до 100 байт... Буду пробывать изменить общий алгоритм...
Там не длину буфера увеличивать надо, а вовремя читать из него.
То есть править ваши коды.