Bonjour à tous,
Étant débutant en programmation sous Arduino, je suis aujourd'hui confronté à un problème de communication entre un logiciel Light DMX et mon application qui communique en TCP sur le port 7348. J'aurais besoin de votre aide SVP.
L'idée:
Le fabriquant du logiciel Sweetlight utilise le protocole TCP pour communiquer avec des applications externes. J'ai donc crée une petite interface réseau, basée sur une Nano, une carte lan.
Le logiciel du fabriquant attends la consigne HELLO|NomApp|MdP. Une fois reçu, il retourne HELLO si OK ou ERROR NOT LOGGED si erreur de mot de passe Mdp. jusque la je parviens à me logger sur le soft... Ou cela se complique, c'est que je dois attendre que le soft me retourne HELLO ainsi que BEAT_ON. Une fois recu, je dois envoyer un mot BEAT qui à chaque envoie modifiera une valeur dans le soft du fabriquant.
j'utilise la librairie arduino_uip-master qui fonctionne puis que je sais communiquer avec.
Pouvez vous m'aider ?
#include <UIPEthernet.h>
EthernetClient client;
EthernetServer server = EthernetServer(7348);
signed long next;
int BPM = 250;
int LedPin1_D2 = 2; // Pin de la Led1.
int BeatInput_D3 = 3;
int BeatVariable;
void setup()
{
Serial.begin(115200);
pinMode(LedPin1_D2, OUTPUT);
pinMode(BeatInput_D3, INPUT);
uint8_t mac[6] = {0x54,0x55,0x58,0x10,0x00,0x24}; // 54:55:58:10:00:24
IPAddress myIP(192,168,10,3);
Ethernet.begin(mac,myIP);
server.begin();
Serial.print("localIP: ");
Serial.println(Ethernet.localIP());
Serial.print("subnetMask: ");
Serial.println(Ethernet.subnetMask());
Serial.print("gatewayIP: ");
Serial.println(Ethernet.gatewayIP());
Serial.print("dnsServerIP: ");
Serial.println(Ethernet.dnsServerIP());
next = 0;
}
void loop()
{
ComA2S2Live();
}
void ComA2S2Live() {
String Str1Msg2Live = "BEAT";
// int Str2Msg2Live = BPM;
String Msg2Live;
if (client.connect(IPAddress(192,168,10,2),7348))
{
// Serial.println("Client connected");
client.println("HELLO|A2S|1234");
client.println("DATA from Client");
while(client.available()==0)
{
// if (next - millis() < 0)
// goto close;
}
int size;
while((size = client.available()) > 0)
{
uint8_t* msg = (uint8_t*)malloc(size);
size = client.read(msg,size);
Serial.write(msg,size);
free(msg);
}
}
}