Moin,
erledigt.
Es hängt an UIPethernet.
Wird die Bibliothek benutzt, geht keinerlei Kommunikation auf dem Netzwerk los.
Selbst ein Ethernet.begin(mac) - was ja den DHCP ansprechen soll, führt zu keinerlei Reaktion.
Ändert man das, ists ok.
Compiliert auf einem Uno:
Bibliothek arduino-mssql-master im Ordner: /home/aa/Arduino/libraries/arduino-mssql-master (legacy) wird verwendet
Bibliothek Ethernet in Version 2.0.0 im Ordner: /home/aa/arduino/libraries/Ethernet wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: /home/aa/arduino/hardware/arduino/avr/libraries/SPI wird verwendet
Der Sketch verwendet 15526 Bytes (48%) des Programmspeicherplatzes. Das Maximum sind 32256 Bytes.
Globale Variablen verwenden 932 Bytes (45%) des dynamischen Speichers, 1116 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Ausgabe vom SerMon:
16:58:55.663 -> Start
16:58:56.228 -> Am Server anmelden
16:58:57.424 -> Anmeldung ok
16:58:57.424 -> l7Free ram: 1004
16:58:57.424 -> MSSQL-Login
16:58:57.424 -> fsFree ram: 488
16:58:57.424 -> fbFree ram: 550
16:58:57.424 -> Lege Tabelle an
16:58:57.458 -> Insert ausgeführt - 10 sekunden für Konsolenabfrage
16:59:07.444 -> Done
Ich hab noch ein paar Bilder rangehangen, da siehst Du, was in den Kommunikationsdaten steht.
Da Du mit dem Server anscheinend öfter arbeitest, schau Dir mal die Response an.
Was stimmt an meinen Paketen nicht?
/*
Dieser Sketch entstand in https://forum.arduino.cc/index.php?topic=691532.0
Beispiel für connect, create, insert, drop in einer Microsoft-SQL-DB
Basis ist sqlard.h https://github.com/mustafakemalgilor/arduino-mssql
mit folgenden Änderungen und Hinweisen:
- sqlard.h allein ohne weitere Dateien in den lib-Ordner installieren
Bei der Installation wird eine sqlard-test.cpp mitkopiert -> löschen!
- UIPETHERNET war nicht dazu zu bewegen
weder in Version 1.04 (https://github.com/ntruchsess/arduino_uip)
noch V 2.0.8 (https://github.com/UIPEthernet/UIPEthernet)
- Standardmässig wird UIPEthernet verwendet. Dies wird unterbunden durch editieren
der sqlard.h und auskommentieren in Zeile 3 von #define UIPETHERNET
Somit wird automatisch die Ethernet.h eingebunden.
Konfiguration:
MSSQL-Server in der Version EXPRESS(x64) (14.0.3294.2) installiert auf einem Ubuntu 18.04.04
Es wurden keine Veränderungen an der Auslieferungskonfiguration vorgenommen, auch
keine zusätzlichen Benutzer angelegt.
Der Arduino ist im selben IP-Netz wie der Server. Beide haben feste IP-Adressen.
Angelegt wurde eine Datenbank 'Arduino'
*/
#include "sqlard.h" // https://github.com/mustafakemalgilor/arduino-mssql
uint8_t Ethernet_MacAddr[6] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x07 };
static byte Static_IPAddr[] = { 192, 168, 0, 1 }; // eigene IP-Adresse
/*
static byte Dns_IPAddr[] = { 192, 168, 0, 1 };
static byte Gateway_IPAddr[] = { 192, 168, 0, 1 };
static byte Subnet_Mask[] = { 255, 255, 255, 0 };
*/
static byte Server_IPAddr[] = { 192, 168, 0, 2 }; // IP-Adresse des MS-SQL-Server
EthernetClient client;
SQLard MSSQL(Server_IPAddr, 1433, &client); // Create the connection with the Server Data Base
void setup()
{
delay(50); // Kleinen Moment warten
Serial.begin(115200);
while (!Serial);
Serial.println("Start");
Ethernet.begin(Ethernet_MacAddr, Static_IPAddr);
//Ethernet.begin(Ethernet_MacAddr, Static_IPAddr, Dns_IPAddr, Gateway_IPAddr, Subnet_Mask); // Establish the connection of the client with the server
Serial.println("Am Server anmelden");
if (MSSQL.connect()) // Check if the connection with the Data Base is correct
{
Serial.println("Anmeldung ok");
// Übergeben wird die Datenbank, der Anmeldename, das PW, und ein "Sender"Name
MSSQL.setCredentials(L"Arduino", L"SA", L"passwd", L"Max"); // For login to the Data Base
Serial.println("MSSQL-Login");
MSSQL.login(); // Now we are able to send queries
/*
Hinweis: Mit dem Login werden auf dem Seriellen Monitor 3 Ausgaben gemacht
Diese sind in der sqlard.h in class SQLardUtil hinterlegt und können dort
ggfls. auskommentiert werden
*/
// Anlegen einer Tabelle mit einer Spalte
Serial.println("Lege Tabelle an");
MSSQL.executeNonQuery(L"CREATE TABLE dbo.TestA (Spalte1 int) ");
// Eintragen eines Wertes in die Tabelle
MSSQL.executeNonQuery(L"INSERT INTO dbo.TestA (Spalte1) VALUES(5)");
Serial.println("Insert ausgeführt - 10 sekunden für Konsolenabfrage");
delay(10000); // Wartezeit für Abfrage auf der Konsole
// Und wieder löschen
MSSQL.executeNonQuery(L"DROP TABLE dbo.TestA");
Serial.println("Done");
}
else
{
Serial.print("Anmeldefehler");
}
}
void loop() {}
Wireshark Mitschnitt:

Sendet Anmeldedaten:
Antwort Anmeldung:
Tabelle anlegen:

Response - falsches Format?

