#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <wiringPi.h>
#include <wiringPiSPI.h>
#include <QTimer>
#include <linux/spi/spidev.h>
#include <sys/ioctl.h>
int fd;
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_InitSPIBot_clicked()
{
if((fd=wiringPiSPISetup(0,2000000))<0)
{
ui->textEdit->setText("Open SPI Error");
}
else
{
int8_t mode=1;
int32_t speed;
int ret=ioctl(fd,SPI_IOC_WR_MODE,&mode);
if(ret == -1)
{
ui->textEdit->setText("ChangeSPImode Fail");
}
else
{
ioctl(fd,SPI_IOC_RD_MAX_SPEED_HZ,&speed);
ui
->textEdit
->setText
("SPI Speed "+QString::number(speed
)+" Hz");
ioctl(fd,SPI_IOC_RD_MODE,&mode);
ui
->textEdit
->setText
("SPI mode "+QString::number(mode
));
connect(timer,SIGNAL(timeout()),this,SLOT(interval()));
}
}
}
void MainWindow::write_register()
{
unsigned char data_out[10];
data_out[0] = 0x02;
data_out[1] = 0x02;
data_out[2] = 0x00;
wiringPiSPIDataRW(0,data_out,3);
}
{
unsigned char data_out[10];
data_out[0] = 0x03;
data_out[1] = 0x00;
data_out[2] = 0x10;
wiringPiSPIDataRW(0,data_out,3);
for(int i=0;i<4;i++)
{
dat[i]=data_out[i+1];
}
return(dat);
}
void MainWindow::on_StartBot_2_clicked()
{
timer->start(200);
}
void MainWindow::on_StopBot_clicked()
{
timer->stop();
}
void MainWindow::interval()
{
ui->textEdit->clear();
out = read_register();
int32_t B0 = 0;
B0 = (out.at(0)<<16) | (out.at(1)<<8) | out.at(2);
float B;
B = B0;
ui
->textEdit
->append
(QString::number(B
)+" G");
}
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <wiringPi.h>
#include <wiringPiSPI.h>
#include <QTimer>
#include <linux/spi/spidev.h>
#include <sys/ioctl.h>
int fd;
QTimer *timer;
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_InitSPIBot_clicked()
{
if((fd=wiringPiSPISetup(0,2000000))<0)
{
ui->textEdit->setText("Open SPI Error");
}
else
{
int8_t mode=1;
int32_t speed;
int ret=ioctl(fd,SPI_IOC_WR_MODE,&mode);
if(ret == -1)
{
ui->textEdit->setText("ChangeSPImode Fail");
}
else
{
ioctl(fd,SPI_IOC_RD_MAX_SPEED_HZ,&speed);
ui->textEdit->setText("SPI Speed "+QString::number(speed)+" Hz");
ioctl(fd,SPI_IOC_RD_MODE,&mode);
ui->textEdit->setText("SPI mode "+QString::number(mode));
timer = new QTimer(this);
connect(timer,SIGNAL(timeout()),this,SLOT(interval()));
}
}
}
void MainWindow::write_register()
{
unsigned char data_out[10];
data_out[0] = 0x02;
data_out[1] = 0x02;
data_out[2] = 0x00;
wiringPiSPIDataRW(0,data_out,3);
}
QByteArray MainWindow::read_register()
{
QByteArray dat;
unsigned char data_out[10];
data_out[0] = 0x03;
data_out[1] = 0x00;
data_out[2] = 0x10;
wiringPiSPIDataRW(0,data_out,3);
for(int i=0;i<4;i++)
{
dat[i]=data_out[i+1];
}
return(dat);
}
void MainWindow::on_StartBot_2_clicked()
{
timer->start(200);
}
void MainWindow::on_StopBot_clicked()
{
timer->stop();
}
void MainWindow::interval()
{
QByteArray out;
ui->textEdit->clear();
out = read_register();
int32_t B0 = 0;
B0 = (out.at(0)<<16) | (out.at(1)<<8) | out.at(2);
float B;
B = B0;
ui->textEdit->append(QString::number(B)+" G");
}
To copy to clipboard, switch view to plain text mode
Bookmarks