Перейти к содержанию

Помогите С Алгоритмом Обработки Команды От Пк


mappy89

Рекомендуемые сообщения

Добрый вечер.

Возникла необходимость в приёме различных данных от ПК микроконтроллером, например приём определённого максимального числа, соответственно контроллер должен определить, что ему посылается именно это число, определить где у него начало и конец. Я написал следующий код:

struct usart1{
int counter; //счётчик
int cmaxboo; //условие приёма одного числа
int cminboo;  //условие приёма другого числа
double cislomax;
};

int main(void)
{

struct usart1 us={0,0,0,0}; //выставили значения переменных

lcd_init();
USART_Init();
sei();

while(1)
{
sym11[0] = USART_GetChar(); //принимаем символ с компа
sym11[1]=0;
if (sym11[0]) {
switch (sym11[0])
{
case '(': us.cmaxboo=1;break;  //если в посылаемой строке нашли символ "(", то считываем максимаьное число

case ')': us.cmaxboo=0; us.dot=0; us.counter=0;us.cmaxfin=1; break; //если в посылаемой строке нашли символ ")", то перестаём считывать максимаьное число
default: if (us.cmaxboo && !us.dot) {temp[us.counter++]=sym11[0];} break;  //самое считывание
}

if (us.cmaxfin==1) lcd_str(temp); //если счит разрешено, то печатаем заодно на жк}
}
}

Вопрос: как можно оптимизировать этот громоздкий алгоритм (который ещё даже не выполняет всех функйций), есть ли в наличии уже готовые библиотеки, либо Вы уже решали подобные проблемы другим образом, если да, то каким? )

Заранее спасибо

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

во первых тему не там создал, во вторых используй протокол MODBUS если не хочешь велик изобретать.

Изменено пользователем bekor

1 километр = 1024 метр

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Если честно, задача не совсем понятна.

Что значит

именно это число
? Их там много что-ли ? Зачем они там ?
определить где у него начало и конец
У кого начало и конец ? У числа ? как это понять ?

Разъясните проблему более подробнее.

Ссылка на комментарий
Поделиться на другие сайты

Для организованной передачи данных между устройствами, необходимо использовать какой нибудь

протокол. В природе существует много готовых протоколов, одним из этих и является modbus который в основном используется в пром устройствах и удобен в применении, в сети много готовых

библиотек, можно присобачить к своему проекту. Но можно конечно и свой собственный протокол придумать.

Простейшая структура:

[метка начала пакета, адрес устройства, длина пакета, номер пакета, команда, данные, контрольная сумма]

Изменено пользователем bekor

1 километр = 1024 метр

Ссылка на комментарий
Поделиться на другие сайты

Да я к тому, что этот протокол уж какой то мудрёный для моей задачи, где по сути нужно туда-обратно передавать несколько чисел

Alex, да, чисел несколько, нужно определить, какой тип числа передаётся (например, максимальное время чего-то там), где начинается число (для считывания уартом/усартом) и где оно заканчивается

bekor, поясните пожалуйста, каким образом организовать данную передачу [метка начала пакета, адрес устройства, длина пакета, номер пакета, команда, данные, контрольная сумма], желательно в виде примера

Изменено пользователем mappy89
Ссылка на комментарий
Поделиться на другие сайты

Можете числа передавать например в десятичном символьном виде (ASCII) и разделять их пробелами или запятыми или ещё каким-либо символом.Тогда посылка может выглядеть например так:

(2,T,124,XX) - где ( - маркёр начала посылки, 2 - адрес устройства, T - код команды, 124 - передаваемое число, XX -контрольная сумма, ) - маркёр конца посылки.

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

могу скинуть куски кода из моих проектов если хочешь но там трудно будет что либо понять,

Alex дал дельный совет!

Изменено пользователем bekor

1 километр = 1024 метр

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Сабсоник 3 порядка потом усилитель на Оу. Далее все на столе отстроить и все 
    • Вот и я думаю сделать на сдвоенном операционнике входной усилитель и сабсоник. 
    • Я всегда подозревал, что эта схема была содрана кЕтайцами с какого-то старого и хорошо известного (но не у нас) блока питания, и что в оригинале использовались именно 741 операционники. И вот тому подтверждение... Все равно те микросхемы и транзисторы что они используют в наборах, чаще всего подделки. Мне например, пришлось заменить D1047 транзистор что шел в наборе на пару таких же, но нормальных (выдраных с дохлого усилка). Транзистор из набора (маркировка явно "левая", без какого-либо намека на изготовителя) сильно грелся даже на 1,5А. Такой же транзистор D1047, но из усилка грелся раза в два меньше, да и маркировка "нормальная".  Подозреваю что и TL081 что в наборе идут тоже возможно что перемаркированные 741 (они супердешевые, сравнимо с 358). 741 операционники выпускали все кому не лень, аналогов было выпущено очень много за полвека.  Были и на плюс-минус 22в, надо смотреть конкретный даташит и производителя, даже от буквы в конце это зависит.  Например, есть такой аналог uA741 от ST ("микро-А741"). ua741-957400.pdf ua741.pdf MA741.PDF
    • Нет. Эта модель TRI для 3фаз. Да и вся разводка сделана для 3х фаз. EVOLUTION Mono ➞ 1~ 230V ± 10% 50/60Гц EVOLUTION Tri ➞ 3~ 400V ± 10% 50/60Гц В конце второй минуты есть внутренности, подключение и включение пульта. Можно заметить, что платы идентичные. 
    • У меня такой усь был, он никакой. 
    • Приветствую , вопрос по светодиодам HL5-10 .  В схеме они по 1.65в каждый , автор на вегалабе упомянул суммарное напряжение в каждом плече 4.7в и что допустимо применение стабилитронов.   Вопрос какое напряжение допустимо и за что отвечает? В наличии светики только 1.7в.  Насколько оправданно установка стабилитронов ?  Схему прилагаю
    • Привет народ! В общем оставил на балконе в том виде, только как писали панели параллельно соединил. Сейчас солнце жарит и все работает) Отдельно аттини85 купил, только не понятно какой стороной в тот программатор пихать её.
×
×
  • Создать...