Виж темите без отговор | Виж активните теми
Дата и час: Сря Апр 24, 2024 4:48 am
Питане за Microchip TCPIP stack
Автор |
Съобщение |
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Питане за Microchip TCPIP stack
Здравейте! Не съм използвам стек-а с MPLAB X до сега. До колкото прочетох, v6 не поддържа малките контролери (PIC18 и PIC24). Та се върнах малко назад - mla 2016 08 08. Прави ми впечатление, че MAC функциите са сложени във файл drv_wifi_mac.c. Това мога ли да го използвам за стандартна LAN връзка - telnet? Питам, защото когато теглих стек-а, беше отбелязано, че е само с wi-fi support. Още назад ли трябва да се върна във версиите? Питам, защото когато разреших telnet сървър-а, ми връща грешка - липсваща MAC функция! Благодаря!
_________________www.elkran.com
|
Вто Дек 20, 2016 5:39 pm |
|
|
ДедоБоре
Ранг: Форумен бог
Регистриран на: Нед Ное 21, 2004 10:31 pm Мнения: 9645
|
Re: Питане за Microchip TCPIP stack
v6 означава ли IPv6?
|
Вто Дек 20, 2016 9:15 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Не! Версия 6, която е на мода сега. Общо взето си намерих старата версия за обикновенния MPLab и я зареждам в момента за MPLAB X. Всъщност забелязах, че последната за PIC18 и 24(v5.47) си има файловете, но са набутани при CAN-a... На тези винаги съм им се чудил на смотания начин, по който си разполагат файловете. Докато си спомня всички глупости ще отнеме малко време
_________________www.elkran.com
|
Вто Дек 20, 2016 9:46 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Здравейте! Използвам XC8 и имам следният казус : имам дефиниран някакъв enum: . Този енъм трябва да се използва в 4 файла-> file1.h, file1.c, file2.h и file2.c(има функции, които го използват, както и връщат резултат от същия тип). Проблемът идва, когато трябва да използвам функции от file1 във file2 т. е. трябва да #include "file1.h". Каквото и да опитвам, винаги ми дава грешка duplicate define EnumType! Опитах да отделя типа в отделен файл и да го затворя с гард, но не се получава. Възможно ли е някой да ми даде съвет как да постъпя? Няколко реда код като пример ако е възможно...
_________________www.elkran.com
|
Сря Дек 28, 2016 1:59 pm |
|
|
syscop
Ранг: Форумен бог
Регистриран на: Пет Юни 03, 2005 8:39 pm Мнения: 1971
|
Re: Питане за Microchip TCPIP stack
#if !defined(__BLABLA_H)
#define __BLABLA_H
typedef enum EnumType{bla bla bla};
#endif /* __BLABLA_H */
Нещо такова няма ли да помогне ?
_________________ Определянето стойността на дадена величина се нарича ИЗМЕРВАНЕ!
|
Сря Дек 28, 2016 2:12 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Ами така стана, но явно нещо съм оплескал дефинирането на enum. Изглежда иска да спазя структурата Не знам защо иска инстанция на enum при положение, че това е тип...
_________________www.elkran.com
|
Сря Дек 28, 2016 2:33 pm |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2588 Местоположение: Велико Търново / София
|
Re: Питане за Microchip TCPIP stack
хм.. ами не може ли да се сложат променливите в един файл и във другите да ги ползваш, като използваш externp.s. я пробвай така:
|
Сря Дек 28, 2016 2:41 pm |
|
|
sparkybg
Ранг: Форумен бог
Регистриран на: Вто Авг 23, 2005 11:02 am Мнения: 3070 Местоположение: София
|
Re: Питане за Microchip TCPIP stack
Не само че ще помогне, ами това е стандартно възприетия начин за такива неща. Това трянва да го има във всеки хедър файл.
|
Сря Дек 28, 2016 3:01 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Ц! Пробвах, не го кефи! То по-скоро в този случай трябва отделно да бъде създадена инстанция на enum-a : .c и тогава в .h extern, но на мен не ми трябва инстанцията, а променливата(типа), за да мога да задам на функции да връщат този тип. Явно е някаква особеност на компилатора, защото аз на практина никъде не използвам инстанцията, а само типа! Или ако се използва в дадената функция се дефинира...
_________________www.elkran.com
|
Сря Дек 28, 2016 3:02 pm |
|
|
slav4o.com
Ранг: Форумен бог
Регистриран на: Нед Яну 01, 2012 7:04 pm Мнения: 2588 Местоположение: Велико Търново / София
|
Re: Питане за Microchip TCPIP stack
Малко се обърках. Но мисля че най-добре с указатели да го направиш. Когато една функция връща повече от BOOL char int или някой прост тип, май си е направо задължително. Просто слагаш в параметрите къде да изсере после функцията нещата. Даже може да не ги слагаш като зададеш NULL . Така функцията може да я дефинираш без дори да има място където да изпляска нещата. После може да си декларираш 1000 места за целта.
|
Сря Дек 28, 2016 3:14 pm |
|
|
sparkybg
Ранг: Форумен бог
Регистриран на: Вто Авг 23, 2005 11:02 am Мнения: 3070 Местоположение: София
|
Re: Питане за Microchip TCPIP stack
Кви указатели, кви 5 лева ба хора?! Излагацията е пълна!
extern, ststic и volatile са ползват за променливи и функции. enum-а не е нито едно от двете - няма си адрес а е чисто имагинерно понятие.
1. enum-а се слаха в "h" фаил 2. В началото и края на "h" файла се добавя: #ifndef __enum_h__ #define __enum_h__ public enum bla-bla-bla... ... ... #endif
После тоя h файл може да се инклудва навсякъде, където ти трябва, може и по няколко пъти, и грешка няма да има. Горните ифове се слагат именно за да се инклудне само веднъж. Всеки "h" файл, който се използва на повече от едно място, трябва да има такива ифове. Например всичките стандартни библиотеки на микрочип го имат в "h" файловете си.
|
Сря Дек 28, 2016 3:29 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Няма никаква излагация! Ето как стоят нещата: Това не работи! За да стане работа, компилаторът иска ето това: До колкото ми е известно това създава enum тип и създава променлива от този тип. Както казах, най-вероятно става дума за някаква особеност на компилатора, защото в кода нямам никъде употреба на променливата, а само на типа...
_________________www.elkran.com
|
Сря Дек 28, 2016 6:50 pm |
|
|
sparkybg
Ранг: Форумен бог
Регистриран на: Вто Авг 23, 2005 11:02 am Мнения: 3070 Местоположение: София
|
Re: Питане за Microchip TCPIP stack
Това дето е между #define и #endif не е моя работа. Въпроса беше как да се реши проблема с грешкита за двойна дефиниция, а той се решава с въпросните if-ове. Указател към enum е оксиморон. Указател към променлива от тип enum вече е ок, защото има към какво да сочи. Ето по въпроса за typedef: https://www.tutorialspoint.com/cprogram ... ypedef.htmЕто и по-изчерпателно: http://stackoverflow.com/questions/1675 ... efinitionsНе е особеност на компилатора, ами си е така във всички компилатори. Въпросния enum могеш да го дефинираш и така: а можеш и така: после можеш да го ползваш като: , като ddd вече е променлива от тип bbb, а не от тип ААА, защото AAA не е тип, а име на ENUM-а. А ако си използвал първата дефиниция може и така: , като и двете са еквивалентни. просто "bbb" е alias на "enum AAA", точно както при "typedef unsigned int UINT", "UINT" e alias на "unsigned int". Капиш?
Последна промяна sparkybg на Сря Дек 28, 2016 7:25 pm, променена общо 1 път
|
Сря Дек 28, 2016 7:23 pm |
|
|
stefan63
Ранг: Форумен бог
Регистриран на: Вто Фев 07, 2012 10:22 pm Мнения: 3078
|
Re: Питане за Microchip TCPIP stack
Това ме разсипа. Ц-то не е за мен.
|
Сря Дек 28, 2016 7:25 pm |
|
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 12:01 pm Мнения: 2202
|
Re: Питане за Microchip TCPIP stack
Направих 4 супер глупави файла само с дефиниция на функции, но без в тялото на функциите да става, каквото и да било. Просто съм казал, че ще върне променлива от този тип, като връщам 0, което е валидна стойност в тялото на enum(преобразува го към enum-a). На практика тези функции само са дефинирани и не се викат никъде. Не се създават променливи на практика(мисля). Та само #ifndef #endif не работи! Не решава проблема. Пак има duplicate define, въпреки че вече излиза на второ място като грешка... Може да съм се овъртолил нещо, защото при някои от C-тата, когато сложиш след дефиницията име, създава променлива. Тук може да не е така, но без това второ име не става. Поне при мен. Може в по-новите верисии на XC8 да си работи и без него.... Не знам защо става така...
_________________www.elkran.com
|
Сря Дек 28, 2016 7:56 pm |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|