Forum: Mikrocontroller und Digitale Elektronik Microchip TPC-IP Stack 5.42 Hostname dynamisch vergeben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dirk F (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich nutze auf dem PIC32MX795 den Microchip TPC/IP stack V 5.42 (Nicht 
Harmony).

In der Datei "TCPIP ETH795.h" wird der Host Name des Gerätes definiert:
#define MY_DEFAULT_HOST_NAME "Gerät_SNxxx"

Im main wird bei Initialisierung dies einmalig aufgerufen:
// Load the default NetBIOS Host Name
memcpypgm2ram(AppConfig.NetBIOSName, (ROM void*)MY_DEFAULT_HOST_NAME, 
16);
FormatNetBIOSName(AppConfig.NetBIOSName);

Jetzt möchte ich die xxx im Namen durch eine Serien Nummer ersetzen, die 
so definiert ist:
unsigned short serial;                   // Serial Number
(Hinweis: serial wird aus dem externen EEPROM initialisiert)

Also die Firmware soll für mehrere Geräte gleich sein. Nur die im EEPROM 
gespeicherte Seriennummer soll halt mit im Hostname erscheinen.

Wie gehts ???

von Keiner N. (nichtgast)


Bewertung
0 lesenswert
nicht lesenswert
Such im Source nach deinem Define und ersetzte ihn durch was eigenes.

Also nicht die Stelle der Definition, sondern die stellen, an denen es 
benutzt wird

von Andre (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du musst aus der Seriennummer einen String machen (mit itoa oder sowas). 
Dann kopierst du deinen festen Text aus dem ROM in die Konfig und hängst 
den dynamischen String hinten dran (mit Offset kopieren).
Ab dann wie gehabt initialisieren.

von Dirk F (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Keiner,
geht nicht.

Hier wird benutzt:
memcpypgm2ram(AppConfig.NetBIOSName, (ROM void*)MY_DEFAULT_HOST_NAME,
16);

Also ein Konstant aus ROM ins RAM kopeiert und dann weiter verwendet.
Nützt aber nichts, da ich ja mit der gleichen Firmware (gleiches ROM) 
für mehrere Geräte nutzen möchte.
Ich muss also irgendwie dafür sorgen, dass in  AppConfig.NetBIOSName 
dann Gerät_SN001  fürs erste Gerät, Gerät_SN002 fürs zweite Gerät u.s.w. 
steht.

von Dirk F (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Andre, perfekt.
Aber wie kann ich das umsetzen ?

von Doctor Snuggles (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dirk F schrieb:
> Hallo Andre, perfekt.
> Aber wie kann ich das umsetzen ?

Bei Deinen Kenntnissen:
String passender Größe deklarieren, dann mit sprintf und itoa füllen. 
Anschließend nach AppConfig.NetBIOSName kopieren.

von Dirk F (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, danke für eure Unterstützung.
Es läuft.
Habs so gemacht:


char Text[40];                                  // Textausgabe
char Text2[40];                                  // Textausgabe
char Text3[40];                                  // Textausgabe

BYTE2BCD ( serial);  // Ergebnis in Text
strcpy ( Text2 , (ROM void*)MY_DEFAULT_HOST_NAME );
strcat ( Text2, Text );
strcpy ( (char *)AppConfig.NetBIOSName,Text2);

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.