#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <qlabel.h>
#include <QLineEdit>
#include<QMessageBox>
#include <linux/fb.h>
#include <sys/mman.h>
#include <malloc.h>
#include <termios.h>
//#include <QtCore/qstring.h>
#include <qstring.h>
#include <QtGui>
#include <form.h>
#include "mythread.h"
#include "linux/input.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
fd1=-1;
fd2=-1;
fd3=-1;
fd4=-1;
mk=0;
svs=true;
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
QFont font("wenquanyi",16,QFont::Bold); //浣跨敤wenquanyi瀛椾綋
this->setFont(font);
setWindowTitle(QObject::tr("鏂亾鏍稿績鏉挎祴璇曠郴缁?));
::system("hwclock -w");
showbutton();
}
MainWindow::~MainWindow()
{
delete ui;
}
struct fb_dev
{
//for frame buffer
int fb;
void *fb_mem; //frame buffer mmap
int fb_width, fb_height, fb_line_len, fb_size;
int fb_bpp;
} fbdev;
void MainWindow::fb_stat(int fd)
{
struct fb_fix_screeninfo fb_finfo;
struct fb_var_screeninfo fb_vinfo;
if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo))
{
//perror(__func__);
//return (-1);
}
if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo))
{
//perror(__func__);
//return (-1);
}
fbdev.fb_width = fb_vinfo.xres;
fbdev.fb_height = fb_vinfo.yres;
fbdev.fb_bpp = fb_vinfo.bits_per_pixel;
fbdev.fb_line_len = fb_finfo.line_length;
fbdev.fb_size = fb_finfo.smem_len;
//return (0);
}
void MainWindow::showbutton()
{
int x,y;
int i=0;
QLabel *lbl = new QLabel(this);
QFont lbl_font;
qtext = new QTextEdit(this);
x=800;
y=480;
// QLineEdit *LineTxt=new QLineEdit(this);
PushButtonDisp=new QPushButton(this);
PushButtonDisp->setText(QObject::tr("鏄剧ず"));
PushButtonDisp->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonDisp->show();
connect(PushButtonDisp,SIGNAL(clicked()),this,SLOT(qt_Disp()));
PushButtonTouch=new QPushButton(this);
PushButtonTouch->setText(QObject::tr("瑙︽懜"));
PushButtonTouch->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonTouch->show();
connect(PushButtonTouch,SIGNAL(clicked()),this,SLOT(qt_Touch()));
PushButtonCOM1=new QPushButton(this);
PushButtonCOM1->setText(QObject::tr("涓插彛1"));
PushButtonCOM1->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonCOM1->show();
connect(PushButtonCOM1,SIGNAL(clicked()),this,SLOT(qt_COM1()));
PushButtonCOM2=new QPushButton(this);
PushButtonCOM2->setText(QObject::tr("涓插彛2"));
PushButtonCOM2->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonCOM2->show();
connect(PushButtonCOM2,SIGNAL(clicked()),this,SLOT(qt_COM2()));
PushButtonCOM3=new QPushButton(this);
PushButtonCOM3->setText(QObject::tr("涓插彛3"));
PushButtonCOM3->setGeometry(QRect(QPoint(40+(i-2)*190, 40+70),
QSize(150, 70)));
PushButtonCOM3->show();
connect(PushButtonCOM3,SIGNAL(clicked()),this,SLOT(qt_COM3()));
PushButtonCOM4=new QPushButton(this);
PushButtonCOM4->setText(QObject::tr("涓插彛4"));
PushButtonCOM4->setGeometry(QRect(QPoint(40+(i-1)*190, 40+70),
QSize(150, 70)));
PushButtonCOM4->show();
connect(PushButtonCOM4,SIGNAL(clicked()),this,SLOT(qt_COM4()));
PushButtonUSB=new QPushButton(this);
PushButtonUSB->setText("USB");
PushButtonUSB->setGeometry(QRect(QPoint(40+(i-4)*190, 40+70),
QSize(150, 70)));
PushButtonUSB->show();
connect(PushButtonUSB,SIGNAL(clicked()),this,SLOT(qt_USB()));
NetWork=new QPushButton(this);
NetWork->setText(QObject::tr("缃戝崱"));
NetWork->setGeometry(QRect(QPoint(40+(i-3)*190, 40+70),
QSize(150, 70)));
NetWork->show();
connect(NetWork,SIGNAL(clicked()),this,SLOT(qt_NetWork()));
PushButtonKey=new QPushButton(this);
PushButtonKey->setText(QObject::tr("鎸夐敭"));
PushButtonKey->setGeometry(QRect(QPoint(40+(i-4)*190, 60+140),
QSize(150, 70)));
PushButtonKey->show();
connect(PushButtonKey,SIGNAL(clicked()),this,SLOT(qt_KEY()));
PushButtonRTC=new QPushButton(this);
PushButtonRTC->setText("RTC");
PushButtonRTC->setGeometry(QRect(QPoint(40+(i-3)*190, 60+140),
QSize(150, 70)));
PushButtonRTC->show();
connect(PushButtonRTC,SIGNAL(clicked()),this,SLOT(qt_RTC()));
PushButtonStorage=new QPushButton(this);
PushButtonStorage->setText(QObject::tr("瀛樺偍鍗?));
PushButtonStorage->setGeometry(QRect(QPoint(40+(i-2)*190,60+140),
QSize(150, 70)));
PushButtonStorage->show();
connect(PushButtonStorage,SIGNAL(clicked()),this,SLOT(qt_STR()));
PushButtonResverd=new QPushButton(this);
PushButtonResverd->setText(QObject::tr("棰勭暀"));
PushButtonResverd->setGeometry(QRect(QPoint(40+(i-1)*190, 60+140),
QSize(150, 70)));
PushButtonResverd->show();
connect(PushButtonResverd,SIGNAL(clicked()),this,SLOT(qt_RES()));
lbl_font.setPointSize(16); //璁剧疆瀛椾綋澶у皬
lbl->setFont(lbl_font);
lbl->setText(QObject::tr("鎻愮ず淇℃伅"));
lbl->setGeometry(QRect(QPoint(40+(i-4)*190+40, 60+210),
QSize(150, 70)));
qtext->setGeometry(QRect(QPoint(40+(i-3)*190, 80+210),
QSize(520, 40)));
qtext->setReadOnly(true);
PushButtonInKey=new QPushButton(this);
PushButtonInKey->setText(QObject::tr("鍗″叆鎸夐敭"));
PushButtonInKey->setGeometry(QRect(QPoint(40+(i-4)*190, 80+280),
QSize(150, 70)));
PushButtonInKey->show();
// connect(PushButtonInKey,SIGNAL(clicked()),this,SLOT(qt_IN()));
PushButtonOutKey=new QPushButton(this);
PushButtonOutKey->setText(QObject::tr("鍗″嚭鎸夐敭"));
PushButtonOutKey->setGeometry(QRect(QPoint(40+(i-3)*190, 80+280),
QSize(150, 70)));
PushButtonOutKey->show();
// connect(PushButtonOutKey,SIGNAL(clicked()),this,SLOT(qt_OUT()));
PushButtonTestKey=new QPushButton(this);
PushButtonTestKey->setText(QObject::tr("娴嬭瘯鎸夐敭"));
PushButtonTestKey->setGeometry(QRect(QPoint(40+(i-2)*190, 80+280),
QSize(150, 70)));
PushButtonTestKey->show();
// connect(PushButtonTestKey,SIGNAL(clicked()),this,SLOT(qt_TEST()));
PushButtonPrintKey=new QPushButton(this);
PushButtonPrintKey->setText(QObject::tr("鎵撳嵃鎸夐敭"));
PushButtonPrintKey->setGeometry(QRect(QPoint(40+(i-1)*190,80+280),
QSize(150, 70)));
PushButtonPrintKey->show();
// connect(PushButtonPrintKey,SIGNAL(clicked()),this,SLOT(qt_Print()));
i_sysinfo = new QProcess(this);
connect(i_sysinfo, SIGNAL(readyReadStandardOutput()), this, SLOT(qt_Print()));
timer = new QTimer(this);
sign=1;
connect(timer,SIGNAL(timeout()),this,SLOT(timeEvent()));
timer1 = new QTimer(this);
connect(timer1,SIGNAL(timeout()),this,SLOT(timeEvent1()));
//MyThread myth;
//connect(&myth,SIGNAL(started()),&myth,SLOT(print_hwc()));
//myth.start();
m_cmdhw = new QProcess (this);
connect(m_cmdhw, SIGNAL(readyReadStandardOutput()), this, SLOT(print_hwc()));
}
void MainWindow::qt_Disp()
{
// QString *text1="Display Ok";
int fb;
long i;
unsigned char *buffer;
if ((fb = open("/dev/fb0", O_RDWR)) < 0) //闁瑰灚鎸哥槐鎴﹀及閹冨耿閻犱焦鍎抽ˇ?
{
//perror(__func__);
//return (-1);
}
fb_stat(fb);
fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
//闁哄嫮濮撮惃鐘诲及閹呮憼闁革附婢樺? fbdev.fb = fb;
buffer = (unsigned char *) malloc(800*480*4);
for(i=0;i<800*480*4;)
{
buffer[i++]=0;
buffer[i++]=0;
buffer[i++]=255;
buffer[i++]=0;
}
// memset(buffer,0xff0000,800*480*2);
memcpy((unsigned char *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
for(i=0;i<800*480*4;)
{
buffer[i++]=0;
buffer[i++]=255;
buffer[i++]=0;
buffer[i++]=0;
}
// memset(buffer,0x00,800*480*2);
memcpy((unsigned int *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
// memset(buffer,0x0,800*480*2);
for(i=0;i<800*480*4;)
{
buffer[i++]=0xff;
buffer[i++]=0xff;
buffer[i++]=255;
buffer[i++]=0;
}
memcpy((unsigned char *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
update();
Form *form;
form = new Form();
form->show();
form->close();
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n鏄剧ず姝e父"));
qtext->moveCursor(QTextCursor::End);
PushButtonDisp->setEnabled(false);
//PushButtonDisp->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_Touch()
{
::system("ts_calibrate");
PushButtonTouch->setEnabled(false);
// PushButtonTouch->setStyleSheet("background-color:#00FF00");
}
bool MainWindow::open_serial(int x)
{
switch(x) {
case 0:
fd1 = ::open("/dev/ttySAC0", O_RDWR|O_NONBLOCK);
// QMessageBox::warning(this, tr("warning"), tr("the com0 used on debug,if you want to use it,please modify the source code!"));
// return false;
break;
case 1:
fd2 = ::open("/dev/ttySAC1", O_RDWR|O_NONBLOCK);
break;
case 2:
fd3 = ::open("/dev/ttySAC2", O_RDWR|O_NONBLOCK);
break;
case 3:
fd4 = ::open("/dev/ttySAC3", O_RDWR|O_NONBLOCK);
break;
default:
QMessageBox::warning(this, tr("Error"), tr("Fail to open serial port!"));
break;
}
QString str = qtext->toPlainText();
switch(x) {
case 0:
if(fd1 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛1鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr1;
memset(&serialAttr1, 0, sizeof serialAttr1);
serialAttr1.c_iflag = IGNPAR;
serialAttr1.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr1.c_cc[VMIN] = 1;
if (tcsetattr(fd1, TCSANOW, &serialAttr1) != 0) {
qtext->setPlainText(str+QObject::tr("\n涓插彛1鎵撳紑澶辫触"));
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port1 ok!"));
m_notifier1 = new QSocketNotifier(fd1, QSocketNotifier::Read, this);
connect (m_notifier1, SIGNAL(activated(int)), this, SLOT(revdata1()));
}
break;
case 1:
if(fd2 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛2鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr2;
memset(&serialAttr2, 0, sizeof serialAttr2);
serialAttr2.c_iflag = IGNPAR;
serialAttr2.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr2.c_cc[VMIN] = 1;
if (tcsetattr(fd2, TCSANOW, &serialAttr2) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port2 ok!"));
m_notifier2 = new QSocketNotifier(fd2, QSocketNotifier::Read, this);
connect (m_notifier2, SIGNAL(activated(int)), this, SLOT(revdata2()));
break;
}
case 2:
if(fd3 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛3鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr3;
memset(&serialAttr3, 0, sizeof serialAttr3);
serialAttr3.c_iflag = IGNPAR;
serialAttr3.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr3.c_cc[VMIN] = 1;
if (tcsetattr(fd3, TCSANOW, &serialAttr3) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port3 ok!"));
m_notifier3 = new QSocketNotifier(fd3, QSocketNotifier::Read, this);
connect (m_notifier3, SIGNAL(activated(int)), this, SLOT(revdata3()));
break;
}
case 3:
if(fd4 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛4鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr4;
memset(&serialAttr4, 0, sizeof serialAttr4);
serialAttr4.c_iflag = IGNPAR;
serialAttr4.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr4.c_cc[VMIN] = 1;
if (tcsetattr(fd4, TCSANOW, &serialAttr4) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port4 ok!"));
m_notifier4 = new QSocketNotifier(fd4, QSocketNotifier::Read, this);
connect (m_notifier4, SIGNAL(activated(int)), this, SLOT(revdata4()));
break;
}
}
return true;
}
void MainWindow::close_serial()
{
if (m_notifier) {
delete m_notifier;
m_notifier = 0;
}
if (fd1 >= 0) {
::close(fd1);
fd1 = -1;
}
QMessageBox::warning(this, tr("gzsd"), tr("close serial port ok!"));
}
void MainWindow::send_data(int i)
{
QString sendata="a1 b2 c3 d4";
switch(i)
{
case 1:
::write(fd1, sendata.toLatin1(), sendata.length());
break;
case 2:
::write(fd2,sendata.toLatin1(), sendata.length());
break;
case 3:
::write(fd3,sendata.toLatin1(), sendata.length());
break;
case 4:
::write(fd4, sendata.toLatin1(), sendata.length());
break;
}
}
void MainWindow::empty_rev()
{
}
int i=0;
void MainWindow::revdata1()
{
if(fd1 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd1, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM1->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata2()
{
if(fd2 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd2, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM2->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata3()
{
if(fd3 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd3, &c, sizeof c) < 0)
{
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
PushButtonCOM3->setEnabled(false);
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata4()
{
if(fd4 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd4, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM4->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::qt_COM1()
{
if(fd1<0)
open_serial(0) ;
send_data(1) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("涓插彛1 \rtest "));
qtext->moveCursor(QTextCursor::End);
// qtext->toPlainText();// ("COM1 \rtest ");
}
void MainWindow::qt_COM2()
{
if(fd2<0)
open_serial(1) ;
send_data(2) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛2 \rtest "));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_COM3()
{
if(fd3<0)
open_serial(2) ;
RevData="";
send_data(3) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛3 \rtest " ));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_COM4()
{
if(fd4<0)
open_serial(3) ;
send_data(4) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛4 \rtest " ));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_USB()
{
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\nUSB OK");
qtext->moveCursor(QTextCursor::End);
PushButtonUSB->setEnabled(false);
// PushButtonUSB->setStyleSheet("background-color:#00FF00");
}
void MainWindow::result_info()
{
}
void MainWindow::qt_NetWork()
{
::system("ifconfig eth0 up");
::system("udhcpc -i eth0");
i_sysinfo->start("ifconfig eth0");
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+"please waiting ");
qtext->moveCursor(QTextCursor::End);
// lineEdt->insert("eth0 set parameter end\n");
}
void MainWindow::qt_KEY()
{
keys_fd = open ("/dev/input/event0", O_RDONLY);
m_notifierrtc = new QSocketNotifier(keys_fd, QSocketNotifier::Read, this);
connect (m_notifierrtc, SIGNAL(activated(int)), this, SLOT(timeEvent2()));
// timer2 = new QTimer(this);
// connect(timer2,SIGNAL(read()),this,SLOT(timeEvent2()));
//timer2->start(200);
//close(keys_fd);
// QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("鎸夐敭姝e父 "));
// qtext->moveCursor(QTextCursor::End);
PushButtonKey->setEnabled(false);
// PushButtonKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_RTC()
{
// ::system("hwclock -s");
timer1->start(1000);
// print_hwc();
// usleep(1000*1000);
// m_cmdhw->start("hwclock");
// print_hwc();
// usleep(1000*1000);
// m_cmdhw->start("hwclock");
// QString str = qtext->toPlainText();
// qtext->setPlainText("qt_RTC OK\n");
// qtext->moveCursor(QTextCursor::End);
}
void MainWindow::print_hwc()
{
int i=0;
lineInfo="";
while (m_cmdhw->canReadLine())
{
lineInfo += m_cmdhw->readAllStandardOutput();
}
if(lineInfo == NULL)
{
lineInfo = "no data" ;
}
QString str = qtext->toPlainText();
while((y= lineInfo.mid( i, 1 ))!=":")
{
i++;
}
y=lineInfo.mid( i-2, 8 );
if(mk==1)
{
RevRTC1=y;
qtext->setPlainText(str+"\n"+y+" ");
}
else if(mk==2)
{
RevRTC2=y;
qtext->setPlainText(str+y+" ");
}
else if(mk==3)
{
RevRTC3=y;
qtext->setPlainText(str+y);
}
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_STR()
{
// fdStr=::open("/sdcard/1234",O_CREAT | O_TRUNC | O_WRONLY,S_IWRITE);
//fdStr=::open("/etc/init.d/rcS",O_RDWR);
fdStr = ::open("/dev/mmcblk0", O_RDWR|O_NONBLOCK);
QString str = qtext->toPlainText();
if(fdStr==-1)
{
qtext->setPlainText(str+"\n"+QObject::tr("瀛樺偍澶辫触 "));
// PushButtonStorage->setStyleSheet("background-color:#FF0000");
}
else
{
qtext->setPlainText(str+"\n"+QObject::tr("瀛樺偍姝e父 "));
PushButtonStorage->setEnabled(false);
// PushButtonStorage->setStyleSheet("background-color:#00FF00");
::close(fdStr);
}
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_RES()
{
if(svs)
{
timer->start(1000);
svs=false;
PushButtonResverd->setText(QObject::tr("鍋滄"));
//QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n");
// qtext->moveCursor(QTextCursor::End);
}
else
{
timer->stop();
PushButtonResverd->setText(QObject::tr("棰勭暀"));
svs=true;
// QString str = qtext->toPlainText();
//qtext->setPlainText(str);
// qtext->moveCursor(QTextCursor::End);
}
}
int mx=0;
void MainWindow::timeEvent()
{
t=0,q=0;
for(n=3;(1/n)>(1e-6);n+=4)
{
t+=(-1)*(1/n);
}
for(m=1;(1/m)>(1e-6);m+=4)
{
q+=(1/m);
}
QString s = QString("%10.8f ").arg((t+q)*4);
QString str = qtext->toPlainText();
if((mx++%2)==0)
qtext->setPlainText(str+QObject::tr("\n璁$畻蟺鍊?)+s);
else
qtext->setPlainText(str+QObject::tr("璁$畻蟺鍊?)+s);
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::timeEvent1()
{
QString str = qtext->toPlainText();
mk+=1;
m_cmdhw->start("hwclock");
if(mk==4)
{//QMessageBox::information(this,tr("info"),\
// RevRTC1+RevRTC2+RevRTC3);
timer1->stop();
//mk=0;
if((QString::localeAwareCompare\
(RevRTC1,RevRTC2)!=0)&&(QString::\
localeAwareCompare(RevRTC2,RevRTC3)!=0)&&\
(QString::localeAwareCompare(RevRTC1,\
RevRTC3)!=0))
{
PushButtonRTC->setEnabled(false);
qtext->setPlainText(str+"\n"+QObject::tr("RTC姝e父"));
}
else
{
qtext->setPlainText(str+"\n"+QObject::tr("RTC澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::timeEvent2()
{
char ret[2];
if (keys_fd <= 0)
{
printf ("open /dev/input/event0 device error!\n");
}
if (read (keys_fd, &t1, sizeof (t1)) == sizeof (t1))
{
if (t1.type == EV_KEY) {
if (t1.value == 1)
{
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
switch (t1.code)
{
case 103:
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
PushButtonInKey->setEnabled(false);
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
break;
case 108:
PushButtonOutKey->setEnabled(false);break;
case 1:
PushButtonTestKey->setEnabled(false);break;
case 28:
PushButtonPrintKey->setEnabled(false);break;
}
}
}
}
}
void MainWindow::qt_IN()
{
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+QObject::tr("鍗″嚭鎸夐敭姝e父"));
qtext->moveCursor(QTextCursor::End);
PushButtonInKey->setEnabled(false);
// PushButtonInKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_OUT()
{
int keys_fd;
char ret[2];
int i;
struct input_event t;
keys_fd = open ("/dev/input/event0", O_RDONLY);
if (keys_fd <= 0)
{
printf ("open /dev/input/event2 device error!\n");
//return 0;
}
while (1)
{
if (read (keys_fd, &t, sizeof(t)))// == sizeof (struct input_event))
{
if (t.type == EV_KEY) {
if ( t.value == 1)
{
//printf ("%d key %d %s\n",i, t.code,
// (t.value) ? "Pressed" : "Released");
// if(t.code==KEY_ESC)
// break;
}
}
}
printf ("key \n");
usleep(200*1000);
}
//close(keys_fd);
// QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("鍗″叆鎸夐敭姝e父"));
// qtext->moveCursor(QTextCursor::End);
// PushButtonOutKey->setEnabled(false);
// PushButtonOutKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_TEST()
{
//QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("娴嬭瘯鎸夐敭姝e父"));
// qtext->moveCursor(QTextCursor::End);
// PushButtonTestKey->setEnabled(false);
//PushButtonTestKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_Print()
{
QString t,t1,y ;
t="inet addr:";
t1="Bcast:";
int m;
// lineInfo = "";
// lineEdt->clear();
// lineEdt->insert("now start eth0 test");
while (i_sysinfo->canReadLine()) {
//int i = i_sysinfo->canReadLineStdout();
//printf("read state is %d\n",i);
lineInfo += i_sysinfo->readAllStandardOutput();
}
if(lineInfo == NULL) {
lineInfo = "no data" ;
}
while((y= lineInfo.mid( i, 10 ))!=0)
{
if(y.localeAwareCompare(t)==0)
{
m=i;
}
i++;
}
i=0;
while((y= lineInfo.mid( i, 6 ))!=0)
{
if(y.localeAwareCompare(t1)==0)
{
t = lineInfo.mid( m+10, i-m-10 );
}
i++;
}
//printf("start print the info\n");
//QMessageBox::information(this,tr("info"),tr(lineInfo));
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+QObject::tr("鍒嗛厤IP鍦板潃:")+t+QObject::tr(" 缃戠粶娴嬭瘯鎴愬姛"));
qtext->moveCursor(QTextCursor::End);
NetWork->setEnabled(false);
// NetWork->setStyleSheet("background-color:#00FF00");
}
#include "ui_mainwindow.h"
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <qlabel.h>
#include <QLineEdit>
#include<QMessageBox>
#include <linux/fb.h>
#include <sys/mman.h>
#include <malloc.h>
#include <termios.h>
//#include <QtCore/qstring.h>
#include <qstring.h>
#include <QtGui>
#include <form.h>
#include "mythread.h"
#include "linux/input.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
fd1=-1;
fd2=-1;
fd3=-1;
fd4=-1;
mk=0;
svs=true;
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
QTextCodec::setCodecForTr(QTextCodec::codecForName("utf8"));
QFont font("wenquanyi",16,QFont::Bold); //浣跨敤wenquanyi瀛椾綋
this->setFont(font);
setWindowTitle(QObject::tr("鏂亾鏍稿績鏉挎祴璇曠郴缁?));
::system("hwclock -w");
showbutton();
}
MainWindow::~MainWindow()
{
delete ui;
}
struct fb_dev
{
//for frame buffer
int fb;
void *fb_mem; //frame buffer mmap
int fb_width, fb_height, fb_line_len, fb_size;
int fb_bpp;
} fbdev;
void MainWindow::fb_stat(int fd)
{
struct fb_fix_screeninfo fb_finfo;
struct fb_var_screeninfo fb_vinfo;
if (ioctl(fd, FBIOGET_FSCREENINFO, &fb_finfo))
{
//perror(__func__);
//return (-1);
}
if (ioctl(fd, FBIOGET_VSCREENINFO, &fb_vinfo))
{
//perror(__func__);
//return (-1);
}
fbdev.fb_width = fb_vinfo.xres;
fbdev.fb_height = fb_vinfo.yres;
fbdev.fb_bpp = fb_vinfo.bits_per_pixel;
fbdev.fb_line_len = fb_finfo.line_length;
fbdev.fb_size = fb_finfo.smem_len;
//return (0);
}
void MainWindow::showbutton()
{
int x,y;
int i=0;
QLabel *lbl = new QLabel(this);
QFont lbl_font;
qtext = new QTextEdit(this);
x=800;
y=480;
// QLineEdit *LineTxt=new QLineEdit(this);
PushButtonDisp=new QPushButton(this);
PushButtonDisp->setText(QObject::tr("鏄剧ず"));
PushButtonDisp->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonDisp->show();
connect(PushButtonDisp,SIGNAL(clicked()),this,SLOT(qt_Disp()));
PushButtonTouch=new QPushButton(this);
PushButtonTouch->setText(QObject::tr("瑙︽懜"));
PushButtonTouch->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonTouch->show();
connect(PushButtonTouch,SIGNAL(clicked()),this,SLOT(qt_Touch()));
PushButtonCOM1=new QPushButton(this);
PushButtonCOM1->setText(QObject::tr("涓插彛1"));
PushButtonCOM1->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonCOM1->show();
connect(PushButtonCOM1,SIGNAL(clicked()),this,SLOT(qt_COM1()));
PushButtonCOM2=new QPushButton(this);
PushButtonCOM2->setText(QObject::tr("涓插彛2"));
PushButtonCOM2->setGeometry(QRect(QPoint(40+(i++)*190, 20),
QSize(150, 70)));
PushButtonCOM2->show();
connect(PushButtonCOM2,SIGNAL(clicked()),this,SLOT(qt_COM2()));
PushButtonCOM3=new QPushButton(this);
PushButtonCOM3->setText(QObject::tr("涓插彛3"));
PushButtonCOM3->setGeometry(QRect(QPoint(40+(i-2)*190, 40+70),
QSize(150, 70)));
PushButtonCOM3->show();
connect(PushButtonCOM3,SIGNAL(clicked()),this,SLOT(qt_COM3()));
PushButtonCOM4=new QPushButton(this);
PushButtonCOM4->setText(QObject::tr("涓插彛4"));
PushButtonCOM4->setGeometry(QRect(QPoint(40+(i-1)*190, 40+70),
QSize(150, 70)));
PushButtonCOM4->show();
connect(PushButtonCOM4,SIGNAL(clicked()),this,SLOT(qt_COM4()));
PushButtonUSB=new QPushButton(this);
PushButtonUSB->setText("USB");
PushButtonUSB->setGeometry(QRect(QPoint(40+(i-4)*190, 40+70),
QSize(150, 70)));
PushButtonUSB->show();
connect(PushButtonUSB,SIGNAL(clicked()),this,SLOT(qt_USB()));
NetWork=new QPushButton(this);
NetWork->setText(QObject::tr("缃戝崱"));
NetWork->setGeometry(QRect(QPoint(40+(i-3)*190, 40+70),
QSize(150, 70)));
NetWork->show();
connect(NetWork,SIGNAL(clicked()),this,SLOT(qt_NetWork()));
PushButtonKey=new QPushButton(this);
PushButtonKey->setText(QObject::tr("鎸夐敭"));
PushButtonKey->setGeometry(QRect(QPoint(40+(i-4)*190, 60+140),
QSize(150, 70)));
PushButtonKey->show();
connect(PushButtonKey,SIGNAL(clicked()),this,SLOT(qt_KEY()));
PushButtonRTC=new QPushButton(this);
PushButtonRTC->setText("RTC");
PushButtonRTC->setGeometry(QRect(QPoint(40+(i-3)*190, 60+140),
QSize(150, 70)));
PushButtonRTC->show();
connect(PushButtonRTC,SIGNAL(clicked()),this,SLOT(qt_RTC()));
PushButtonStorage=new QPushButton(this);
PushButtonStorage->setText(QObject::tr("瀛樺偍鍗?));
PushButtonStorage->setGeometry(QRect(QPoint(40+(i-2)*190,60+140),
QSize(150, 70)));
PushButtonStorage->show();
connect(PushButtonStorage,SIGNAL(clicked()),this,SLOT(qt_STR()));
PushButtonResverd=new QPushButton(this);
PushButtonResverd->setText(QObject::tr("棰勭暀"));
PushButtonResverd->setGeometry(QRect(QPoint(40+(i-1)*190, 60+140),
QSize(150, 70)));
PushButtonResverd->show();
connect(PushButtonResverd,SIGNAL(clicked()),this,SLOT(qt_RES()));
lbl_font.setPointSize(16); //璁剧疆瀛椾綋澶у皬
lbl->setFont(lbl_font);
lbl->setText(QObject::tr("鎻愮ず淇℃伅"));
lbl->setGeometry(QRect(QPoint(40+(i-4)*190+40, 60+210),
QSize(150, 70)));
qtext->setGeometry(QRect(QPoint(40+(i-3)*190, 80+210),
QSize(520, 40)));
qtext->setReadOnly(true);
PushButtonInKey=new QPushButton(this);
PushButtonInKey->setText(QObject::tr("鍗″叆鎸夐敭"));
PushButtonInKey->setGeometry(QRect(QPoint(40+(i-4)*190, 80+280),
QSize(150, 70)));
PushButtonInKey->show();
// connect(PushButtonInKey,SIGNAL(clicked()),this,SLOT(qt_IN()));
PushButtonOutKey=new QPushButton(this);
PushButtonOutKey->setText(QObject::tr("鍗″嚭鎸夐敭"));
PushButtonOutKey->setGeometry(QRect(QPoint(40+(i-3)*190, 80+280),
QSize(150, 70)));
PushButtonOutKey->show();
// connect(PushButtonOutKey,SIGNAL(clicked()),this,SLOT(qt_OUT()));
PushButtonTestKey=new QPushButton(this);
PushButtonTestKey->setText(QObject::tr("娴嬭瘯鎸夐敭"));
PushButtonTestKey->setGeometry(QRect(QPoint(40+(i-2)*190, 80+280),
QSize(150, 70)));
PushButtonTestKey->show();
// connect(PushButtonTestKey,SIGNAL(clicked()),this,SLOT(qt_TEST()));
PushButtonPrintKey=new QPushButton(this);
PushButtonPrintKey->setText(QObject::tr("鎵撳嵃鎸夐敭"));
PushButtonPrintKey->setGeometry(QRect(QPoint(40+(i-1)*190,80+280),
QSize(150, 70)));
PushButtonPrintKey->show();
// connect(PushButtonPrintKey,SIGNAL(clicked()),this,SLOT(qt_Print()));
i_sysinfo = new QProcess(this);
connect(i_sysinfo, SIGNAL(readyReadStandardOutput()), this, SLOT(qt_Print()));
timer = new QTimer(this);
sign=1;
connect(timer,SIGNAL(timeout()),this,SLOT(timeEvent()));
timer1 = new QTimer(this);
connect(timer1,SIGNAL(timeout()),this,SLOT(timeEvent1()));
//MyThread myth;
//connect(&myth,SIGNAL(started()),&myth,SLOT(print_hwc()));
//myth.start();
m_cmdhw = new QProcess (this);
connect(m_cmdhw, SIGNAL(readyReadStandardOutput()), this, SLOT(print_hwc()));
}
void MainWindow::qt_Disp()
{
// QString *text1="Display Ok";
int fb;
long i;
unsigned char *buffer;
if ((fb = open("/dev/fb0", O_RDWR)) < 0) //闁瑰灚鎸哥槐鎴﹀及閹冨耿閻犱焦鍎抽ˇ?
{
//perror(__func__);
//return (-1);
}
fb_stat(fb);
fbdev.fb_mem = mmap (NULL, fbdev.fb_size, PROT_READ|PROT_WRITE,MAP_SHARED,fb,0);
//闁哄嫮濮撮惃鐘诲及閹呮憼闁革附婢樺? fbdev.fb = fb;
buffer = (unsigned char *) malloc(800*480*4);
for(i=0;i<800*480*4;)
{
buffer[i++]=0;
buffer[i++]=0;
buffer[i++]=255;
buffer[i++]=0;
}
// memset(buffer,0xff0000,800*480*2);
memcpy((unsigned char *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
for(i=0;i<800*480*4;)
{
buffer[i++]=0;
buffer[i++]=255;
buffer[i++]=0;
buffer[i++]=0;
}
// memset(buffer,0x00,800*480*2);
memcpy((unsigned int *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
// memset(buffer,0x0,800*480*2);
for(i=0;i<800*480*4;)
{
buffer[i++]=0xff;
buffer[i++]=0xff;
buffer[i++]=255;
buffer[i++]=0;
}
memcpy((unsigned char *)fbdev.fb_mem,buffer,800*480*4);
usleep(1000*1000);
update();
Form *form;
form = new Form();
form->show();
form->close();
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n鏄剧ず姝e父"));
qtext->moveCursor(QTextCursor::End);
PushButtonDisp->setEnabled(false);
//PushButtonDisp->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_Touch()
{
::system("ts_calibrate");
PushButtonTouch->setEnabled(false);
// PushButtonTouch->setStyleSheet("background-color:#00FF00");
}
bool MainWindow::open_serial(int x)
{
switch(x) {
case 0:
fd1 = ::open("/dev/ttySAC0", O_RDWR|O_NONBLOCK);
// QMessageBox::warning(this, tr("warning"), tr("the com0 used on debug,if you want to use it,please modify the source code!"));
// return false;
break;
case 1:
fd2 = ::open("/dev/ttySAC1", O_RDWR|O_NONBLOCK);
break;
case 2:
fd3 = ::open("/dev/ttySAC2", O_RDWR|O_NONBLOCK);
break;
case 3:
fd4 = ::open("/dev/ttySAC3", O_RDWR|O_NONBLOCK);
break;
default:
QMessageBox::warning(this, tr("Error"), tr("Fail to open serial port!"));
break;
}
QString str = qtext->toPlainText();
switch(x) {
case 0:
if(fd1 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛1鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr1;
memset(&serialAttr1, 0, sizeof serialAttr1);
serialAttr1.c_iflag = IGNPAR;
serialAttr1.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr1.c_cc[VMIN] = 1;
if (tcsetattr(fd1, TCSANOW, &serialAttr1) != 0) {
qtext->setPlainText(str+QObject::tr("\n涓插彛1鎵撳紑澶辫触"));
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port1 ok!"));
m_notifier1 = new QSocketNotifier(fd1, QSocketNotifier::Read, this);
connect (m_notifier1, SIGNAL(activated(int)), this, SLOT(revdata1()));
}
break;
case 1:
if(fd2 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛2鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr2;
memset(&serialAttr2, 0, sizeof serialAttr2);
serialAttr2.c_iflag = IGNPAR;
serialAttr2.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr2.c_cc[VMIN] = 1;
if (tcsetattr(fd2, TCSANOW, &serialAttr2) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port2 ok!"));
m_notifier2 = new QSocketNotifier(fd2, QSocketNotifier::Read, this);
connect (m_notifier2, SIGNAL(activated(int)), this, SLOT(revdata2()));
break;
}
case 2:
if(fd3 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛3鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr3;
memset(&serialAttr3, 0, sizeof serialAttr3);
serialAttr3.c_iflag = IGNPAR;
serialAttr3.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr3.c_cc[VMIN] = 1;
if (tcsetattr(fd3, TCSANOW, &serialAttr3) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port3 ok!"));
m_notifier3 = new QSocketNotifier(fd3, QSocketNotifier::Read, this);
connect (m_notifier3, SIGNAL(activated(int)), this, SLOT(revdata3()));
break;
}
case 3:
if(fd4 < 0)
{
qtext->setPlainText(str+QObject::tr("\n涓插彛4鎵撳紑澶辫触"));
break;
}
else
{
termios serialAttr4;
memset(&serialAttr4, 0, sizeof serialAttr4);
serialAttr4.c_iflag = IGNPAR;
serialAttr4.c_cflag = B115200 | HUPCL | CS8 | CREAD | CLOCAL;
serialAttr4.c_cc[VMIN] = 1;
if (tcsetattr(fd4, TCSANOW, &serialAttr4) != 0) {
QMessageBox::warning(this, tr("Error"), tr("set the port parameter failed!"));
return false;
}
// QMessageBox::warning(this, tr("gzsd"), tr("open serial port4 ok!"));
m_notifier4 = new QSocketNotifier(fd4, QSocketNotifier::Read, this);
connect (m_notifier4, SIGNAL(activated(int)), this, SLOT(revdata4()));
break;
}
}
return true;
}
void MainWindow::close_serial()
{
if (m_notifier) {
delete m_notifier;
m_notifier = 0;
}
if (fd1 >= 0) {
::close(fd1);
fd1 = -1;
}
QMessageBox::warning(this, tr("gzsd"), tr("close serial port ok!"));
}
void MainWindow::send_data(int i)
{
QString sendata="a1 b2 c3 d4";
switch(i)
{
case 1:
::write(fd1, sendata.toLatin1(), sendata.length());
break;
case 2:
::write(fd2,sendata.toLatin1(), sendata.length());
break;
case 3:
::write(fd3,sendata.toLatin1(), sendata.length());
break;
case 4:
::write(fd4, sendata.toLatin1(), sendata.length());
break;
}
}
void MainWindow::empty_rev()
{
}
int i=0;
void MainWindow::revdata1()
{
if(fd1 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd1, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM1->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata2()
{
if(fd2 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd2, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM2->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata3()
{
if(fd3 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd3, &c, sizeof c) < 0)
{
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
PushButtonCOM3->setEnabled(false);
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::revdata4()
{
if(fd4 < 0){
QMessageBox::warning(this, tr("gzsd"), tr("device not open!"));
return;
}
char c;
if (read(fd4, &c, sizeof c) < 0) {
QMessageBox::warning(this, tr("Error"), tr("Receive error!"));
return;
}
RevData+=QString(QChar(c));
if(c=='4')
{
QString str = qtext->toPlainText();
if(QString::localeAwareCompare(RevData,"a1 b2 c3 d4")==0)
{
PushButtonCOM4->setEnabled(false);
qtext->setPlainText(str+RevData+QObject::tr("鎴愬姛"));
}
else
{
qtext->setPlainText(str+RevData+QObject::tr("澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::qt_COM1()
{
if(fd1<0)
open_serial(0) ;
send_data(1) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("涓插彛1 \rtest "));
qtext->moveCursor(QTextCursor::End);
// qtext->toPlainText();// ("COM1 \rtest ");
}
void MainWindow::qt_COM2()
{
if(fd2<0)
open_serial(1) ;
send_data(2) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛2 \rtest "));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_COM3()
{
if(fd3<0)
open_serial(2) ;
RevData="";
send_data(3) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛3 \rtest " ));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_COM4()
{
if(fd4<0)
open_serial(3) ;
send_data(4) ;
QString str = qtext->toPlainText();
qtext->setPlainText(str+QObject::tr("\n涓插彛4 \rtest " ));
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_USB()
{
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\nUSB OK");
qtext->moveCursor(QTextCursor::End);
PushButtonUSB->setEnabled(false);
// PushButtonUSB->setStyleSheet("background-color:#00FF00");
}
void MainWindow::result_info()
{
}
void MainWindow::qt_NetWork()
{
::system("ifconfig eth0 up");
::system("udhcpc -i eth0");
i_sysinfo->start("ifconfig eth0");
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+"please waiting ");
qtext->moveCursor(QTextCursor::End);
// lineEdt->insert("eth0 set parameter end\n");
}
void MainWindow::qt_KEY()
{
keys_fd = open ("/dev/input/event0", O_RDONLY);
m_notifierrtc = new QSocketNotifier(keys_fd, QSocketNotifier::Read, this);
connect (m_notifierrtc, SIGNAL(activated(int)), this, SLOT(timeEvent2()));
// timer2 = new QTimer(this);
// connect(timer2,SIGNAL(read()),this,SLOT(timeEvent2()));
//timer2->start(200);
//close(keys_fd);
// QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("鎸夐敭姝e父 "));
// qtext->moveCursor(QTextCursor::End);
PushButtonKey->setEnabled(false);
// PushButtonKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_RTC()
{
// ::system("hwclock -s");
timer1->start(1000);
// print_hwc();
// usleep(1000*1000);
// m_cmdhw->start("hwclock");
// print_hwc();
// usleep(1000*1000);
// m_cmdhw->start("hwclock");
// QString str = qtext->toPlainText();
// qtext->setPlainText("qt_RTC OK\n");
// qtext->moveCursor(QTextCursor::End);
}
void MainWindow::print_hwc()
{
int i=0;
lineInfo="";
while (m_cmdhw->canReadLine())
{
lineInfo += m_cmdhw->readAllStandardOutput();
}
if(lineInfo == NULL)
{
lineInfo = "no data" ;
}
QString str = qtext->toPlainText();
while((y= lineInfo.mid( i, 1 ))!=":")
{
i++;
}
y=lineInfo.mid( i-2, 8 );
if(mk==1)
{
RevRTC1=y;
qtext->setPlainText(str+"\n"+y+" ");
}
else if(mk==2)
{
RevRTC2=y;
qtext->setPlainText(str+y+" ");
}
else if(mk==3)
{
RevRTC3=y;
qtext->setPlainText(str+y);
}
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_STR()
{
// fdStr=::open("/sdcard/1234",O_CREAT | O_TRUNC | O_WRONLY,S_IWRITE);
//fdStr=::open("/etc/init.d/rcS",O_RDWR);
fdStr = ::open("/dev/mmcblk0", O_RDWR|O_NONBLOCK);
QString str = qtext->toPlainText();
if(fdStr==-1)
{
qtext->setPlainText(str+"\n"+QObject::tr("瀛樺偍澶辫触 "));
// PushButtonStorage->setStyleSheet("background-color:#FF0000");
}
else
{
qtext->setPlainText(str+"\n"+QObject::tr("瀛樺偍姝e父 "));
PushButtonStorage->setEnabled(false);
// PushButtonStorage->setStyleSheet("background-color:#00FF00");
::close(fdStr);
}
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::qt_RES()
{
if(svs)
{
timer->start(1000);
svs=false;
PushButtonResverd->setText(QObject::tr("鍋滄"));
//QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n");
// qtext->moveCursor(QTextCursor::End);
}
else
{
timer->stop();
PushButtonResverd->setText(QObject::tr("棰勭暀"));
svs=true;
// QString str = qtext->toPlainText();
//qtext->setPlainText(str);
// qtext->moveCursor(QTextCursor::End);
}
}
int mx=0;
void MainWindow::timeEvent()
{
t=0,q=0;
for(n=3;(1/n)>(1e-6);n+=4)
{
t+=(-1)*(1/n);
}
for(m=1;(1/m)>(1e-6);m+=4)
{
q+=(1/m);
}
QString s = QString("%10.8f ").arg((t+q)*4);
QString str = qtext->toPlainText();
if((mx++%2)==0)
qtext->setPlainText(str+QObject::tr("\n璁$畻蟺鍊?)+s);
else
qtext->setPlainText(str+QObject::tr("璁$畻蟺鍊?)+s);
qtext->moveCursor(QTextCursor::End);
}
void MainWindow::timeEvent1()
{
QString str = qtext->toPlainText();
mk+=1;
m_cmdhw->start("hwclock");
if(mk==4)
{//QMessageBox::information(this,tr("info"),\
// RevRTC1+RevRTC2+RevRTC3);
timer1->stop();
//mk=0;
if((QString::localeAwareCompare\
(RevRTC1,RevRTC2)!=0)&&(QString::\
localeAwareCompare(RevRTC2,RevRTC3)!=0)&&\
(QString::localeAwareCompare(RevRTC1,\
RevRTC3)!=0))
{
PushButtonRTC->setEnabled(false);
qtext->setPlainText(str+"\n"+QObject::tr("RTC姝e父"));
}
else
{
qtext->setPlainText(str+"\n"+QObject::tr("RTC澶辫触"));
}
qtext->moveCursor(QTextCursor::End);
}
}
void MainWindow::timeEvent2()
{
char ret[2];
if (keys_fd <= 0)
{
printf ("open /dev/input/event0 device error!\n");
}
if (read (keys_fd, &t1, sizeof (t1)) == sizeof (t1))
{
if (t1.type == EV_KEY) {
if (t1.value == 1)
{
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
switch (t1.code)
{
case 103:
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
PushButtonInKey->setEnabled(false);
// printf ("%d key %d %s\n", t1.type,t1.code,
// (t1.value) ? "Pressed" : "Released");
break;
case 108:
PushButtonOutKey->setEnabled(false);break;
case 1:
PushButtonTestKey->setEnabled(false);break;
case 28:
PushButtonPrintKey->setEnabled(false);break;
}
}
}
}
}
void MainWindow::qt_IN()
{
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+QObject::tr("鍗″嚭鎸夐敭姝e父"));
qtext->moveCursor(QTextCursor::End);
PushButtonInKey->setEnabled(false);
// PushButtonInKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_OUT()
{
int keys_fd;
char ret[2];
int i;
struct input_event t;
keys_fd = open ("/dev/input/event0", O_RDONLY);
if (keys_fd <= 0)
{
printf ("open /dev/input/event2 device error!\n");
//return 0;
}
while (1)
{
if (read (keys_fd, &t, sizeof(t)))// == sizeof (struct input_event))
{
if (t.type == EV_KEY) {
if ( t.value == 1)
{
//printf ("%d key %d %s\n",i, t.code,
// (t.value) ? "Pressed" : "Released");
// if(t.code==KEY_ESC)
// break;
}
}
}
printf ("key \n");
usleep(200*1000);
}
//close(keys_fd);
// QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("鍗″叆鎸夐敭姝e父"));
// qtext->moveCursor(QTextCursor::End);
// PushButtonOutKey->setEnabled(false);
// PushButtonOutKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_TEST()
{
//QString str = qtext->toPlainText();
// qtext->setPlainText(str+"\n"+QObject::tr("娴嬭瘯鎸夐敭姝e父"));
// qtext->moveCursor(QTextCursor::End);
// PushButtonTestKey->setEnabled(false);
//PushButtonTestKey->setStyleSheet("background-color:#00FF00");
}
void MainWindow::qt_Print()
{
QString t,t1,y ;
t="inet addr:";
t1="Bcast:";
int m;
// lineInfo = "";
// lineEdt->clear();
// lineEdt->insert("now start eth0 test");
while (i_sysinfo->canReadLine()) {
//int i = i_sysinfo->canReadLineStdout();
//printf("read state is %d\n",i);
lineInfo += i_sysinfo->readAllStandardOutput();
}
if(lineInfo == NULL) {
lineInfo = "no data" ;
}
while((y= lineInfo.mid( i, 10 ))!=0)
{
if(y.localeAwareCompare(t)==0)
{
m=i;
}
i++;
}
i=0;
while((y= lineInfo.mid( i, 6 ))!=0)
{
if(y.localeAwareCompare(t1)==0)
{
t = lineInfo.mid( m+10, i-m-10 );
}
i++;
}
//printf("start print the info\n");
//QMessageBox::information(this,tr("info"),tr(lineInfo));
QString str = qtext->toPlainText();
qtext->setPlainText(str+"\n"+QObject::tr("鍒嗛厤IP鍦板潃:")+t+QObject::tr(" 缃戠粶娴嬭瘯鎴愬姛"));
qtext->moveCursor(QTextCursor::End);
NetWork->setEnabled(false);
// NetWork->setStyleSheet("background-color:#00FF00");
}