Автор Тема: MAX_STRING_LEN  (Прочетена 2498 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
MAX_STRING_LEN
« -: 23 Септември 2016, 02:31:26 »
Младежи,

ква е причината парсъра да плюе уорнинг в единия случай, a  в другият не?

Код: C
  1. #include<stdio.h>
  2.  
  3. #define MAX_STRING_LEN 6
  4.  
  5. int main() {
  6.  
  7. //char name[MAX_STRING_LEN];
  8.  
  9. char name[6];
  10.  
  11. const char* NEWLINE = "\n";
  12.  
  13. printf("Enter your name: ");
  14.  
  15. scanf("%s", name);
  16.  
  17. printf("Your input: %s %s", name, NEWLINE);  // jazzman72
  18.  
  19. return 0;
  20.  
  21. }
  22.  
  23.  
  24.  
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #1 -: 23 Септември 2016, 18:48:55 »
Е баш от тебе не очаквах така зададен въпрос   ;D

1. не е parser най-вероятно, а compiler-а ти мята грешки и warning-и.
2. Какво компилираш, Тц или Тц++?
3. Кой компилатор ползваш?
4. Какъв уорнинг точно  ти дава?
5. В кой от двата случая ти дава warning?

И защо line feed-а ти е променлива? И защо е низ, а не единичен символ?
« Последна редакция: 23 Септември 2016, 18:52:46 от kjufte »

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #2 -: 27 Септември 2016, 03:47:41 »
парсър ли съм написал  ??? компилатор, разбира се.  ;D  за ГНУ иде реч. компилирам един майкропроцесор ( atmega 328p ), уча C на стари години,  за съжаление  :) Нямам комп в момента за да дам изходите.
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #3 -: 27 Септември 2016, 17:28:36 »
Ти още повече ме озадачи :)

Кой toolchain ползваш? И с makefile ли компилираш? Ако да, дай и него да го видим, а ако не  да видим командата с която компилираш.

Принципно scanf в комбинация с uC не е добра идея, а и не виждам къде би го приложил. Предполагам, че си закачил зад него някой UART-buffer, щото той принципно работи със stdin стрийма, който ти нямаш на MCU-то.

Между другото има голяма разлика между писане на C за PC и uC. Мисля че по-лесно ще ти е да го учиш на PC.


jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #4 -: 27 Септември 2016, 22:12:30 »
От къде тръгна всичко. Взех едно arduino uno и съм го конфигурирал чрез външни датчици да се  мери температурата на водата, температурата на въздуха  в къщата и температурата навън и съответно ако температурата е ниска да се стартира награвящия кабел в тръбата на водата и фърниса, който отоплява къщата, ако пък е висока да се стартира A/C то.  Ся до тук добре и всичко работи на 6. Инсталирах IDE-то от сайта им обаче се ограничава понеже искам да на пиша собствен драйвър за джаджата. Тръгнах от тук и задълбах -  https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/. Майната и на грешката тя беше просто прелюдия към симфонията. Тва е за ся. 
Търсят ме трябва да излизам :)
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #5 -: 28 Септември 2016, 17:06:39 »
Ами той "ардуино езика" си е C/C++. Даже ако погледнеш при driver-ите ще видиш, че всичко е писано на C++.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #6 -: 29 Септември 2016, 13:48:09 »
Ами той "ардуино езика" си е C/C++. Даже ако погледнеш при driver-ите ще видиш, че всичко е писано на C++.
Да бе да,знам това, IDE-то им е Oк и ми върши работа за сега, но ми стана интересно да видя какво има под похлупака. Поръчах си един  atmega 328 и го чакам за да почна да го ровя. Ти запознат ли си с avr-gcc и avrdude? Гледам, че Atmel предлагат  IDE ( atmel studio), но само за windows. 
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #7 -: 29 Септември 2016, 18:02:07 »
За съжаление добрите IDE-та за embedded са наистина само за Win, но са и и почти винаги платени. Eclipse има плъгин за AVR, с който не съм си играл много да се занимавам, но може да се настрои така, че да е  доста приемливо IDE. А JTAG имаш ли? Или как смяташ да програмираш и дебъгваш?

С AVR съм бачкал предимно на ардуино-та и няколко проекта с ATtiny, които флашвах с avrdude. Но най-вече работя с STM32 под Windows и ползвам EmBitz, който е форк на CodeBlocks, но само за uC.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #8 -: 30 Септември 2016, 00:26:15 »
За съжаление eclipsе не съм ползвал. Понеже не съм програмист или такъв занимаващ се професионално с програмиране. Но ако смяташ, че е добра идея мога да се пробвам. JTAG за какво ще ми послужи? 
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #9 -: 30 Септември 2016, 16:12:56 »
Сега видях, че твоя микроконтролер няма JTAG интерфейс.

По някакъв начин трябва да прехвърлиш байнърито върху uC-то. Това при AVR става обикновено с ISP протокола (In System Programmer). За целта ти трябва съответния програматор. Примерно атмеслкия AVRISP mkII. Или аз примерно си бях направил един програматор през SPI на Raspberry Pi. Ако се разровиш из нета ще намериш схема и за ардуино.

Следваща стъпка е дебъването, или on device debugging. При твойто MCU може да ползваш само debugWIRE интерфейса му. През него IDE-то прави връзка с микроконтролера, чете му паметта и може да слагаш breakpoints, да четеш и пишеш в регистри и тнт. За целта естествено е необходим и хардуер, който никак не е евтин. Едно от най-евтините решения е AVR dragon, който е комбиниран ISP/debugWIRE/JTAG.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #10 -: 30 Септември 2016, 20:24:12 »
Хм....тва са определено нови неща за мен и ме радва факта, че има човек в научиМе, който чува петлите. Като дойде MCU- то предполагам, че ще имам и въпроси около него.За съжаление вече не разполагам и с много странично свободно време за да бъда по-активен :)
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 190
  • Публикации: 3624
Re: MAX_STRING_LEN
« Отговор #11 -: 17 Октомври 2016, 14:25:08 »
Поръчах го - AVRISP mkII  :)
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: MAX_STRING_LEN
« Отговор #12 -: 17 Октомври 2016, 22:28:57 »
Ай честито. Чякаме туториал  ;D