您的位置:首页 > 编程语言 > Qt开发

通过Qt界面控制步进电机的启停

2017-05-18 17:08 447 查看
一、实验目的

了解Qt界面与开发板底层硬件之间的调用机制

 

二、实验方法

1,在QT程序中,新建一件,再添加一个用于操作硬件的新方法,如controlMachine,建立按钮与con个属于你自己的类,如Widget用于显示。
2,在你的类中添加按钮控trolMachine函数之间的信号与槽机制(使用connect函数)。
3,完善你的controlMachine函数,在函数中实现:读取Edit中变量的值,放在你的新变量中,使用Linux系统函数open打开设备文件,调用::ioctl函数(在QT中直接调用系统函数前边得加::两个冒号),使用ioctl传入参数,然后关闭文件。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "unistd.h"
static int dcm_fd = -1;
char *DCM_DEV="/dev/s3c2440-dc-motor0";

int k=0;

#define DCM_IOCTRL_SETPWM 			(0x10)
#define DCM_TCNTB0				(16384)

/*
void Delay(int t)
{
int i;
for(;t>0;t--)
for(i=0;i<400;i++);
}*/

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

MainWindow::~MainWindow()
{
delete ui;
}

void MainWindow::on_pushButton_clicked()
{

int i = 0;
int status = 1;
int setpwm = 0;
int factor = DCM_TCNTB0;

if(k==0){

if((dcm_fd=open(DCM_DEV, O_WRONLY))<0){
printf("Error opening %s device\n", DCM_DEV);
//return 1;

}

for (i=-512; i<=512; i++) {
if(status == 1)
setpwm = i;
else
setpwm = -i;
ioctl(dcm_fd, DCM_IOCTRL_SETPWM, (100 * factor));
// Delay(500);
//printf("setpwm = %d \n", setpwm);
}
k=1;
}

else
{
k=0;
::close(dcm_fd);
}

//close(dcm_fd);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 界面 硬件