реклама на сайте
подробности

 
 
> USART запрос/ответ, как принять массив через функцию getchar() ?
mr_smit
сообщение Dec 17 2011, 17:20
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 22-07-09
Пользователь №: 51 457



Здравствуйте. Необходимо обмениваться данными с устройством. Каждые 250 мс необходимо отправить:
Запрос: 82 10 F1 21 01 A5
и получить:
Ответ: 80 F1 10 26 61 01 3B 90 41 04 00 00 00 00 47 80 00 00 00 52 52 80 18 00 8E 00 5C 00 00 00 00 00 00 00 00 00 FF FF DD A4 47 02 CE

Данные в ответе выделены зеленым (меняются). Длинна ответа не меняется. Как принять этот массив???

В CVAVR использую мастер начальной настройки. Там создается кольцевой буффер. Т.е. первый байт который попал в буффер первым из него и выйдет. Запрос этого байта через функцию getchar(). Никак не соображу как реализовать. Т.е. получается мне надо вызвать эту функцию "длинна массива" раз. Или создать ещё один промежуточный буффер и в него считывать при каждом вызове getchar() ? Или может какой алгоритм существует. Короче запутался.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ILYAUL
сообщение Dec 17 2011, 20:33
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



80 F1 10 26 , а вот 0x26 это счётчик передаваемых байт - похоже


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
mr_smit
сообщение Dec 17 2011, 21:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 22-07-09
Пользователь №: 51 457



Цитата(ILYAUL @ Dec 17 2011, 23:33) *
80 F1 10 26 , а вот 0x26 это счётчик передаваемых байт - похоже

CE - контрольная сумма (2 младших разряда)

Цитата(AHTOXA @ Dec 17 2011, 22:08) *
Да, заведите второй буфер, для пакета

Да я вот думаю может нафиг вообще этот кольцевой буффер blink.gif Чего то он меня с толку сбивает. Создать буффер в который будут приниматься байты. Когда нужно - читать его. А при каждом следующем запросе начинать прием байтов в начало буффера, перезаписывая его.

Сообщение отредактировал mr_smit - Dec 17 2011, 21:27
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 18 2011, 05:13
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Кольцевой буфер оставьте, он вам никак не мешает. Зато поможет не пропустить символ на приёме, если вдруг затянете с обработкой предыдущего символа. Сделайте его небольшим, байт на 8, авось памяти хватитsm.gif
А остальное - всё как вы написали:
Цитата(mr_smit @ Dec 18 2011, 03:24) *
Создать буффер в который будут приниматься байты. Когда нужно - читать его. А при каждом следующем запросе начинать прием байтов в начало буффера, перезаписывая его.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mr_smit   USART запрос/ответ   Dec 17 2011, 17:20
- - AHTOXA   Да, заведите второй буфер, для пакета. Заведите сч...   Dec 17 2011, 19:08
- - mr_smit   Просто я не понимаю каким образом мне вызывать get...   Dec 18 2011, 06:24
- - mr_smit   В общем убрал кольцевой буффер и сделал вот так: К...   Dec 18 2011, 09:07
- - mr_smit   И еще: Кодunsigned char startCommunication[...   Dec 18 2011, 12:14
- - AHTOXA   Цитата(mr_smit @ Dec 18 2011, 15:07) Выда...   Dec 18 2011, 14:06
- - mr_smit   AHTOXA, спасибо!!!!! Кодvoid S...   Dec 18 2011, 18:20
|- - AHTOXA   Цитата(mr_smit @ Dec 19 2011, 00:20) А во...   Dec 18 2011, 21:06
|- - _Артём_   Цитата(mr_smit @ Dec 18 2011, 20:20) А мо...   Dec 18 2011, 21:26
- - sigmaN   ЦитатаКодwhile (*command) {} там наверно д...   Dec 18 2011, 20:39
- - mr_smit   Ну примерно понял. Спасибо. И ещё. Как лучше орган...   Dec 19 2011, 07:48
- - sigmaN   ЦитатаЗавести переменную битовую как флаг разрешен...   Dec 19 2011, 08:16
- - mr_smit   Цитата(sigmaN @ Dec 19 2011, 11:16) Вот т...   Dec 19 2011, 08:48
- - mr_smit   У меня тут вопрос появился. Нигде не смог найти т...   Dec 20 2011, 11:07
- - toweroff   как обычно, наверное... знаковый байт, старший бит...   Dec 20 2011, 12:17
- - mr_smit   Ладно, мне надо вычесть 40. Т.е. 40 dec в hex буде...   Dec 20 2011, 17:35
|- - Палыч   Цитата(mr_smit @ Dec 20 2011, 21:35) Ладн...   Dec 20 2011, 17:56
|- - toweroff   Цитата(mr_smit @ Dec 20 2011, 21:35) Кодi...   Dec 20 2011, 18:48
- - mr_smit   Цитата(toweroff @ Dec 20 2011, 21:48) а н...   Dec 20 2011, 19:27
|- - toweroff   Цитата(mr_smit @ Dec 20 2011, 23:27) Реши...   Dec 20 2011, 19:44
- - mr_smit   Цитата(toweroff @ Dec 20 2011, 15:17) ......   Dec 20 2011, 19:51
- - XVR   Жуть, столько телодвижений вместо того, что бы про...   Dec 21 2011, 11:18
|- - toweroff   Цитата(XVR @ Dec 21 2011, 15:18) signed c...   Dec 21 2011, 11:57
- - mr_smit   Цитата(XVR @ Dec 21 2011, 14:18) Жуть, ст...   Dec 21 2011, 18:10
|- - toweroff   Цитата(mr_smit @ Dec 21 2011, 22:10) А в ...   Dec 21 2011, 18:14
|- - _Артём_   Цитата(mr_smit @ Dec 21 2011, 20:10) Спас...   Dec 21 2011, 21:09
- - mr_smit   Просто вроде как sizeof должна возвращать длину ма...   Dec 21 2011, 22:03
|- - _Артём_   Цитата(mr_smit @ Dec 22 2011, 00:03) Прос...   Dec 21 2011, 23:11
|- - XVR   Цитата(_Артём_ @ Dec 22 2011, 03:11) Но в...   Dec 22 2011, 10:24
- - mr_smit   Всем спасибо!   Dec 22 2011, 19:31


Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 11:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016