Why don't you store all the network settings? I used this for the contents of a file named "network.txt". The mac must be the first line, followed by ip, netmask, gateway, and dns in that order. Each on their own line.
12:34:56:78:90:AB
192.168.2.2
255.255.255.0
192.168.2.1
192.168.2.1
Then I used this sketch:
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
byte myMac[6];
byte myIP[4];
byte myNM[4];
byte myGW[4];
byte myDNS[4];
void setup() {
Serial.begin(9600);
pinMode(10,OUTPUT);
digitalWrite(10,HIGH);
if(!SD.begin(4)) Serial.println("SD fail");
else Serial.println("SD ok");
File fh = SD.open("network.txt",FILE_READ);
char netBuffer[32];
if(!fh)
{
Serial.println("SD open fail");
return;
}
int chPos = 0;
int lineNo = 0;
while(fh.available())
{
char ch = fh.read();
if(ch == '\r') {
chPos = 0;
switch(lineNo) {
case 0:
// Serial.print("mac ");
sscanf(netBuffer,"%2x:%2x:%2x:%2x:%2x:%2x",&myMac[0],&myMac[1],&myMac[2],&myMac[3],&myMac[4],&myMac[5]);
break;
case 1:
// Serial.print("ip ");
sscanf(netBuffer,"%u.%u.%u.%u",&myIP[0],&myIP[1],&myIP[2],&myIP[3]);
break;
case 2:
// Serial.print("netmask ");
sscanf(netBuffer,"%u.%u.%u.%u",&myNM[0],&myNM[1],&myNM[2],&myNM[3]);
break;
case 3:
// Serial.print("gateway ");
sscanf(netBuffer,"%u.%u.%u.%u",&myGW[0],&myGW[1],&myGW[2],&myGW[3]);
break;
case 4:
// Serial.print("dns ");
sscanf(netBuffer,"%u.%u.%u.%u",&myDNS[0],&myDNS[1],&myDNS[2],&myDNS[3]);
break;
}
// Serial.println(netBuffer);
lineNo++;
}
else if(ch == '\n') {
// do nothing
}
else if(chPos < 31) {
netBuffer[chPos] = ch;
chPos++;
netBuffer[chPos] = 0;
}
}
fh.close();
int x;
Serial.print("\r\nmac ");
for(x=0;x<6;x++) {
Serial.print(myMac[x],HEX);
if(x<5) Serial.print(":");
}
Serial.print("\r\nip ");
for(x=0;x<4;x++) {
Serial.print(myIP[x],DEC);
if(x<3) Serial.print(".");
}
Serial.print("\r\nnetmask ");
for(x=0;x<4;x++) {
Serial.print(myNM[x],DEC);
if(x<3) Serial.print(".");
}
Serial.print("\r\ngateway ");
for(x=0;x<4;x++) {
Serial.print(myGW[x],DEC);
if(x<3) Serial.print(".");
}
Serial.print("\r\ndns ");
for(x=0;x<4;x++) {
Serial.print(myDNS[x],DEC);
if(x<3) Serial.print(".");
}
Serial.println("\r\nStarting ethernet");
Ethernet.begin(myMac,myIP,myDNS,myGW,myNM);
digitalWrite(10,HIGH);
Serial.println(Ethernet.localIP());
}
void loop() {
}
I commented out some of the serial debugging stuff. You can use it to debug your text file.
edit: Removed the double post. My bad.