Bonjour à vous.
Pour un projet dans lequel je dois modifier dynamiquement l'affichage d'une matrice de led (LEDmatrix de friedcircuits), et ce à partir d'un message reçu en provenance d'un interface sur mon ordi. Le message est transmis par une connection WIFI, employant le protocole OSC. De ce côté tout va. Le logiciel envoi une liste de 8 'string" dans un message. J'arrive à imprimer sans problème sur le moniteur série ces 8 strings .
B00000000
B11111111
B00000000
B11111111
B00000000
B11111111
B00000000
B11111111
Je n'arrive pas, par contre, à utiliser ceux-ci pour remplacer le contenu du 'array' "un" auquel le contrôleur du Ledmatrix réfère pour modifier l'affichage.
Je bloque à l'emploi de strncpy (ou memcpy) dans mes tentative de modification de l'array.
Le message d'erreur m'indique un problème de conversion qui dépasse d'évidence mes compétences...
"invalid conversion from 'byte {aka unsigned char}' to 'char*' [-fpermissive]"
Merci de partager votre savoir.
Emile
ps. c'est la dernière section du code qui flanche. J,ai de plus éviter d'y inclure le code de contrôle du Ledmatrix pour plus de clarté, car cela fonctionne bien.
#include <ArduinoOSC.h>
WiFiUDP udp;
ArduinoOSCWiFi osc;
const char* ssid = "Blablabiti";
const char* pwd = "Zind@b@d";
const IPAddress ip(10, 0, 1, 9);
const IPAddress gateway(10, 0, 1, 1);
const IPAddress subnet(255, 255, 255, 0);
const char* host = "10.0.1.3";
const int recv_port = 9999;
const int send_port = 8888;
byte arr1 = B00000000;
byte un[8] = {
B00000000,
B11111111,
B00000000,
B11111111,
B00000000,
B11111111,
B00000000,
B11111111};
void setup()
{
Serial.begin(115200);
WiFi.disconnect(true);
WiFi.begin(ssid, pwd);
WiFi.config(ip, gateway, subnet);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
osc.begin(udp, recv_port);
osc.addCallback("/ard", &transfert);
}
void loop()
{
osc.parse();
}
void transfert(OSCMessage& m) // receive through OSC (on wifi conncetion) a massage with 8 integrer, let says 10 20 30 40 50 60 70 80
{
for (int i=0;i<8;i++) // loop through all the 8 string received in the OSC message
{
Serial.print(m.getArgAsString(i)); // ça fonctionne sans problème. message envoyé = message reçu
Serial.println("");
}
for (int j=0;j<8;j++) // loop through all the 8 string received in the OSC
strncpy(un[j], m.getArgAsString(j), 8); // cherche ici à copier le message reçu pour remplacer une des données du 'array' "un"
//memcpy(un[j], m.getArgAsString(j), strlen(m.getArgAsString(j)+1); // j'ai tenter d'utiliser memcpy mais sons plus de succès
Serial.println(un[j]);
printf( "array=" arr1 );
delay(100);
}