我在网上找了一个数字示波器的程序,编译通过了。该程序我读过了,大体上是打开一个文本文件,读文件中的内容,然后根据读出的数据进行绘图。下面是该程序:
头文件:
#ifndef READFILEWINDOW_H
#define READFILEWINDOW_H
#include <qwidget.h>
//#include <qfile.h>
class QMultiLineEdit;
class QFile;
class QFrame;
class QTimer;
class QPushButton;
class readfileWindow : public QWidget
{
Q_OBJECT
public :
readfileWindow( QWidget *parent = 0, const char *name = 0, WFlags f = 0 );
~readfileWindow( );
int readdata( );
void writedata( );
void valinit( );
private :
QMultiLineEdit *medit;
QFile *myfile;
QFrame *frame1;
QTimer *timer;
QPushButton *btn;
int i,fd,ret;
unsigned int val[200];
//unsigned int buff[200];
//unsigned int read_val[4];
protected :
void paintEvent( QPaintEvent * );
private slots:
void flushBuff();
};
#endif // READFILEWINDOW_H
源文件:
/*****************************************************************************************************************
******************************************************************************************************************
opyRight C 2006 SEU
FlieName: readfile.cpp
Descreption: aheader of myproject1
Others:
Version: 0.01
Author: jack
Date: 2007/04/09
History 1: no
Date:
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 "/root/2410sQt/pc-qtopia/drawcurve/in1.txt"
const double pi = 3.14159;
unsigned int read_val[200];
// unsigned int val[200];
readfileWindow :: readfileWindow( QWidget *parent, const char *name, WFlags f )
: QWidget( parent, name, f )
{
if ( !name )
setName( "readdata" );
setGeometry( 10, 10, 300, 230 );
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( 5000 );
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 = ( 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);//*(read_val+i)&0xffffffff );
//buff = read_val; // 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);
endPoint.setX( i + 1 );
endPoint.setY( read_val[i + 1]);
painter1.drawLine( beginPoint, endPoint );
}
}
void readfileWindow :: flushBuff( )
{
int tmp = read_val[0];
for (int i = 0; i<199; i++ )
{
read_val = read_val[i + 1];
}
read_val[199] = tmp;
repaint( 0, 0, 320, 240, TRUE );
}
主函数:
#include <qapplication.h>
#include "readfilewindow.h"
#define QT_NO_WIZARD
int main( int argc, char **argv )
{
QApplication a(argc,argv);
readfileWindow w;
a.setMainWidget( &w );
w.show();
return a.exec();
}
输出结果:
open device: /root/2410sQt/pc-qtopia/drawcurve/in1.txt
ret=800
write data ok
val=b4
val=b9
val=bf
val=c4
val=ca
val=d0
val=d5
val=db
val=e0
val=e6
val=eb
val=f0
val=f6
val=fb
val=100
val=105
val=10a
val=10f
val=114
val=119
val=11d
val=122
val=126
val=12b
val=12f
val=133
val=137
val=13b
val=13e
val=142
val=145
val=148
val=14b
val=14e
val=151
val=154
val=156
val=159
val=15b
val=15d
val=15f
val=160
val=162
val=163
val=164
val=165
val=166
val=167
val=167
val=167
val=167
val=167
val=167
val=167
val=166
val=165
val=164
val=163
val=162
val=160
val=15f
val=15d
val=15b
val=159
val=156
val=154
val=151
val=14e
val=14b
val=148
val=145
val=142
val=13e
val=13b
val=137
val=133
val=12f
val=12b
val=126
val=122
val=11d
val=119
val=114
val=10f
val=10a
val=105
val=100
val=fb
val=f6
val=f0
val=eb
val=e6
val=e0
val=db
val=d5
val=d0
val=ca
val=c4
val=bf
val=b9
val=b4
val=ae
val=a8
val=a3
val=9d
val=97
val=92
val=8c
val=87
val=81
val=7c
val=77
val=71
val=6c
val=67
val=62
val=5d
val=58
val=53
val=4e
val=4a
val=45
val=41
val=3c
val=38
val=34
val=30
val=2c
val=29
val=25
val=22
val=1f
val=1c
val=19
val=16
val=13
val=11
val=e
val=c
val=a
val=8
val=7
val=5
val=4
val=3
val=2
val=1
val=0
val=0
val=0
val=0
val=0
val=0
val=0
val=1
val=2
val=3
val=4
val=5
val=7
val=8
val=a
val=c
val=e
val=11
val=13
val=16
val=19
val=1c
val=1f
val=22
val=25
val=29
val=2c
val=30
val=34
val=38
val=3c
val=41
val=45
val=4a
val=4e
val=53
val=58
val=5d
val=62
val=67
val=6c
val=71
val=77
val=7c
val=81
val=87
val=8c
val=92
val=97
val=9d
val=a3
val=a8
val=ae
begin to read:
ret=800
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=540090417
read1=170991665
我给出的文本文件的内容是全1,可是为什么读的显示结果是read1的内容?绘图也没有显示,请大家帮我看看了。先谢了