Forum: Mikrocontroller und Digitale Elektronik TCPIP Stack von Microchip


von alex (Gast)


Lesenswert?

Hallo zusammen,

ich versuche schon ein Paar tage pic32 richtig zu programieren und 
klappt es irgendwie nicht. Ich arbeite mit Projekt aus TCPIP ENCX24J600 
Demo App Ordner.

Mir bringt Compiler folgende Fehlermeldung:

In file included from ./HardwareProfile.h:57,
                 from ../Microchip/Include/TCPIP Stack/TCPIP.h:60,
                 from MainDemo.c:94:
../Microchip/Include/TCPIP Stack/XEEPROM.h:57:52: TCPIP 
Stack/SPIEEPROM.c: No such file or directory

kurze Hardwarebeschreibung:

- PIC32 Starter kit
- I/O Expansion board
- ENCX24J600


Software:

- TCP/IP Stack von Microchip

Kann man überhaupt diesen Project für TCP Client nutzen? Was genau 
brauche ich dazu, welche files?

Ich wäre sehr dankbar, wenn mir jemand erklären könnte diese 
Fehlermeldung und TCPIP Stack Konfiguration.

von holger (Gast)


Lesenswert?

>Stack/SPIEEPROM.c: No such file or directory

Zwei Möglichkeiten:
No such file          Datei nicht gefunden
No such directory     Verzeichnis nicht gefunden

Irgendeine falsche Pfadangabe würde ich vermuten.
Oder Sonderzeichen/Leerzeichen im Pfad.

von heinzhorst (Gast)


Lesenswert?

Hast du mal im entsprechenden Verzeichnis nachgesehen, ob die Datei 
wirklich nicht vorhanden ist? Eigentlich brauchst du die auch nur wenn 
du eine Webseite im MPFS-Format auf einem externen EEPROM ablegst. Wenn 
du den Webserver garnicht nutzt, dann versuch mal, die entsprechenden 
Präprozessordirektiven in det TCPIPConfig.h auszukommentieren.

von Simon L. (simon_l)


Lesenswert?

Hi,

ich hatte auch schonmal so ein ähnliche Prob mim MPLAB, ich hatte mein 
Projekt in Eigene Datein abgelegt. Er hat sich dann an der ewig langen 
Ordnerstruktur verschluck, probier doch mal ob es klapp wenn den 
Projektordner direkt auf C: anlegst. Die Fehlermeldung war da auch 
ähnlich unhilfreich ;)

Gruß Simon

von Alex (Gast)


Lesenswert?

Hallo,

danke für eure Antworten.

Ich möchte erstmal rein TCP Client Anwendung auf dem PIC laufen lasen.
Wenn der PIC IP hat, soll er mir nur Antwort zu PC Program auf Port XXX 
schicken "Hallo". Das wäre mein Ziel.

STACK_USE_MPFS2  das wäre dann für Webseite ?

Aber im Stack gibt es so viel Möglichkeiten, dass ich im Moment nicht 
damit zurecht komme.


Alex

von heinzhorst (Gast)


Lesenswert?

Einfach mal in Ruhe die Konfigurationsmöglichkeiten in der TCPIPConfig.h 
durchlesen. Alles, was du für dein Projekt nicht brauchst schmeißt du 
einfach raus (Kommentarzeile aus dem #define machen). Für so etwas 
relativ simples, wie du vor hast brauchst du eigentlich nur:
1
#define STACK_USE_ICMP_SERVER
2
#define STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE
3
#define STACK_USE_DNS
4
#define STACK_USE_NBNS

Sieh dir auch mal die GenericTCPClient.c an. Das ist schon so ziemlich 
genau das, was du vor hast.

MPFS ist ein simples Dateiformat, mit dem du Webseiten im Flash des 
Controllers oder auf einem externen SPI-EEPROM ablegen kannst. Die 
Webseiten erstellst du einfach mit einem gewöhnlichen HTML-Editor (Auf 
schlanken Code achten!). Beim Microchip TCPIP-Stack wird das Tool 
"Microchip MPFS Generator" mitgeliefert, mit dem du nun deine Webseite 
ins MPFS-Format umwandeln kannst.

von alex (Gast)


Lesenswert?

Hallo ,



endlich hat es geklappt mit (HTTP weg ) und ich konnte ein hex file 
generieren.
Mein Board bekommt eine IP.

Ich möcht jetzt dass mein PIC mir eine Nachricht sendet "Hallo " auf ein 
Port. In welchem File muss ich das ändern.

Ich vermute in TCP.c aber kann nicht was entsprechendes finden.

Könnte mir jemand sagen, ob ich auf dem richtigen Weg bin.
Vielleicht noch ein Paar Tips, wie ich das am besten machen soll.

Danke Alex

von alex (Gast)


Lesenswert?

hilfe!!!

ich will für TCP Client BerkeleyTCPClientDemo.c nehmen.

Ich will jetzt eine feste IP definieren

Könnte jemand mir dabei helfen?

#define PORTNUM 5000
static ROM BYTE ServerName[] =  "X";
// This is specific to this HTTP Client example
static BYTE sendRequest[] = "Hallo";

....
void BerkeleyTCPClientDemo(void)
{
  #if defined(STACK_USE_DNS)
    static SOCKET bsdClientSocket;
    static struct sockaddr_in addr;
    char recvBuffer[9];
    int i;
    int addrlen;


..........


case BSD_CONNECT:
            // addr.sin_addr.S_un.S_addr destination IP address was set 
earlier in DNS step
            addr.sin_port = PORTNUM;
            addrlen = sizeof(struct sockaddr);

            if(connect( bsdClientSocket, (struct sockaddr*)&addr, 
addrlen) < 0)
              return;

            BSDClientState = BSD_SEND;
            // No break needed

        case BSD_SEND:
            //send TCP data
            send(bsdClientSocket, (const char*)sendRequest, 
strlen((char*)sendRequest), 0);
            BSDClientState = BSD_OPERATION;
            break;

von heinzhorst (Gast)


Lesenswert?

alex schrieb:
> Ich will jetzt eine feste IP definieren

Denke mal, du meinst eine feste IP für den Server, an den du etwas 
senden möchtest.
1
static ROM BYTE ServerName[] =  "X";

hier musst du einfach statt "X" die IP oder URL des Server eintragen, an 
den du dein "Hallo" senden möchtest.
z.B.
1
static ROM BYTE ServerName[] =  "www.mein-server-im-netz.de";

oder
1
static ROM BYTE ServerName[] =  "192.168.1.123";

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.