Adaptive User Interface for Automotive Demonstrator

Total Page:16

File Type:pdf, Size:1020Kb

Adaptive User Interface for Automotive Demonstrator Fakult¨at fur¨ Informatik CSR-21-02 Adaptive User Interface for Automotive Demonstrator Hasan Aljzaere · Owes Khan · Wolfram Hardt Juli 2021 Chemnitzer Informatik-Berichte Adaptive User Interface for Automotive Demonstrator Master Thesis Submitted in Fulfilment of the Requirements for the Academic Degree M.Sc. Dept. of Computer Science Chair of Computer Engineering Submitted by: Hasan Aljzaere Student ID: 322205 Date: 22.12.1988 Supervising tutor: Prof. Dr. Dr. h. c. W. Hardt M. Sc. Owes Khan 1 Abstract The BlackPearl in the Computer Engineering Department is an Automotive Demonstrator, which has a variety of sensors, and users can control these via the server. The server is responsible for the remote interaction, the Smart Queue, and the Raspberry Pi display for human interaction. The Automotive Demonstrator consists of four components, which are installed on the CE-Box: Main QML Application, Main Server, Live Stream, and Smart Queue. All of these servers are running on three single-board computers (Raspberry Pi 3B): Main, BlackPearl, and Camera servers. The Automotive Demonstrator is built with the latest version from both Qt and NodeJS, and the components can access, store and exchange the data in JSON format. The BlackPearl will be controlled via four types of interaction methods: Web server, Voice commands (Sparrow), Pi Display, and Gamepad. The outcome of this thesis is a configurable and adaptive User Interface for Automotive Demonstrator, and this can be easily updated, customized, and accessible for new applications without the need to update or rebuild the program. Keywords: User Interaction, Adaptive UI, Configurable UI, Smart Queue, Raspberry Pi, Qt/QML, NodeJS 2 Zusammenfassung Der BlackPearl ist im Fachbereich Technische Informatik ein Automotive Demonstrator, der über eine Vielzahl von Sensoren verfügt, die der Benutzer über einen Server steuern kann. Der Server ist für die Ferninteraktion zuständig und die Smart Queue sowie der Raspberry Pi Display für die menschliche Interaktion. Der Automotive Demonstrator besteht aus vier Komponenten, die auf der CE-Box installiert sind: Haupt-QML-Anwendung, Hauptserver, Live-Stream und Smart Queue. Alle diese Server laufen auf drei Einplatinencomputern (Raspberry Pi 3B): Haupt-, BlackPearl- und Kamera-Server. Der Automotive Demonstrator ist mit der neuesten Version von sowohl Qt als auch NodeJS ausgestattet, und die Komponenten können auf die Daten im JSON-Format zugreifen, speichern und austauschen. Der BlackPearl wird über vier Arten von Interaktionsmethoden gesteuert: Webserver, Sprachbefehle (Sparrow), Pi-Display und Gamepad. Das Ergebnis dieser Arbeit ist eine konfigurierbare und anpassungsfähige Benutzeroberfläche für den Automotive Demonstrator, die leicht aktualisiert, angepasst und für neue Anwendungen zugänglich gemacht werden kann, ohne dass das Programm aktualisiert oder neu erstellt werden muss. Keywords: User Interaction, Adaptive UI, Configurable UI, Smart Queue, Raspberry Pi, Qt/QML, NodeJS 3 Content Abstract ....................................................................................................................... 2 Zusammenfassung ...................................................................................................... 3 Content ........................................................................................................................ 4 List of Figures .............................................................................................................. 7 List of Tables ............................................................................................................... 9 List of Code Snippets ................................................................................................ 10 List of Abbreviations .................................................................................................. 11 1 Introduction ........................................................................................................ 12 1.1 Motivation ..................................................................................................... 12 1.2 Technical Background .................................................................................. 13 1.2.1 YellowCar .............................................................................................. 13 1.2.2 BlackPearl ............................................................................................. 15 1.2.3 Qt Framework ........................................................................................ 18 1.2.4 NodeJs .................................................................................................. 20 1.2.5 CMUSphinx ........................................................................................... 23 1.2.6 GTK ....................................................................................................... 24 1.2.7 Felgo ...................................................................................................... 24 1.2.8 Kivy ........................................................................................................ 25 1.2.9 ElectronJS ............................................................................................. 26 1.2.10 Django .................................................................................................... 26 1.3 Problem Statement....................................................................................... 27 1.4 Requirements ............................................................................................... 27 1.4.1 Main requirements ................................................................................. 28 1.4.2 Current vs proposed system .................................................................. 28 1.4.3 Why Qt and NodeJS .............................................................................. 30 2 State of Art ......................................................................................................... 32 2.1 BlackPearl: Extended Automotive Multi-ECU Demonstrator Platform .......... 32 2.2 Adaptive User Interaction ............................................................................. 34 4 2.2.1 A Framework for Adaptive User Interface Generation based on User Behavioural Patterns .......................................................................................... 34 2.2.2 A RESTful Architecture for Adaptive and Multi-device Application Sharing.. ............................................................................................................. 35 2.2.3 Model-based adaptive user interface based on context and user experience evaluation ........................................................................................ 37 2.3 Speech Assistance ....................................................................................... 41 3 Concept .............................................................................................................. 43 3.1 Main Concept ............................................................................................... 43 3.2 Adaptivity and Configurability ....................................................................... 46 3.3 Smart Queue ................................................................................................ 47 3.4 User Interaction ............................................................................................ 48 3.4.1 Remote UI ............................................................................................. 48 3.4.2 BlackPearl Display ................................................................................. 49 3.4.3 Voice UI ................................................................................................. 50 3.4.4 Gamepad ............................................................................................... 51 4 Implementation ................................................................................................... 53 4.1 Main implementation .................................................................................... 53 4.2 Application Programming Interface (API) ..................................................... 54 4.3 Rules Management ...................................................................................... 56 4.4 BlackPearl Server......................................................................................... 57 4.4.1 Main Server ........................................................................................... 58 4.4.2 Web Interface ........................................................................................ 59 4.4.3 Custom App ........................................................................................... 59 4.4.4 Web Interface Settings .......................................................................... 60 4.4.5 Camera Server ...................................................................................... 62 4.5 Smart Queue ................................................................................................ 63 4.6 Application Framework ................................................................................. 65 4.7 User Interface ............................................................................................... 71 4.7.1 Remote User Interaction ........................................................................ 72 4.7.2 Voice User Interaction ..........................................................................
Recommended publications
  • Lively Mashups for Mobile Devices
    Lively Mashups for Mobile Devices Feetu Nyrhinen, Arto Salminen, Tommi Mikkonen Tampere University of Technology Antero Taivalsaari Sun Microsystems Laboratories Outline • Background • Mashups • Mashup Development and Tools • Lively Mashups • Qt as a Mashup Platform • Mashup demos • Experiences • Conclusions Background • Web as the platform • End-user software is moving to the Web. • Typical examples: project management, calendars, document management, instant messaging, social networking, … • Web browser acts as a replacement for the conventional OS. • Mobile devices are becoming web-enabled, but there still are constraints such as smaller screen size, battery consumption, lower CPU speed and network bandwidth. Mashups • Mashup: A web site that combines content from more than one source (multiple web sites) into an integrated experience. • Mashups leverage the power of the Web to support worldwide sharing of content that would not have been easily accessible or reusable before the Web. • In principle, the content to be combined can be anything (text, source code, maps, video, blogs, product reviews, price data, ...) as long as it can be meaningfully combined with other content. • See, e.g., http://woozor.us/ (Weather conditions on Google Map) Mashup Development and Tools • There is a plethora of various tools for the mashup development. • However, general tools are still fairly limited in functionality and many of those are far from finished applications. • Some common trends: • Using the web not only for executing applications but also for developing them. • Visual programming techniques. • The web server is used to host and share mashups. • Direct connections to existing web services. • Mashup development for mobile devices is still a field with big challenges.
    [Show full text]
  • The Glib/GTK+ Development Platform
    The GLib/GTK+ Development Platform A Getting Started Guide Version 0.8 Sébastien Wilmet March 29, 2019 Contents 1 Introduction 3 1.1 License . 3 1.2 Financial Support . 3 1.3 Todo List for this Book and a Quick 2019 Update . 4 1.4 What is GLib and GTK+? . 4 1.5 The GNOME Desktop . 5 1.6 Prerequisites . 6 1.7 Why and When Using the C Language? . 7 1.7.1 Separate the Backend from the Frontend . 7 1.7.2 Other Aspects to Keep in Mind . 8 1.8 Learning Path . 9 1.9 The Development Environment . 10 1.10 Acknowledgments . 10 I GLib, the Core Library 11 2 GLib, the Core Library 12 2.1 Basics . 13 2.1.1 Type Definitions . 13 2.1.2 Frequently Used Macros . 13 2.1.3 Debugging Macros . 14 2.1.4 Memory . 16 2.1.5 String Handling . 18 2.2 Data Structures . 20 2.2.1 Lists . 20 2.2.2 Trees . 24 2.2.3 Hash Tables . 29 2.3 The Main Event Loop . 31 2.4 Other Features . 33 II Object-Oriented Programming in C 35 3 Semi-Object-Oriented Programming in C 37 3.1 Header Example . 37 3.1.1 Project Namespace . 37 3.1.2 Class Namespace . 39 3.1.3 Lowercase, Uppercase or CamelCase? . 39 3.1.4 Include Guard . 39 3.1.5 C++ Support . 39 1 3.1.6 #include . 39 3.1.7 Type Definition . 40 3.1.8 Object Constructor . 40 3.1.9 Object Destructor .
    [Show full text]
  • Latex Beamer Presentation
    Extend your KDE application Using QML! Artur Duque de Souza Aug/2011 Agenda • (Big) Introduction • A problem • KDE Solution • Issues • Future Qt Script QtScript C++ API to make your applications scriptable QScriptEngine • Environment to evaluate a script • Context • Global Object • Use QMetaObject system to automatically export QObjects QObjects Can be exported out of the box: • Properties • Signals • Slots • Q_INVOKABLE QScriptValue Container for QtScript data types: • Support for ECMA-262 types • Support for QObject, QVariant and QMetaObject • Prototype property that is common to all instances of an object JS Bindings JS Bindings for Qt Bindings are proxy objects/functions to interface with the ’real’ libraries JS Bindings for Qt Steps to create your bindings: • Create wrap code (check context arguments) • Register your wrappers with the engine • Be happy :) JS Bindings for Qt Steps to create your bindings: • Create wrap code (check context arguments) • Register your wrappers with the engine • Be happy :) JS Bindings for Qt Steps to create your bindings: • Create wrap code (check context arguments) • Register your wrappers with the engine • Be happy :) QML QML Declarative language to ease the development of UIs QDeclarativeEngine • Handles QML code • Does not inherit QScriptEngine • It has a QScriptEngine inside QDeclarativeEngine • Handles QML code • Does not inherit QScriptEngine • It has a QScriptEngine inside QDeclarativeEngine Public API • QML specific methods • It has its own ’context’: QDeclarativeContext • QObject works out of the box • It’s possible to register C++ declarative items QDeclarativeExpression Evaluate a JS expression in a QML context KDE First of all... ... why use QML? Declarative languages are way better (and faster) to build rich UIs! • Microblog plasmoid (C++): 1250 LOC • Declarative Microblog: 500 LOC First of all..
    [Show full text]
  • Anjuta 1.2.0
    Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial SOFTWARE Hasil Tes dan Ulasan Software Anjuta 1.2.0 ALAT BANTU PEMROGRAMAN Sifat: Free software Lisensi: GPL Pengembang: Naba Kumar Situs web: http://anjuta.org nda termasuk developer yang senang menggunakan program- A program sederhana dalam menulis kode program? Kalau ya, barangkali Anda puas dengan editor Vim. Dengan syntax highlighting dan fasilitas pemrograman Anjuta IDE lainnya, Vim termasuk alat bantu pemrograman yang menyenangkan. Hal tersebut belum lagi ditambah dengan program terlihat rapi. Begitu tubuh fungsi pengamatan nilai register, signal kernel, fasilitas pencarian dan penggantian teks disembunyikan, maka yang terlihat breakpoint, memory dump, dan lain yang dapat diketikkan dengan mudah lewat hanyalah nama fungsinya. Menarik, bukan? sebagainya? Tenang saja. Anjuta dapat keyboard. Masih bicara tampilan, kita perlu memuji menampilkannya untuk Anda. Tinggal pilih Tapi, Vim memiliki sejumlah besar pewarnaan yang digunakan oleh Anjuta. menunya dan dalam sekejap, apa yang keterbatasan. Vim sendiri sejatinya adalah Anjuta akan memberikan warna-warna Anda inginkan sudah terpampang. Lebih teks editor biasa. Apabila Anda ingin khusus untuk sesuatu yang termasuk cepat dari sulap! mendapatkan sejumlah besar kemampuan istimewa, misalnya keyword bahasa Secara umum, fasilitas debugging pada Vim dan sekaligus memiliki yang lebih, pemrograman, komentar, sampai isi dari Anjuta pun perlu diberikan acungan jempol. maka Anjutalah pilihannya. suatu konstanta ataupun variabel tipe Fasilitas debugging dibangun di atas gdb, Anjuta adalah IDE untuk C/C++, tertentu. Dan pewarnaan yang dilakukan yang merupakan debugger populer. Anda walaupun dengan mudah dapat digunakan pun cukup menarik. Anjuta akan dapat mengeksekusi interaktif, pengamatan oleh bahasa pemrograman lain. Sebagai memberikan warna kabur terlebih dahulu nilai-nilai tertentu, manipulasi stack, dan contoh, penulis bersenang hati pada saat pengetikan.
    [Show full text]
  • Qt Signals and Slots
    Qt Signals and Slots Olivier Goffart October 2013 About Me About Me QStyleSheetStyle Itemviews Animation Framework QtScript (porting to JSC and V8) QObject, moc QML Debugger Modularisation ... About Me Offering Qt help and services: Visit http://woboq.com C++ Code browser: http://code.woboq.org Outline 1 History 2 Pointer to member function 3 Lambda functions 4 New syntax in Qt5 5 Under The Hood Outline 1 History 2 Pointer to member function 3 Lambda functions 4 New syntax in Qt5 5 Under The Hood Qt 1.41 Qt 1.41 Qt 1.41 qobjectdefs.h Qt 2, Qt 3 Q PROPERTY No major changes in signals and slot Qt 4 Thread support QueuedConnection Meta type registration Several major internal changes Added file and line number information in debug mode But still no changes in the syntax How Does it Work? 1 bool connect(const QObject *sender, 2 const char *signal, 3 const QObject *receiver, 4 const char *member); How Does it Work? Compare the signature string to see if the arguments match Use the information provided my the moc to find the index of the signal and of the slot Keep in an internal map which signal is connected to what slots When emitting a signal, QMetaObject::activate is called. It calls qt metacall (generated by moc) with the slot index which call the actual slot 3 connect(socket,SIGNAL(infoReceived(const Info &)), 4 this,SLOT(slotInfoReceived(const MyFramework::Info &))); 6 connect(button3,SIGNAL(clicked()), 7 this,SLOT(buttonClicked(3))); 9 connect(comboBox,SIGNAL(valueChanged(int)), 10 settings ,SLOT(updateValue(QVariant))); 12 connect(model,SIGNAL(modelReset()),
    [Show full text]
  • Multiplatformní GUI Toolkity GTK+ a Qt
    Multiplatformní GUI toolkity GTK+ a Qt Jan Outrata KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO V OLOMOUCI GUI toolkit (widget toolkit) (1) = programová knihovna (nebo kolekce knihoven) implementující prvky GUI = widgety (tlačítka, seznamy, menu, posuvník, bary, dialog, okno atd.) a umožňující tvorbu GUI (grafického uživatelského rozhraní) aplikace vlastní jednotný nebo nativní (pro platformu/systém) vzhled widgetů, možnost stylování nízkoúrovňové (Xt a Xlib v X Windows System a libwayland ve Waylandu na unixových systémech, GDI Windows API, Quartz a Carbon v Apple Mac OS) a vysokoúrovňové (MFC, WTL, WPF a Windows Forms v MS Windows, Cocoa v Apple Mac OS X, Motif/Lesstif, Xaw a XForms na unixových systémech) multiplatformní = pro více platforem (MS Windows, GNU/Linux, Apple Mac OS X, mobilní) nebo platformově nezávislé (Java) – aplikace může být také (většinou) událostmi řízené programování (event-driven programming) – toolkit v hlavní smyčce zachytává události (uživatelské od myši nebo klávesnice, od časovače, systému, aplikace samotné atd.) a umožňuje implementaci vlastních obsluh (even handler, callback function), objektově orientované programování (objekty = widgety aj.) – nevyžaduje OO programovací jazyk! Jan Outrata (Univerzita Palackého v Olomouci) Multiplatformní GUI toolkity duben 2015 1 / 10 GUI toolkit (widget toolkit) (2) language binding = API (aplikační programové rozhraní) toolkitu v jiném prog. jazyce než původní API a toolkit samotný GUI designer/builder = WYSIWYG nástroj pro tvorbu GUI s využitím toolkitu, hierarchicky skládáním prvků, z uloženého XML pak generuje kód nebo GUI vytvoří za běhu aplikace nekomerční (GNU (L)GPL, MIT, open source) i komerční licence např. GTK+ (C), Qt (C++), wxWidgets (C++), FLTK (C++), CEGUI (C++), Swing/JFC (Java), SWT (Java), JavaFX (Java), Tcl/Tk (Tcl), XUL (XML) aj.
    [Show full text]
  • Katalog 2019 En-Web
    << emtas - your embedded solution partner << In the fields of automation technology and LEV development emtas is one of the leading providers of communication technologies. With its product portfolio emtas is specialized in CAN, CANopen (FD), J1939, EnergyBus and EtherCAT. Besides the sale of own products its software engineers develop customized embedded software solutions. The range of services includes consulting, deveolopment, on­site commissioning as well as software maintenance. Furthermore emtas provides training courses about the communications protocols CANopen, CANopen FD EtherCAT, EnergyBus, J1939 as well as trainings based on individual required content. << technologies << emtas is active member of the CAN in Automation e.V. (CiA), the EtherCAT Technology Group (ETG) and development partner of the EnergyBus e.V.. The experienced team is regularly working in different groups and in the commitees for a standardization of CiA, EnergyBus e.V. and the EtherCAT Technology Group. Basing on these facts, emtas' products always do correspond to the latest state of technology. emtas stands for: - expert advice - excellent service - high quality standard - Made in Germany << partnership << One of our major concern is to be always a reliable partner for our customers. Only together with them << sectors << we may be able to shape a successful future of our emtas products are being used by diverse national company. Customers all over the world gain from and international industries: strong service, professional consulting and high quality products. • automation • medical technology << service << • LEV components • battery and charging technology Direct phone contact to the developers of the customers' product or project. At any time. • lifts • and more... << table of content << << CAN/CANopen/CANopen FD << CANopen introduction .........................................................................................................
    [Show full text]
  • Pipenightdreams Osgcal-Doc Mumudvb Mpg123-Alsa Tbb
    pipenightdreams osgcal-doc mumudvb mpg123-alsa tbb-examples libgammu4-dbg gcc-4.1-doc snort-rules-default davical cutmp3 libevolution5.0-cil aspell-am python-gobject-doc openoffice.org-l10n-mn libc6-xen xserver-xorg trophy-data t38modem pioneers-console libnb-platform10-java libgtkglext1-ruby libboost-wave1.39-dev drgenius bfbtester libchromexvmcpro1 isdnutils-xtools ubuntuone-client openoffice.org2-math openoffice.org-l10n-lt lsb-cxx-ia32 kdeartwork-emoticons-kde4 wmpuzzle trafshow python-plplot lx-gdb link-monitor-applet libscm-dev liblog-agent-logger-perl libccrtp-doc libclass-throwable-perl kde-i18n-csb jack-jconv hamradio-menus coinor-libvol-doc msx-emulator bitbake nabi language-pack-gnome-zh libpaperg popularity-contest xracer-tools xfont-nexus opendrim-lmp-baseserver libvorbisfile-ruby liblinebreak-doc libgfcui-2.0-0c2a-dbg libblacs-mpi-dev dict-freedict-spa-eng blender-ogrexml aspell-da x11-apps openoffice.org-l10n-lv openoffice.org-l10n-nl pnmtopng libodbcinstq1 libhsqldb-java-doc libmono-addins-gui0.2-cil sg3-utils linux-backports-modules-alsa-2.6.31-19-generic yorick-yeti-gsl python-pymssql plasma-widget-cpuload mcpp gpsim-lcd cl-csv libhtml-clean-perl asterisk-dbg apt-dater-dbg libgnome-mag1-dev language-pack-gnome-yo python-crypto svn-autoreleasedeb sugar-terminal-activity mii-diag maria-doc libplexus-component-api-java-doc libhugs-hgl-bundled libchipcard-libgwenhywfar47-plugins libghc6-random-dev freefem3d ezmlm cakephp-scripts aspell-ar ara-byte not+sparc openoffice.org-l10n-nn linux-backports-modules-karmic-generic-pae
    [Show full text]
  • GNOME 3 Application Development Beginner's Guide
    GNOME 3 Application Development Beginner's Guide Step-by-step practical guide to get to grips with GNOME application development Mohammad Anwari BIRMINGHAM - MUMBAI GNOME 3 Application Development Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: February 2013 Production Reference: 1080213 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-942-7 www.packtpub.com Cover Image by Duraid Fatouhi ([email protected]) Credits Author Project Coordinator Mohammad Anwari Abhishek Kori Reviewers Proofreader Dhi Aurrahman Mario Cecere Joaquim Rocha Indexer Acquisition Editor Tejal Soni Mary Jasmine Graphics Lead Technical Editor Aditi Gajjar Ankita Shashi Production Coordinator Technical Editors Aparna Bhagat Charmaine Pereira Cover Work Dominic Pereira Aparna Bhagat Copy Editors Laxmi Subramanian Aditya Nair Alfida Paiva Ruta Waghmare Insiya Morbiwala About the Author Mohammad Anwari is a software hacker from Indonesia with more than 13 years of experience in software development.
    [Show full text]
  • Pdfswqokdvt2o.Pdf
    GNOME 3 Application Development Beginner's Guide Step-by-step practical guide to get to grips with GNOME application development Mohammad Anwari BIRMINGHAM - MUMBAI GNOME 3 Application Development Beginner's Guide Copyright © 2013 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: February 2013 Production Reference: 1080213 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-84951-942-7 www.packtpub.com Cover Image by Duraid Fatouhi ([email protected]) Credits Author Project Coordinator Mohammad Anwari Abhishek Kori Reviewers Proofreader Dhi Aurrahman Mario Cecere Joaquim Rocha Indexer Acquisition Editor Tejal Soni Mary Jasmine Graphics Lead Technical Editor Aditi Gajjar Ankita Shashi Production Coordinator Technical Editors Aparna Bhagat Charmaine Pereira Cover Work Dominic Pereira Aparna Bhagat Copy Editors Laxmi Subramanian Aditya Nair Alfida Paiva Ruta Waghmare Insiya Morbiwala About the Author Mohammad Anwari is a software hacker from Indonesia with more than 13 years of experience in software development.
    [Show full text]
  • El Compilador De C
    Apéndice A El compilador de C En este apéndice se verá el funcionamiento del compilador de C en ambientes Windows y fundamentalmente GNU-Linux, que es el que se recomienda. Introducción Existe una secuencia de trabajo para producir una aplicación ejecutable desde un código fuente en ANSI C (o cualquier otro lenguaje no interpretado). El código en lenguaje de alto nivel debe ser traducido a código máquina que pueda ser ejecutado por el computador. Aquí es donde interviene el compilador, que es ayudado por varias herramientas para su cometido: el ensamblador, el enlazador y el depurador. Las fases para producir la aplicación las podríamos resumir en los siguientes puntos: 1. Con la ayuda de un editor escribiremos un programa en alto nivel. Este editor puede ser muy sencillo y de propósito general o especializado en la realización de código fuente, con lo cual será sensible a las palabras propias del lenguaje de alto nivel utilizado, avisarnos de la falta de algún elemento como llaves o puntos y coma e incluso nos permitirá embellecer ese código. En cualquier caso el resultado será un código en texto plano. 2. Este código pasa un por una fase de pre procesamiento del texto (ver capítulo 6), que incluirá la sustitución de determinadas constantes o la inclusión de otros ficheros, por citar los dos cometidos más usuales. En cualquier caso se produce otro fichero de texto plano (modificando el anterior) con formato de código de alto nivel. 3. Este nuevo código ahora es compilado (internamente se pasa por varias fases que puedes ver en el apéndice B).
    [Show full text]
  • Free Software for Engineers
    Indian Linux Users© Group, Chennai (ILUGC) in association with Thiagarajar College of Engineering, Madurai presents Free Software for Engineers by Shakthi Kannan MS Thiagarajar College of Engineering, Madurai GNU/Linux Programming ● C ● C++ ● Assembly ● Java ● Bash scripting ● Perl ● Python ● GUI Programming (GTK / Qt) ● Tcl/Tk GNU/Linux IDE/Text Editors ● Eclipse ● Anjuta ● KDevelop ● DrPython ● vi/vim ● GNU Emacs ● Pico / Nano ● Kate ● Kwrite ● gedit Eclipse IDE Source: http://ometer.com/eclipse-shots/eclipse-metacity.png What Software Tools? GNU/Linux Software Tools ● GNU C Compiler (gcc) ● GNU Assembler (gas) ● GNU C++ compiler (g++) ● GNU Debugger (gdb) ● Data Display Debugger (ddd) ● Java SDK ● Python ● Tcl Source: http://www.gnu.org/software/ddd/registers.jpg Java with Eclipse Source: http://www.depeupleur.com/blog/TT_blog/archives/000011.html GNU/Linux Math Tools ● Scilab ● r-project ● pspp ● IT++ ● GSL ● GNU Octave ● gnuplot ● LabPlot ● LaTeX Source: http://gnuplot.sourceforge.net/screenshots/figs/term-mouse-X11.png r-project Source: http://www.r-project.org/screenshots/desktop.jpg GNU/Linux EDA Tools ● Alliance ● gEDA ● PCB Tool ● EE Tool ● TkGate ● XCircuit ● gerbv ● gputils ● vlsi Source: http://www.tkgate.org/fig/scopewin.gif gEDA Source: http://www.geda.seul.org/screenshots/screenshot-qschem1.png PCB Source: http://bach.ece.jhu.edu/~haceaton/pcb/pcb_screen.gif TkGate Source: http://www.tkgate.org/fig/2.0/main.gif Gerber Viewer Source: http://gerbv.sourceforge.net/screenshot2.png What about Hardware? GNU/Linux Simulators/Emulators
    [Show full text]