Внутри функции #define не видим - вылезает ошибка.
Странно в функции тоже дефайны должны работать. А вы файлы эти с функциями и дефайнами куда подключаете? Попробуйте в файл с функциями подключить файл с дефайнами, а файл с функциями в проект.
Очевидно функция пытается скомпилироваться раньше чем были приняты дефайны. Если они вообще приложены. Либо переносите их содержимое перед функциями. Что значит несколько? С одинаковым именем?
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Добрый день,у меня тоже вопрос по программированию МК в Atmel studio. Вопрос такой:интересует алгоритм написания функции для МК AVR 32, отправка показаний датчика через GSM модуль (SIM800C) по СМС на мобильник, например:напряжение с АЦП(зарядное для акб.), или запрос с мобильного баланса GSM модуля, есть функция отправки смс с заранее написанными смс, не могу понять как переделать функцию ,чтобы отправлять по смс , постоянно меняющиеся данные с датчика или запрос о балансе, вот функция USART void USART_SendString(char *str) /* Отправить строку функции данных USART */ { int i=0; while (str[i]!=0) { USART_TxChar(str[i]); /* Отправить каждый символ строки до NULL */ i++; } }
вот функция отправки смс: void GSM_Send_Msg(char *num,char *sms) { char sms_buffer[35]; buffer_pointer=0; sprintf(sms_buffer,"AT+CMGS=\"%s\"\r",num); USART_SendString(sms_buffer); //*отправить команду AT+CMGS="Mobile No."\r */
while(1) { if(buff[buffer_pointer]==0x3e) //*ждать символа '>'*/ { LCD_String_xy(1,0,"OTPRAVL1"); _delay_ms(3000); LCD_Clear(); buffer_pointer = 0; memset(buff,0,strlen(buff)); USART_SendString(sms); //* отправить сообщение на указанный nom. */ USART_TxChar(26); USART_TxChar(0); //* отправьте Ctrl + Z, тогда будет передаваться только сообщение*/ break; } buffer_pointer++; }
Ну так вызывай свою функцию GSM_Send_Msg в основном коде. Первый параметр это номер телефона, а второй текст. Только учти что на латинице можно отправить только 160 символов, а на других языках сначала нужно текст перекодировать и получить ограничение 70 символов (кроме немецкого и французского, там 140 символов).
Всем доброго времени. Подскажите где ошибка в коде:
void USART_TxChar(char data) /* Функция передачи данных */ { UDR = data /* Запись данных для передачи в UDR */ while (!(UCSRA & (1<<UDRE))); /* Подождите, пока передача данных и буфер не опустеют */ }
Код работает,смс приходит,но приходит постоянно одна цифра 5 и всё, откуда цифра 5 берётся? судя по функции: if(buff[buffer_pointer]!= '\r') данные с балансом там есть, отправлял в терминал USART_TxChar(buff[buffer_pointer]) в терминале всё как положено:"Balance:27,35r" в какое направление копать?
slav0n,а что не так с оформлением кода,а как надо оформлять? напишите пример оформления кода. Это часть программы. нашёл причину, в коде теряются данные
while(buff[buffer_pointer]!= '\r') //Принятое сообщение о балансе SIM из буфера// {
данные приходят,отладчика к сожалению нет,поэтому пользуюсь терминалом.
Вопрос по существу как сохранить данные в массиве,что бы не терялись даже после выхода из функции? Повторю msg_location[buffer_dannye] и buff[buffer_pointer] глобальные.
void USART_TxChar(char data)/* Функция передачи данных */{ UDR = data /* Запись данных для передачи в UDR */ while (!(UCSRA &(1 << UDRE)));/* Подождите, пока передача данных и буфер не опустеют */ }
while (buff[buffer_pointer]!='\r')//Принятое сообщение о балансе SIM из буфера// { msg_location[buffer_dannye]= buff[buffer_pointer++]; }
Ты каждый раз, одному и тому-же элементу массива msg_location присваиваешь новое значение. Так-же ты проверяешь один элемент, а присваиваешь следующий.
Сейчас этот форум просматривают: Jack_A и гости: 28
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения