Récupérer les données d'un capteur en i2c
Posté : mar. 22 févr. 2022 14:27
Bonjour,
je travaille sur un projet pour le développement d'une centrale inertielle, soit la récupération des données d'un capteur 10 DOF et leur affichage au sein d'une IHM.
j'ai réussi a établir la connexion entre mon programme et le capteur mais je ne vois pas comment je pourrais faire pour récupérer les données. Est ce que vous avez des idées de fonctions que je peux utiliser pour ça svp?
Voila a quoi ressemble mon code:
#include "mainwindow.h"
#include <QApplication>
#include <cstdio>
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
int file_i2c;
int length;
int buffer[4];
char *filename= (char*) "/dev/i2c-1";
if((file_i2c=open(filename, O_RDWR))<0)
{
cout<<"fail to open I2C bus"<<endl;
}
int addr= 0x77;
if(ioctl(file_i2c, 0x0703, addr)<0)
{
cout<<"failed to acquire bus access or talk to the slave"<<endl;
}
length=4;
if(read(file_i2c, buffer,length)!=length)
{
cout<<"Failed to read from the i2c bus"<<endl;
}else {
// int nb=read(file_i2c,buffer,length);
// cout<<"nb"<<nb<<endl;
//je ne sais pas quoi mettre dans cette partie
}
je travaille sur un projet pour le développement d'une centrale inertielle, soit la récupération des données d'un capteur 10 DOF et leur affichage au sein d'une IHM.
j'ai réussi a établir la connexion entre mon programme et le capteur mais je ne vois pas comment je pourrais faire pour récupérer les données. Est ce que vous avez des idées de fonctions que je peux utiliser pour ça svp?
Voila a quoi ressemble mon code:
#include "mainwindow.h"
#include <QApplication>
#include <cstdio>
#include <iostream>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
using namespace std;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
int file_i2c;
int length;
int buffer[4];
char *filename= (char*) "/dev/i2c-1";
if((file_i2c=open(filename, O_RDWR))<0)
{
cout<<"fail to open I2C bus"<<endl;
}
int addr= 0x77;
if(ioctl(file_i2c, 0x0703, addr)<0)
{
cout<<"failed to acquire bus access or talk to the slave"<<endl;
}
length=4;
if(read(file_i2c, buffer,length)!=length)
{
cout<<"Failed to read from the i2c bus"<<endl;
}else {
// int nb=read(file_i2c,buffer,length);
// cout<<"nb"<<nb<<endl;
//je ne sais pas quoi mettre dans cette partie
}