Bonjour,
le C++ n'est pas un langage que j'utilise. Je suis plutôt vbnet / php ...
J'essaie d'adapter le code si dessous pour afin d'obtenir une requête INSERT correctement formatée. Je rencontre un souci pour faire entrer la variable "value" de type INT dans la chaine String "sSQL". voir ligne 49 et 65 du code.

A la compilation, j'ai une erreur de conversion de type. J'ai chercher un peu partout mais quand je teste des choses, j'ai soit un problème de dépendance avec des fonctions qui n'existe alors pas (IOTA...) , soit un autre problème de conversion de type.

L'ensemble fonctionnera sous Debian dans un raspberry et permet d'écouter les messages reçu en 433Mhz.

Merci de votre aide.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/*
  RFSniffer
 
  Usage: ./RFSniffer [<pulseLength>]
  [] = optional
 
  Hacked from http://code.google.com/p/rc-switch/
  by @justy to provide a handy RF code sniffer
*/
 
#include "RCSwitch.h"
#include <stdlib.h>
#include <stdio.h>
#include <string>
#include <postgresql/libpq-fe.h>
 
RCSwitch mySwitch;
 
 
 
int main(int argc, char *argv[]) {
 
//nécessaire pour se connecter à postgresql
PGconn          *conn;
PGresult        *res;
 
     // This pin is not the first pin on the RPi GPIO header!
     // Consult https://projects.drogon.net/raspberry-pi/wiringpi/pins/
     // for more information.
     int PIN = 2;	 
 
     if(wiringPiSetup() == -1) {
       printf("wiringPiSetup failed, exiting...");
       return 0;
     }
 
     int pulseLength = 0;
     if (argv[1] != NULL) pulseLength = atoi(argv[1]);
 
     mySwitch = RCSwitch();
	 if (pulseLength != 0) mySwitch.setPulseLength(pulseLength);
     mySwitch.enableReceive(PIN);  // Receiver on interrupt 0 => that is pin #2
 
 
     while(1) {
 
      if (mySwitch.available()) {
 
        int value = mySwitch.getReceivedValue(); //=> Je veux pouvoir entrer value en string dans la requête
 
 
        if (value == 0) {
          printf("Unknown encoding\n");
        } else {    
 
		conn = PQconnectdb("dbname=bdd_name host=localhost user=USER password=********");
		if (PQstatus(conn) == CONNECTION_BAD) {
                 puts("Impossible de se connecter à la bdd");
                 exit(0);
         }
 
		//on déclare le string 
		std::string sSQL;
		sSQL.append("INSERT INTO tb_rf (rf_nom) values ('");
		sSQL.append(value); //<= la valeur ici en char
		sSQL.append("')");  
		res = PQexec(conn,sSQL.c_str());
 
        printf("Received et enregistrer%i\n", mySwitch.getReceivedValue() );
        }
 
        mySwitch.resetAvailable();
 
      }
 
 
  }
 
  exit(0);
 
 
}