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


von Dirk F (Gast)


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)


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)


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)


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)


Lesenswert?

Hallo Andre, perfekt.
Aber wie kann ich das umsetzen ?

von Doctor Snuggles (Gast)


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)


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);

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.