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

来源:互联网 发布:php简单文字特效代码 编辑:程序博客网 时间:2024/05/21 14:54

一、实验目的

了解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);}


原创粉丝点击