⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readfilewindow.cpp

📁 这个是我在linux下用qt写的数字存储示波器的界面程序
💻 CPP
字号:
/***********************************************************************************************************************************************************************************************************************************opyRight C 2006 SEUFlieName:       readfile.cppDescreption:    aheader of myproject1Others:Version:        0.01Author:         jackDate:           2007/04/09History 1:      noDate:Version:Author:Modified:***********************************************************************************************************************************************************************************************************************************/#include <qapplication.h>#include <qfile.h>#include <qstring.h>#include <qtextstream.h>#include <qmultilineedit.h>#include <qframe.h>#include <qtimer.h>#include <qpainter.h>#include <qpushbutton.h>#include "readfilewindow.h"#include <stdio.h>#include <math.h>#include <stdlib.h>#include <sys/ioctl.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <sys/mman.h>//#define DEVICE  "/usr/local/arm/mydrives/lllllll/drawcurve/tridata.txt"#define DEVICE  "/dev/phyaddrtest"      const double pi = 3.14159;      unsigned int read_val[200];//      unsigned int val[200];/*for ( int i = 0; i<200; i++ )    {        val[i] = ( int ) ( sin((pi*i)/100)*100*360/200 + 180 );//store sin wave map to 0--160    }      unsigned int val[200]={0x83,0x19,0x6A,0x6B,77,90,88,44,22,33,                               123,31,32,55,36,75,43,123,44,89,                               98,13,69,56,66,59,31,34,36,79,                               85,55,28,77,1,14,58,0,71,34,                               23,13,56,78,71,52,63,2,59,18,                               73,51,52,61,97,55,69,45,28,71,                               58,69,28,39,27,29,14,18,19,45,                               42,75,91,59,85,10,20,45,62,99,                               45,89,17,46,13,79,93,52,41,88,                               85,97,59,58,54,29,12,18,22,55,//2nd cycle;                               0x83,0x39,0x6A,0x6B,77,90,88,44,20,33,                               13,34,32,55,36,65,42,13,44,89,                               98,23,39,36,66,59,31,24,46,79,                               85,55,48,77,1,14,58,0,75,14,                               23,12,46,78,71,82,93,2,19,18,                               73,91,82,71,97,55,29,45,18,71,                               38,39,28,39,27,29,14,18,19,45,                               42,73,91,59,75,21,60,45,62,99,                               45,89,18,46,13,79,93,52,71,88,                               85,97,59,58,74,29,12,15,22,55};*/readfileWindow :: readfileWindow( QWidget *parent, const char *name, WFlags f )          : QWidget( parent, name, f ){    if ( !name )    setName( "readdata" );    setGeometry( 10, 10, 300, 230 );/*    medit = new QMultiLineEdit( this );      medit->setGeometry( 10, 10, 260, 180 );      medit->setReadOnly( TRUE );          myfile = new QFile( "/dev/phyaddrtest");*/    frame1 = new QFrame( this, "frame1" );    frame1->setBackgroundColor( black );    frame1->setGeometry( QRect( 10, 10, 200, 200 ) );      timer = new QTimer( this, "flushtimer" );    connect( timer, SIGNAL( timeout() ), this, SLOT( flushBuff() ) );    timer->start( 50 );        btn = new QPushButton( "close",this, "btnclose");    btn->setGeometry( 250, 200, 40, 20 );    connect( btn, SIGNAL( clicked( ) ), qApp, SLOT( quit( ) ) );     if((fd = open(DEVICE,O_RDWR | O_NONBLOCK))<0)        {                qWarning("can not open device");                return;        }        qWarning("open device: %s\n",DEVICE);        valinit( );        writedata( );        readdata( ); }void readfileWindow :: valinit(){for ( int i = 0; i<200; i++ )    {        val[i] = ( int ) ( sin((pi*i)/100)*100*360/200 + 180 );//store sin wave map to 0--160    }              //return ;    }readfileWindow :: ~readfileWindow(){    close( fd );}int readfileWindow :: readdata( ){        printf("begin to read:\n");        ret = read(fd,read_val,800 );        printf("ret=%d\n", ret );        for( i = 0; i < 200; i++ )        {            printf("read1=%d\n",read_val[i]);//*(read_val+i)&0xffffffff );            //buff[i] = read_val[i]; // modify at 20070512        }        return 0;}void readfileWindow :: writedata( ){        ret=write(fd,val,800);        printf("ret=%d\n", ret );        if (ret!=800)        printf("write error\n");        else        printf("write data ok\n");        for (i=0;i<200;i++)        {            printf("val=%x\n",*(val+i));        }}void readfileWindow :: paintEvent( QPaintEvent * ){    frame1->erase( 0, 0, 200, 200 );    QPainter painter1( frame1 );    QPoint beginPoint;    QPoint endPoint;    painter1.setPen( QPen( yellow, 1, SolidLine ) );    painter1.drawLine( 0, 100, 200, 100 ); // a line at 20070512    for ( int i = 0; i <200-1; i++)    {        beginPoint.setX( i );        beginPoint.setY(read_val[i]);        endPoint.setX( i + 1 );        endPoint.setY( read_val[i + 1]);        painter1.drawLine( beginPoint, endPoint );    }}/*void readfileWindow :: flushBuff( ){    int tmp = buff[0];    for (int i = 0; i<199; i++ )    {        buff[i] = buff[i + 1];    }    buff[199] = tmp;    repaint( 0, 0, 640, 480, TRUE );}*/void readfileWindow :: flushBuff( ){    int tmp = read_val[0];    for (int i = 0; i<199; i++ )    {        read_val[i] = read_val[i + 1];    }    read_val[199] = tmp;    repaint( 0, 0, 320, 240, TRUE );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -