Jetzt habe ich die Kommunikation am laufen, ABER wenn ich nun die Programme zusammen führe bekomme ich eine Fehlermeldung.
SD_und_ETH:79:22: error: conflicting declaration 'EthernetServer server'
EthernetServer server(3363);
^
T:\XXX.ino:ino:75:11: note: previous declaration as 'IPAddress server'
IPAddress server( 169, 254, 155, 167 );
^
T:\XXX.ino: In function 'void setup()':
SD_und_ETH:169:10: error: 'class IPAddress' has no member named 'begin'
server.begin();
^
T:\XXX.ino: In function 'void loop()':
SD_und_ETH:218:34: error: 'class IPAddress' has no member named 'available'
EthernetClient client = server.available();
^
Mehrere Bibliotheken wurden für "DS3231.h" gefunden
Benutzt: C:\Users\XXX\Documents\Arduino\libraries\DS3231
Nicht benutzt: C:\Users\XXX\Documents\Arduino\libraries\DS3231-master
exit status 1
conflicting declaration 'EthernetServer server'
Problem ist kla.
Ich versuche auf der einen Seite das Arduino als Client und einmal als Server zu betreiben.
Code mit der LabVIEW Kommunikation:
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = {0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67}; //adresse mac de la carte
IPAddress ip( 169, 254, 155, 2 );
IPAddress gateway( 169, 254, 155, 1 );
IPAddress subnet( 255, 255, 255, 0 );
String msg="";
char thisChar;
const int led_rot = 8;
EthernetServer server(3363);
void setup() {
// initialize the ethernet device
pinMode(led_rot, OUTPUT);
Ethernet.begin(mac, ip);
// start listening for clients
server.begin();
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
//; // wait for serial port to connect. Needed for Leonardo only
digitalWrite(led_rot, LOW);
}
Serial.print("Chat server address:");
Serial.println(Ethernet.localIP());
}
void loop() {
// wait for a new client:
EthernetClient client = server.available();
// when the client sends the first byte, say hello:
if (client.connected()) {
if (client) {
while (client.available() != 0) {
thisChar = client.read();
msg += String(thisChar);
}
//msg ;
Serial.println(msg);
if (msg == "49") {
digitalWrite(led_rot, HIGH);
delay(1000);
}
else
{
digitalWrite(led_rot, LOW);
}
msg="";
}
}
}
Und der Code des FTP-Servers
/*
FTP passive client for IDE v1.0.1 and w5100/w5200
Posted October 2012 by SurferTim
Modified 6 June 2015 by SurferTim
*/
#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
// comment out next line to write to SD from FTP server
#define FTPWRITE
// this must be unique
byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x59, 0x67 };
// change to your network settings
IPAddress ip( 169, 254, 155, 2 );
IPAddress gateway( 192, 168, 155, 1 );
IPAddress subnet( 255, 255, 255, 0 );
// change to your server
IPAddress server( 169, 254, 155, 167 );
EthernetClient client;
EthernetClient dclient;
char outBuf[128];
char outCount;
// change fileName to your file (8.3 format!)
String fileName = " ";
void setup()
{
Serial.begin(9600);
digitalWrite(10, HIGH);
if (!SD.begin(4))
{
Serial.println(F("SD init fail"));
}
Ethernet.begin(mac, ip, gateway, gateway, subnet);
digitalWrite(10, HIGH);
delay(2000);
Serial.println(F("Bitte Textateiname eingeben eingeben: (z.b. 20190428.txt)"));
}
void loop()
{
while (Serial.available()) {
fileName = Serial.readString();
fileName.remove(12);
Serial.println(fileName);
}
if (fileName != " ")
{
if (doFTP()) Serial.println(F("FTP OK"));
else Serial.println(F("FTP FAIL"));
fileName = " ";
}
// if(inChar == 'r')
// {
// readSD();
// }
}
File fh;
byte doFTP()
{
Serial.println(F("doFTP"));
#ifdef FTPWRITE
fh = SD.open(fileName, FILE_READ);
#else
SD.remove(fileName);
fh = SD.open(fileName, FILE_WRITE);
#endif
if (!fh)
{
Serial.println(F("SD open fail"));
return 0;
}
#ifndef FTPWRITE
if (!fh.seek(0))
{
Serial.println(F("Rewind fail"));
fh.close();
return 0;
}
#endif
Serial.println(F("SD opened"));
if (client.connect(server, 21)) {
Serial.println(F("Command connected"));
}
else {
fh.close();
Serial.println(F("Command connection failed"));
return 0;
}
if (!eRcv()) return 0;
client.println(F("USER myuser"));
if (!eRcv()) return 0;
client.println(F("PASS mypassword"));
if (!eRcv()) return 0;
client.println(F("SYST"));
if (!eRcv()) return 0;
client.println(F("Type I"));
if (!eRcv()) return 0;
client.println(F("PASV"));
if (!eRcv()) return 0;
char *tStr = strtok(outBuf, "(,");
int array_pasv[6];
for ( int i = 0; i < 6; i++) {
tStr = strtok(NULL, "(,");
array_pasv[i] = atoi(tStr);
if (tStr == NULL)
{
Serial.println(F("Bad PASV Answer"));
}
}
unsigned int hiPort, loPort;
hiPort = array_pasv[4] << 8;
loPort = array_pasv[5] & 255;
Serial.print(F("Data port: "));
hiPort = hiPort | loPort;
Serial.println(hiPort);
if (dclient.connect(server, hiPort)) {
Serial.println(F("Data connected"));
}
else {
Serial.println(F("Data connection failed"));
client.stop();
fh.close();
return 0;
}
#ifdef FTPWRITE
client.print(F("STOR "));
client.println(fileName);
#else
client.print(F("RETR "));
client.println(fileName);
#endif
if (!eRcv())
{
dclient.stop();
return 0;
}
#ifdef FTPWRITE
Serial.println(F("Writing"));
byte clientBuf[64];
int clientCount = 0;
while (fh.available())
{
clientBuf[clientCount] = fh.read();
clientCount++;
if (clientCount > 63)
{
dclient.write(clientBuf, 64);
clientCount = 0;
}
}
if (clientCount > 0) dclient.write(clientBuf, clientCount);
#else
while (dclient.connected())
{
while (dclient.available())
{
char c = dclient.read();
fh.write(c);
Serial.write(c);
}
}
#endif
dclient.stop();
Serial.println(F("Data disconnected"));
if (!eRcv()) return 0;
client.println(F("QUIT"));
if (!eRcv()) return 0;
client.stop();
Serial.println(F("Command disconnected"));
fh.close();
Serial.println(F("SD closed"));
return 1;
}
byte eRcv()
{
Serial.println(F("eRcv"));
byte respCode;
byte thisByte;
while (!client.available()) delay(1);
respCode = client.peek();
outCount = 0;
while (client.available())
{
thisByte = client.read();
Serial.write(thisByte);
if (outCount < 127)
{
outBuf[outCount] = thisByte;
outCount++;
outBuf[outCount] = 0;
}
}
if (respCode >= '4')
{
efail();
return 0;
}
return 1;
}
void efail()
{
Serial.println(F("efail"));
byte thisByte = 0;
client.println(F("QUIT"));
while (!client.available()) delay(1);
while (client.available())
{
thisByte = client.read();
Serial.write(thisByte);
}
client.stop();
Serial.println(F("Command disconnected"));
fh.close();
Serial.println(F("SD closed"));
}
void readSD()
{
Serial.println(F("readSD"));
fh = SD.open(fileName, FILE_READ);
if (!fh)
{
Serial.println(F("SD open fail"));
return;
}
while (fh.available())
{
Serial.write(fh.read());
}
fh.close();
}
Wollte die serielle Eingabe aus LabVIEW realisieren. Danke schon mal.