Отговори на тема  [ 48 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща
Питане за Microchip TCPIP stack 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
Здравейте! Използвам XC8 и имам следният казус :
имам дефиниран някакъв enum:
Код:
typedef enum EnumType{bla bla bla};
. Този енъм трябва да се използва в 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Юни 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
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
Ами така стана, но явно нещо съм оплескал дефинирането на enum. Изглежда иска да спазя структурата
Код:
typedef enum [b]Name[/b]{
//bla bla
}[b]Name[/b];

Не знам защо иска инстанция на enum при положение, че това е тип...

_________________
www.elkran.com


Сря Дек 28, 2016 2:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: Питане за Microchip TCPIP stack
хм.. ами не може ли да се сложат променливите в един файл и във другите да ги ползваш, като използваш extern
p.s. я пробвай така:
Код:
extern typedef enum [b]Name[/b]{
//bla bla
}[b]Name[/b];

_________________
https://github.com/slav4ocom/


Сря Дек 28, 2016 2:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 23, 2005 11:02 am
Мнения: 3070
Местоположение: София
Мнение Re: Питане за Microchip TCPIP stack
syscop написа:
#if !defined(__BLABLA_H)

#define __BLABLA_H

typedef enum EnumType{bla bla bla};


#endif /* __BLABLA_H */

Нещо такова няма ли да помогне ?


Не само че ще помогне, ами това е стандартно възприетия начин за такива неща. Това трянва да го има във всеки хедър файл.


Сря Дек 28, 2016 3:01 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
slav4o.com написа:
хм.. ами не може ли да се сложат променливите в един файл и във другите да ги ползваш, като използваш extern

Ц! Пробвах, не го кефи! То по-скоро в този случай трябва отделно да бъде създадена инстанция на enum-a :
.c
Код:
volatile type ....

и тогава в .h extern, но на мен не ми трябва инстанцията, а променливата(типа), за да мога да задам на функции да връщат този тип. Явно е някаква особеност на компилатора, защото аз на практина никъде не използвам инстанцията, а само типа! Или ако се използва в дадената функция се дефинира...

_________________
www.elkran.com


Сря Дек 28, 2016 3:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2588
Местоположение: Велико Търново / София
Мнение Re: Питане за Microchip TCPIP stack
Малко се обърках. Но мисля че най-добре с указатели да го направиш. Когато една функция връща повече от BOOL char int или някой прост тип, май си е направо задължително. Просто слагаш в параметрите къде да изсере после функцията нещата. Даже може да не ги слагаш като зададеш NULL . Така функцията може да я дефинираш без дори да има място където да изпляска нещата. После може да си декларираш 1000 места за целта.

_________________
https://github.com/slav4ocom/


Сря Дек 28, 2016 3:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
sparkybg написа:
Кви указатели, кви 5 лева ба хора?! Излагацията е пълна!

Няма никаква излагация! Ето как стоят нещата:
Код:
#ifndef DEFTYPE
#define DEFTYPE
typedef enum TYPE{//definition};
#endif

Това не работи! За да стане работа, компилаторът иска ето това:
Код:
#ifndef DEFTYPE
#define DEFTYPE
typedef enum TYPE{//definition}TYPE;
#endif

До колкото ми е известно това създава enum тип и създава променлива от този тип. Както казах, най-вероятно става дума за някаква особеност на компилатора, защото в кода нямам никъде употреба на променливата, а само на типа...

_________________
www.elkran.com


Сря Дек 28, 2016 6:50 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Авг 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 могеш да го дефинираш и така:
Код:
typedef enum AAA{
...
...
...
}bbb;


а можеш и така:
Код:
typedef enum {
...
...
...
}bbb;


после можеш да го ползваш като:
Код:
void ccc(){
    bbb ddd;
}

, като ddd вече е променлива от тип bbb, а не от тип ААА, защото AAA не е тип, а име на ENUM-а.

А ако си използвал първата дефиниция може и така:
Код:
void ccc(){
   bbb ddd;
   enum AAA eee;
}


, като и двете са еквивалентни. просто "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
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3078
Мнение Re: Питане за Microchip TCPIP stack
Цитат:
До колкото ми е известно това създава enum тип и създава променлива от този тип. Както казах, най-вероятно става дума за някаква особеност на компилатора, защото в кода нямам никъде употреба на променливата, а само на типа...

Това ме разсипа.
Ц-то не е за мен.


Сря Дек 28, 2016 7:25 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 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
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 48 мнения ]  Отиди на страница 1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни