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

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3077
Мнение Re: Питане за Microchip TCPIP stack
E, схванах що нямаш променливи , пък обявяваш тип :D

Специално за твоя случай - "typedef" преди структура/енум/юнион изисква обявяване на име и на псевдоним - преди и след големите скоби. Поне това се вижда в примерите
из нета.


Сря Дек 28, 2016 9:22 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: Питане за Microchip TCPIP stack
постовете ме навяват на мисълта, че не си отварял дори някой буквар по програмиране. какво е променлива, тип на променлива и тип като самостоятелно животно май ти е пълна каша. опитай се първо да осмислиш горното на базово ниво, на мета език за програмиране.
после виж как се прави в С, как се декларират променливи от даден тип, как се дефинират типове и, аджеба, за к'ъф х@й трява да се дефинират къстъм типове. каква е логиката на .h файлове, видимост, инклудване, чак тогава и условно. и накрая се надявам да разбереш как работи указател към тип :P

и не подхващай някой учебник от 800 страници, там вероятно така е написано, че и автора ще му е трудно да го разбере. и най-добре забрави за преводи на български, че те традиционно са превеждани от филолози, за левче на страница.

K&R C е доста спретната книжка, намери я на английски и чети. напълно достатъчна е. преди много години я видях преведена на български, от един вентилатор не разбрах колко е добър превода, но като видях, че не са 'превели' индекса и директно я хвърлих в коша. гордия собственик се наложи да си я вади от там, няколко години дори ми се сърдеше. много по-късно се извини.

във всеки случай с проба-грешка може и да стане (някога) но няма да разбереш дори колко мотики си настъпил. затова е хубаво да задълбаеш още в началото, още повече амбицията ти е да пускаш и ТСР стекове разни.


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

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
От скоро използвам XC и някои неща са ми мътни. Така че питам. Просто не познавам много добре този компилатор и от време на време изпитвам затруднения. Иначе много добре знам какво представляват тези неща дето си ги изброил. Аз се оправям и с обектно ориентираните езици и то на доста добро ниво, така че си е направо обида. Това че не съм спазил точно някаква "рецепта" и нещо не се е получавало заради това, се случва на всеки. Би трябвало да ги знаеш тези неща.
Само за протокола, аз не съм ги махнал "прякорите" просто, защото така ми е било кеф, а защото превежда м един код от CCS към XC и ми създаваха грижи. И понеже се компилираше и работеше, както очаквам, ги махнах навсякъде. Обаче в тази ситуация стана фал...
Сега ако искаш да разясниш нещо, ок! За XC приемам всякаква критика понеже го използвам от скоро и има тънкости, които не ги знам. Ама... Какво точно ти подсказа, че не знам как се декларират променливи от даден тип и т. н.? Някакси не е конструктивно това. Хубаво е човек да има самочувстие, но все пак е добре да оставиш и другите да по-назнайват нещо. Малко сега! Само до int променливи. За указатели няма настоявам, че да не стана нагъл. Догодина мисля да мина на long... Ако разрешиш.
ПП: А мигащи светодиодчета мога ли да правя? Препоръчай някоя книга?
Вземи поне обясни защо гарда не сработва, когато го няма alias-a?

_________________
www.elkran.com


Чет Дек 29, 2016 12:48 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Фев 07, 2012 10:22 pm
Мнения: 3077
Мнение Re: Питане за Microchip TCPIP stack
"typedef" обявява прякор за даден тип.
В твоя случай искаш да обявиш прякор за тип , който конструираш/декларираш в самата typedef декларация, а не е вече конструиран на горния ред. Всъщност - думата "enum" сама по себе си не показва някакъв тип ,както думата "int"например.
enum Marhaba {chao, bye} ;
enum {chao, bye} marhaba;
Тия два реда ще се компилират,мисля, но означават различни неща.

Благодаря за упражнението по Ц :D


Чет Дек 29, 2016 8:28 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: Питане за Microchip TCPIP stack
възможно е снощи да съм бил прекалено язвителен. ако се чувстваш интелектуално засегнат - извинявай.
тия дни съм людоедски настроен, защото се "наслаждавам" на съвременните резултати от програмисти на "високо ново". качих един драйвер за PCI карта от сайта на NI. проста карта, нищо особено, а инсталацията е 650МВ (!). не качва нищо видимо в Program files, но пуска 12 сървиса. един от които е Web server, който ползва ... TomCat. дребен страничен ефект е, че ми сменя часовника между 8 и 9 сутринта на произволна стойност, пак в този диапазон. в резултат ssh дропи връзката, разни SSL сесии стават невалидни и прочие 'фючъри'. та си имам собствено мение за това как се пишат 'обектни програми' към днешна дата.

от твоите питания не разбирам добре какво в същност питаш. от това, че махаш и слагаш думички в typedef, че успяваш да омоташ .h файловете с двойни дефиниции, си направих извода, че нещо много първоначално ти се губи. не ми се вярва мокрочип да са направили чак толкова скапан компилатор, все пак дефинирането на типове не е променено от почти 4 десетилетия в С (ANSI-S по K&R).

нахвърлях едно тестче, мисля че изчерпах проблематичните за теб варианти:

Код:
color.h
typedef enum color_enum_type {
    white, red, blue, green, brоwn, black
} color_type;

color_type set_red();
color_type set_green();
color_type set_blue();
color_type set_black();
color_type set_brоwn();


Код:
red.c
#include "color.h"

color_type set_red() {
    return ( 1);
};


Код:
rainbow.c
#include "color.h"

color_type set_green() {
    return ( (color_type) green);
};

color_type set_blue() {
    return ( (enum color_enum_type) blue );
}

color_type set_black() {
    return ( black );
};

color_type set_brоwn() {
    return ( set_red() + green );
};


Код:
main.c
#include <stdio.h>
#include "color.h"

color_type color_var;

main() {

   /* първи вид инстанция */
    color_var = white;
    printf ("%d\n",color_var);

    color_var = set_red();
    printf ("%d\n",color_var);

    color_var = set_blue();
    printf ("%d\n",color_var);

    color_var = set_green();
    printf ("%d\n",color_var);

   /* втори вид инстанция */
    printf ("%d\n",set_black());
    printf ("%d\n",set_brоwn());
};


компилира се с
Код:
cc red.c rainbow.c main.c


резултата е
Код:
0
1
2
3
5
4


ако това не върви по същия начин на мокрочипски компилатор - или го зарежи, или потърси опция за ANSI съвместимост.
кастването на типа в return на фунциите не е задължително, просто е за прегледност. все пак програмите се четат основно от хора.

ето и зипче на всичко, да не го кълвеш за теста.
Прикачени файлове:
enum-test.zip [1023 Байта]
252 пъти


Чет Дек 29, 2016 10:42 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Вто Фев 06, 2007 1:45 am
Мнения: 260
Мнение Re: Питане за Microchip TCPIP stack
Любимия ми виц - минах на друг компилатор и кода не ще да работи :mrgreen:
Цитат:
The MPLAB XC8 C Compiler is a free-standing, optimizing ISO C90 (popularly known
as ANSI C) compiler.


Чет Дек 29, 2016 11:30 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
Всъщност главният проблем в случая идва от другаде. Преведох PPP библиотеката на CCS към XC8. Самата библиотека не е в чист вид за CCS, а е модифицирана за компилация с оригиналния Майкрочипски стек посредством допълнителни дефиниции и модификации, така че цялата тази глупост да се компилира със CCS(с прости думи правени са свободни съчинения така че нещо написано за един компилатор да тръгне на друг без преработка). Та самата PPP библиотека ми хареса понеже са изградили и допълнителни функции, които обръщат PPP пакет в MAC и така могат да се използват останалите функции на стека(постарали са се повече, а и имат някакъв демо борд, на който това работи). Обаче както се досещате, като започнах да обръщам нещата започнаха ужасиите. Та тествах на няколко пъти какво се получава като се създаде определен тип и се нагодих към ситуацията. И от там дойдоха проблемите.
На практика кодът ми е свободно съчинение на тема програмиране, но дефинираните променливи съвпадат като дължина и формат с тези на оригиналната библиотека. Да се надяваме, че функциите смятат правилно. Другият вариант беше да пренапиша цялата библиотека от 0, което не знам дали е много умна идея и колко време ще отнеме...
Уж вече това чудо се компилира заедно със стека(оргиналдъ-то) и сега ще го подпъхвам вътре. Остава и да прави, каквото трябва. :)

_________________
www.elkran.com


Чет Дек 29, 2016 1:33 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
Момци, трябва ми идея. Това, което трябва да направя, е да накарам стека да работи, както с MAC нивото(стандартен ЛАН), така и с PPP. Това, което съм започнал да правя, е да подготвя функции идентични с тези в MAC, които обаче са свързани не с ЕDATA, а с буфера на PPP-то. След това ще дублирам TCP и всички други, които използват MAC, като в дублиращият файл ще извиквам PPPMAC... И като ги добавя в StackTsk() и другите би трябвало да се получи.
Някакъв по-прост начин да се постигне целта? Да се закача по по-елементарен начин?

Другото, за което се сещам, е да извиквам TCPProcess(и другите) с някаква променлива, която да посочва от къде точно да се вземат данните:
Код:
if(marker)
{
    MACGetArray();
}
else
{
    PPPMACGetArray();
}

Не знам до колко ще работи това...

_________________
www.elkran.com


Пет Яну 13, 2017 5:34 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: Питане за Microchip TCPIP stack
бях на пампорово, трябваше да си взема смилянски боб май...

то какво разбираш под РРР? RFC-1661 или RFC-2516


Пет Яну 13, 2017 7:02 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
RCF-1661, но това го остави на страна! На практика имам един GPRS модул, през който ще получавам пакетите. Аз съм си подготвил функции, които "разопаковат" пакетите, докато останат само с IP хедър. И обратно като получат IP пакет го преобразуват в необходимия формат и го пращат. Та искам да подам този пакет към стека и той да си го обработва по нормалния начин, но ако може без да се налага да търбуша целия стек....
Ако се сещаш за някакъв момент, в който мога да закача буфера на GPRS-а към EDATA и това "подпъхване" да стане елементарно, ще съм благодарен!
Взех да се чудя дали да не се закача към МАС фукнциите директно и в тях да направя разграничението. Реално пакетите през LAN и GPRS ще се различават по порт... Избраният порт ще се подава към MAC функциите и там ще става разграниченито. Това като че ли ми се вижда най-безобидно за сега...
Благодаря!

_________________
www.elkran.com


Пет Яну 13, 2017 7:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: Питане за Microchip TCPIP stack
според мен се опитваш да направиш пластична операция на репичка, която да заприлича на ... крокодил. нещо готово за срускване кой знае защо искаш да го сдобиеш с възможността да те ухапе.

модемите (GSM) с ТСР стек са направени именно за да не ти трябва стек в (в микроконтролера). пакета ти идва съблечен и готов за ядене от апликейшън новото, и не виждам смисъл да го буташ обратно надолу в нивата, че да изплува от друга дупка пак същия.

просто в апликейшъна си направи викане на стандартния ТСР стек за етернет пакети, и друго викане на пакетите от GSM-а, пък от където дойде.

друг подход, ако ТСР стека поддържа РРР е да не ползваш ТСР функции в модема, а да оставиш стека да се оправя. но ще трябват повечко мускули.
стека на мокрочип не съм го гледал от години. навремето му минах един вентилатор и тотално не ми пасна на познанията. то и не ползвам пикльовци, така че такава нужда никога не ми се е налагала, дори концептуално.


Пет Яну 13, 2017 7:35 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
ДедоБоре написа:

модемите (GSM) с ТСР стек са направени именно за да не ти трябва стек в (в микроконтролера). пакета ти идва съблечен и готов за ядене от апликейшън новото, и не виждам смисъл да го буташ обратно надолу в нивата, че да изплува от друга дупка пак същия.

То в момента така работи устройството, но има проблем - стека на модема поддържа само 1 порт, а на мен ми трябват повечко. За това изолирам стека в модула и ще си го обработвам на контролера. Проблемът идва в това, че трябва и 1 обикновен LAN да поддържам и нещата стават малко по-сложни. Та от няколко часа го гледам и се чудя от къде да го подхвана, за да стане най-лесно. Май ще се върна на първоначалната идея да се закача директно за TCP нивото, а не да се опитвам да се представям за MAC. Защото на практика ми трябват 4-5 фунцкии, които да променя, а не цялото MAC ниво...
Въобще не е елементарно все още така че съм отворен за други предложения...

_________________
www.elkran.com


Пет Яну 13, 2017 7:58 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 10, 2005 2:25 pm
Мнения: 4979
Местоположение: София
Мнение Re: Питане за Microchip TCPIP stack
Добре де, що ти са 2 порта на модема, че и лан?


Съб Яну 14, 2017 3:17 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 12:01 pm
Мнения: 2202
Мнение Re: Питане за Microchip TCPIP stack
Ами защото трябва да реализирам нещо като NAT. На практика трябва да адресирам няколко устройства закачени на CAN по порт. За това не стигат портовете!

ПП: Знам, че по-лесно като се добави в заклинанието едно поле за адресация, обаче не зависят от мен тези неща...

_________________
www.elkran.com


Съб Яну 14, 2017 4:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Ное 21, 2004 10:31 pm
Мнения: 9645
Мнение Re: Питане за Microchip TCPIP stack
на wavecom стека можеше повече портове, ама те са история.
какъв ти е модула?

аз почти никъде не съм ползвал вградения стек, най-малкото, защото се обвързвам с конкретен модел и производител и почваш да зависиш от менструалния цикъл на кравите в Индия или от цената на ориза в такай. винаги си го правя в контролера, запощото почти винаги ми трябва и VPN, SSL и още шукарии. та може би това е решението, ако ТСР стека на мокрочип може да пусне етернет и SLIP PPP едновременно.


Съб Яну 14, 2017 4:32 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 48 мнения ]  Отиди на страница Предишна  1, 2, 3, 4  Следваща

Кой е на линия

Потребители разглеждащи този форум: Google [Bot] и 6 госта


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

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