Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

На предыдущей странице задавал вопрос об алгоритме быстрого определения любого отсутствующего байта в произвольном массиве байтов размером <= 255.

Отправлено leon_ 31 мая 2007 г. 10:50


Я это применил для передачи пакетов от ПЭВМ в МК.
А вот для обратной передачи пришлось отказаться крутить циклы в МК.

Для формирования пакетов 8-битных данных и передачи по RS232.
Назначаю какой-то байт разделителем пакетов, например 0x55.
Дальше необходимо присоеденить произвольный пакет размером <= 254 байт. Но в этом
пакете могут быть байты 0x55. Поэтому их необходимо заменить каким-то
другим байтом, которого в пакете точно нет. А раз размер пакета <= 254,
то такой символ точно существует, например 0xAA.
Результирующий пакет выглядит так:
0x55, 0xAA, а дальше весь исходный пакет с замененными значениями 0x55 на 0xAA.
При приеме находим первый байт 0x55, запоминаем очередной байт 0xAA и
дальше принимаем остальные данные заменяя встретившиеся байты равные
запомненому (Для этого пакета 0xAA) на 0x55. Накладные расходы
информативности канала на такую передачу не большие и можна нормально
использовать RS232 для передачи проиозвольных 8-битных данных.

Что думаете по этому поводу? Спасибо.

Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 654:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru