Qt/Embedded & Qtopia. 목 차목 차 1.Embedded Linux GUI Toolkit 2.Qt/Embedded 3.Qtopia 4.Virtual Frame Buffer 5. 개발환경 및 과정 6.Qt/E Application Hello World program.

Slides:



Advertisements
Similar presentations
CI(Continuous Integration) 이학성. C ontinuous I ntegration? 2 지속적으로 품질관리 를 적용하는 과정 개발자가 기존 코드의 수정 작업 을 시작할 때, 코드 베이스의복사본을 받아서 작업을 시작하면서 코드의 변경.
Advertisements

KUMHO SOFTWARE DEVELOPMENT 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램 2.4 자바 응용 프로그램 2.5 자바 애플릿 프로그램 2. 자바 환경과 자바 프로그램.
스마트폰 화면에서 안드로이드 마켓을 클릭하여 접속합니다. [그림 1-1] 안드로이드 전용 어플리케이션 설치 방법 1. 굿바이 학교폭력 Mobile App 설치 안드로이드폰 설치 방법 마켓에서 검색 아이콘을 클릭 하여 검색창을 활성화 합니다. 굿바이 학교폭력 어플명을 입력.
1 08 시스템 구성도 고려사항 * 웹 서버 클러스터 구성  클러스터 구축은 ㈜ 클루닉스의 Encluster 로 구축 (KT 인증,IT 인증 획득, 실제 클러스터 구축 사이트 200 여곳 )  웹 서버 클러스터는 Dynamic, Static, Image.
.Net History. Visual Studio.Net 2002 /.Net Framework 1.0 제품의 버전 / 특징 2002 년 - Visual Studio.Net 2002 /.Net Framework 1.0 첫 통합 개발 환경 - C# 언어 등장 (C# 1.0)
Embedded System Lab. II GUI Programming in Embedded Linux 경희대학교 컴퓨터공학과 조 진 성.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
Qt/Embedded & Qtopia Qt/Embedded & Qtopia 안양대학교 전기전자공학과 서 삼 준.
컴퓨터 운영체제의 역사 손용범.
QT/Embedded와 웹 서버 Qt/Embedded 개요 Qt/Embedded 개발 환경 구축
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
Efl을 이용한 타이젠 네이티브 웨어러블 앱 만들기
Security Solutions (S/W) - Fortify
A n d r o i d Android 2010년 5월 19일 동서대학교 백선재
DB 프로그래밍 학기.
DB 프로그래밍 학기.
1. 개발 시스템 개요.
GTK 프로그래밍 ( 1 ) SNSLAB 발표 : 문동규.
2. 앱 개발환경 구축 Step by Step 안드로이드 프로그래밍 쉽게 시작하는 안드로이드 4.4 앱 개발.
자바 언어의 이해 Understanding of Java Programming
CHAP 19. 구글맵.
<<< 시스템등록정보 “하드웨어-장치관리자” 설정 >>>
Image & Video processing
Power Java 제3장 이클립스 사용하기.
Cross Compiler를이용한 커널 컴파일 및 포팅
Linux를 이용한 Embedded 장비 개발
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
QT 프로그래밍 발표: 김래영.
UNIT 06 JTAG Debugger 로봇 SW 교육원 조용수.
운영체제 박상민.
Double O to the I to the A+ 문무활, 유용승, 홍민정
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
GUI Programming - Part 2 ( GUI for Python - wxPython )
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
TETRIS FOR QTOPIA.
PROJECT DIGITAL FRAME 홍민우 이욱중 이승연.
Visual Basic .NET 처음 사용하기.
FTP 프로그램 채계화 박재은 박수민.
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
WinCE Device Driver 실습 #2
ARM Development Suite v1.2
Cross Compiler 설치.
임베디드 SW 시스템 소개 - 임베디드 운영체제 - 임베디드 리눅스 - 임베디드 인터넷
Cross Compiler를이용한 커널 컴파일 및 포팅
AVR – ATmega103(ATMEL) Compilers & ISP
김인수 , 김성중 , 김동권 , 김재흠 , 김성태 발표일 : 발표자 : 김인수
CHAP 13. 방명록 만들기 실습.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
SAS Statistical Analysis System 통계패키지 실습 (2011년 1학기)
Smart Workplace 개발자 가이드
제목소개 1. 안드로이드소개 2. 패킷캡쳐를 위한 환경 소개 3. ndk 소개 4. lipcap 5. 6.도식화 그림
임베디드 시스템 개론 임베디드 타겟 보드 포팅 및 H/W 제어 3일차 강의 자료 Embedded System Lab.
Xscale Educational Kit
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
OS 역사 손병규.
Tiny OS와 NesC Tiny OS Part1. Won Mi Sun – 17 지능제어 연구실.
[그림 1-1] 안드로이드 전용 어플리케이션 설치 방법
Lab 8 Guide: 멀티스레딩 예제 2 * Critical Section을 이용한 멀티스레딩 동기화 (교재 15장, 쪽)
LabVIEW WiznTec 주임 박명대 1.
기말 프로젝트 계획 MVC 패턴 기반 웹 애플리케이션 개발 프로젝트명 : 팀명 : 팀원 :
리눅스 커널 프로그래밍 환경 구축 IT EXPERT 리눅스 커널 프로그래밍 Author : Byungki Kim
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
DK-128 개발환경 설정 아이티즌 기술연구소
컴퓨터 소프트웨어 설계 및 실험 년 1학기 실험계획 -.
05. General Linear List – Homework
IPC 펌웨어 업그레이드 방법 안내 ** 반드시 IPC를 NVR POE 포트 연결 전에 작업 하시기 바랍니다. IPC를 NVR POE 포트에 연결 하실 경우 IP 대역폭을 마추셔야 하는 작업이 필요합니다. **
Platform Builder 사용법.
펌웨어(S/W) Upgrade 방법 Samsung Kies3
Presentation transcript:

Qt/Embedded & Qtopia

목 차목 차 1.Embedded Linux GUI Toolkit 2.Qt/Embedded 3.Qtopia 4.Virtual Frame Buffer 5. 개발환경 및 과정 6.Qt/E Application Hello World program Signal & Slot Program Animation Clock Address Book Qtopia Program

Embedded Linux GUI Toolkit Microwindows – 소형 임베디드 기기에 탑재할 목적으로 시작된 프로젝트로, 현대 적인 그래픽 윈도우 환경 제공 OpenGUI – 오픈 프로젝트로 진행되고 있으며, x86 어셈블리 커널에 GUI 를 내 장한 형태 갖춤 –2D 형태의 화면을 제공하고 있으며, 이벤트 구동 방식의 윈도우 프 로그래밍 환경 및 쉬운 어플리케이션 개발 환경을 가짐 Tiny-X –X-window 시스템을 임베디드 시스템에 맞게 소형화시킨 버전 Qt/Embedded

Embedded Linux GUI Toolkit Microwindows OpenGUI

Qt/Embedded 노르웨이의 Trolltech 사에서 개발한 리눅스 기반의 Qt 라 이브러리로서 C++ 로 제작된 Embedded GUI Toolkit 편리한 포팅과 다양한 GUI 기능을 제공 최근 Qt/E 버전은 beta1 까지 제공되고 있으며, 적용 버전은 버전 사용 X- 윈도우 없이 리눅스 커널에서 제공하는 프레임 버퍼를 이용하여 그래픽 장치에 접근하는 방식

Qt/Embedded 특징 – 여러 플랫폼간 소스 코드 호환 – 풍부한 API 및 안정성 –16bits Unicode 지원 –PreRendering Font 사용 : QPF –Qt Designer 등의 유용한 Tool 지원

Qtopia Qt/Embedded 기반으로 만들어진 Window Manager(WM) 로서 콘솔 상에서 실행하는 Qt/E 어플리케이션을 MS- windows 처럼 윈도우 상의 아이콘을 클릭하여 실행할 수 있는 환경 제공 WM 기능뿐만 아니라 Qt/E 기반으로 된 여러 가지 어플리 케이션을포함하고 있으므로 Qtopia 를 타겟보드에 포팅하 여 PDA 를 위한 WM 기능 구현 Qtopia 에 제공되는 어플리케이션 –Address Book, Calculator, Calendar, City Time, Clock, File Manager, Media Player, Spreadsheet, System Info, Terminal, Text Editor, Todo List

Qt/E Source: Trolltech OS : Redhat Linux 8.0 Source –qt-x tar.gz –qt-embedded tar.gz –qpe tar.gz –tmake-1.8.tar.gz

Virtual Frame Buffer X-Window 의 부적합 : X-Window 는 X-protocol 을 이용하 여 구현된 뛰어난 화면 제어 기술과 다른 유닉스 시스템들 과의 호환성 등 많은 장점을 지녔지만, 큰 용량이므로 적은 용량을 요구하는 임베디드 시스템에 적용 어려움 X-Window 없이 커널 수준에서 직접 그래픽 카드의 비디 오 RAM 에 접근하는 방식을 사용하여 화면 제어 X-Window 화면과 프레임버퍼 Console 화면을 바꿔가면 작업하는 어려움을 피하기 위해 X-Window 상에서 프레임 버퍼를 emulation 하는 Virtual Frame Buffer 제공

Tmake Tmake : Trolltech 에서 개발한 소프트웨어 프로젝트 툴 main.cpp hello.cpp hello.h main.cpp hello.cpp hello.h hello.pro hello project file Makefile

개발환경 및 과정 Qt/X11 설치 (Virtual Frame Buffer) Qt/X11 설치 (Virtual Frame Buffer) Qt/E Library 설치 Qtopia 설치 ARM Qt/E Library 설치 ARM Qtopia 설치 GUI Application 개발 및 테스트 개발용 리눅스 PC 타겟 보드 개발환경 설정 과정 Tmake 설정 ARM Tmake 설정

Hello World Program #include Class MyWidget : public Qwidget { public: MyWidget(); void paintEvent(QPaintEvent*); }; MyWidget::MyWidget() { setCaption(“Hello World”); } Void MyWidget::paintEvent(QPaintEvent*) { Qpainter p(this); p.drawText(20, 20, “Hello World ~”); } int main(int argc, char **argv) { Qapplication app(argc, argv); MyWidget mw; app.setMainWidget($mw); mw.show(); return app.exec(); }

Signal & Slot #include class MyWidget : public Qwidget { public: MyWidget(); private: QPushButton* bt1; QPushButton* bt2; QLabel* lb1; }; MyWidget::MyWidget() { setCaption("Button Switch"); bt1 = new QPushButton("Text\nON", this); bt1->setGeometry(20, 40, 50, 40); bt2 = new QPushButton("Text\nOFF", this); bt2->setGeometry(80, 40, 50, 40); lb1 = new QLabel(this); lb1->setText("Signal & Slot Test... ~~"); lb1->setGeometry(20, 80, 120, 80); connect(bt1, SIGNAL(clicked()), lb1, SLOT(show())); connect(bt2, SIGNAL(clicked()), lb1, SLOT(hide())); } int main(int argc, char **argv) { Qapplication app(argc, argv); MyWidget mw; app.setMainWidget($mw); mw.show(); return app.exec(); }

Animation Clock image 와 Time 처리 루틴 void AniClock::paintEvent( QPaintEvent * ) { Qpainter painter(this); drawClock(); painter.drawPixmap(0, 0, *m_ppmPaint); } painter.setBrush(QColor(255,255,255)); painter.drawRect(0, 0, width(), height()); painter.drawPixmap(QPoint(0, 0), m_pmBk); QTimer *internalTimer = new QTimer( this ); internalTimer->start(1000); connect( internalTimer, SIGNAL(timeout()), SLOT(slotTimeout()) );

Address Book PDA 전용 프로그램으로 사용자가 인명당 주소, 전화번호 등 의 인적사항을 Database 로 관리 Database 설치, LCD 상에서 터치스크린으로 숫자, 영문 등 입력 기능과 데이터 관리 기능

Address Book 주요 기능의 정보흐름 구성 DB 초기화 DB 저장 기능 선택 데이터 입력창 실행 데이터 입력 및 수정 DB 목록 보여주기 입력, 수정 삭제 다이얼로그 창 실행 yes or no

Address Book DB 초기화 m_dbf = gdbm_open("address.gdbm", 2048, GDBM_WRCREAT, 00664, NULL); if (m_dbf == NULL) qDebug("gdbm_open failed, %s", gdbm_strerror(gdbm_errno)); exit(1); if (gdbm_setopt(m_dbf, GDBM_CACHESIZE, &size_cache, sizeof(int)) == -1) qDebug("gdbm_setopt failed, %s", gdbm_strerror(gdbm_errno)); exit(1); 데이터입력창 실행 InfoDlg* pInfoDlg = new InfoDlg(this, "pInfoDlg", true); result = pInfoDlg->exec(); 입력한 데이터 처리 pInfoDlg->getData(&person); dt_data.dptr = (char*)&person; dt_data.dsize = sizeof(PERSON);

Address Book DB 에 저장 if (gdbm_store(m_dbf, dt_key, dt_data, GDBM_REPLACE) != 0) qDebug(“Error.\n"); refresh(); 삭제 여부 확인 QMessageBox mb(tr("Delete"), tr("Do you want to delete?"), QMessageBox::Warning, QMessageBox::Yes, QMessageBox::No, 0, this); DB 에서 삭제 if (gdbm_delete (m_dbf, dt_key) != 0) qDebug(“Error.\n"); refresh();

Address Book

Qtopia 실행화면