Я разрабатываю приложение C ++ для встроенного Linux.
Это приложение имеет функцию отправки данных BMP -изображения, хранящихся в хранилище Linux. (Байт 8192 - это размер буфера для последовательной отправки во встроенном Linux)
иначе данные будут несовершенными на приемном компьютере. 115200.
и это мои функции для открытия последовательного порта и отправки данных. < /P>
int portFd;
bool Open() {
portFd = open("/dev/ttyGS0", O_RDWR | O_NOCTTY);
if (portFd < 0) {
return false;
}
return true;
}
void Write(char *imgData, int len) {
int oneWriteSize = 8192;
while (len > oneWriteSize) {
write(portFd, imgData, oneWriteSize);
imgData += oneWriteSize;
len -= oneWriteSize;
std::this_thread::sleep_for(std::chrono::milliseconds(8));
}
if (len > 0) {
write(portFd, imgData, len);
}
}
< /code>
Например, если размер данных изображения составляет 263222 байт, приложение отправляет 32 раза 8192 байта. Finnaly, отправьте последнее 1078 байт.
возвращаемое значение write () всегда было равным размеру отправленных данных.
Однако размер данных, фактически полученных приемником, был меньше, чем исходный размер данных, если интервал 8MS не был вставлен. /> О. Я так дурач. Поэтому Windows отсутствовали полученные данные.
Windows App должен получить все данные, отправленные с Linux одновременно. < /P>
Подробнее здесь: https://stackoverflow.com/questions/796 ... via-serial
Как быстро и точно отправлять данные изображения BMP через последовательный? [закрыто] ⇐ C++
Программы на C++. Форум разработчиков
1748594195
Anonymous
Я разрабатываю приложение C ++ для встроенного Linux.
Это приложение имеет функцию отправки данных BMP -изображения, хранящихся в хранилище Linux. (Байт 8192 - это размер буфера для последовательной отправки во встроенном Linux)
иначе данные будут несовершенными на приемном компьютере. 115200.
и это мои функции для открытия последовательного порта и отправки данных. < /P>
int portFd;
bool Open() {
portFd = open("/dev/ttyGS0", O_RDWR | O_NOCTTY);
if (portFd < 0) {
return false;
}
return true;
}
void Write(char *imgData, int len) {
int oneWriteSize = 8192;
while (len > oneWriteSize) {
write(portFd, imgData, oneWriteSize);
imgData += oneWriteSize;
len -= oneWriteSize;
std::this_thread::sleep_for(std::chrono::milliseconds(8));
}
if (len > 0) {
write(portFd, imgData, len);
}
}
< /code>
Например, если размер данных изображения составляет 263222 байт, приложение отправляет 32 раза 8192 байта. Finnaly, отправьте последнее 1078 байт.
возвращаемое значение write () всегда было равным размеру отправленных данных.
Однако размер данных, фактически полученных приемником, был меньше, чем исходный размер данных, если интервал 8MS не был вставлен. /> О. Я так дурач. Поэтому Windows отсутствовали полученные данные.
Windows App должен получить все данные, отправленные с Linux одновременно. < /P>
Подробнее здесь: [url]https://stackoverflow.com/questions/79633379/how-to-send-bmp-image-data-fast-and-accurately-via-serial[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия