{"id":1761,"date":"2016-07-27T13:40:17","date_gmt":"2016-07-27T18:40:17","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=1761"},"modified":"2016-07-30T16:23:05","modified_gmt":"2016-07-30T21:23:05","slug":"raspberry-qt-part-6","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/","title":{"rendered":"Raspberry Qt &#8211; Part 6"},"content":{"rendered":"<p><strong>Logging information in Linux<\/strong><\/p>\n<p align=\"justify\">In the zip file you will notice logikallogger.cpp and its header file. This is a class I have written over and over through the years, even before I got into Qt. Any time you are developing for an OS which has a central log system as Linux does you should have a class like this in your application.<\/p>\n<p align=\"justify\">Yes, I know many in the C++ world decry the use of a singleton class, but they, like the much maligned goto statement, have a purpose. Even Java did not get rid of the goto statement, they just gave it different names. Even a switch statement is a variation of BASIC\u2019s \u201cON GOTO\u201d statement. When you enter a switch you goto the case matching the conditional value and when you encounter the break statement you goto the code immediately following the switch.<\/p>\n<p align=\"justify\">I will be the first to admit both the singleton class and the goto statement have been viciously abused in production code around the world. When it comes to a singleton class you know you hosed its creation when you feel a need to derive from it. Tsk, tsk, tsk. When it comes to something like application access to a central error logger a singleton class makes perfect sense. No, I\u2019m not going to paste and dissect the code. That is something I do in my books. I will cut and paste the very short main.cpp module. It looks like most every other Qt application main module with the addition of 2 lines for the logger. You really need to set the application name so you can find your messages in syslog.<\/p>\n<pre>\/*********************************************************************\r\n\u00a0* Copyright (c) 2016, Logikal Solutions\u00a0 All Rights Reserved.\r\n\u00a0*\r\n\u00a0* File:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 main.cpp\r\n\u00a0*\r\n\u00a0* Creation date:\u00a0\u00a0\u00a0 2016\r\n\u00a0* Author:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Roland Hughes\r\n\u00a0*\r\n\u00a0* Description: Main module for SerialKeypad example\r\n\u00a0*********************************************************************\/\r\n#include \"mainwindow.h\"\r\n#include \"logikallogger.h\"\r\n#include &lt;QApplication&gt;\r\n\r\nint main(int argc, char *argv[])\r\n{\r\n\u00a0\u00a0\u00a0 QApplication a(argc, argv);\r\n\u00a0\u00a0\u00a0 MainWindow w;\r\n\u00a0\u00a0\u00a0 LogikalLogger::Instance().setAppName(\"SerialKeypad\");\r\n\u00a0\u00a0\u00a0 w.show();\r\n\r\n\u00a0\u00a0\u00a0 return a.exec();\r\n}<\/pre>\n<p align=\"justify\">Before the application runs it is best to open a terminal window and type:<\/p>\n<pre>sudo tail -f \/var\/log\/syslog<\/pre>\n<p align=\"justify\">After it completes hit return a couple of times. Most of the messages appearing after the blank space should come from your run. Connecting the cable to the serial port of my Pi with the device powered on yields a screen like the one below.<\/p>\n<p align=\"justify\"><img decoding=\"async\" class=\"alignleft wp-image-1762 size-full\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_1.png\" alt=\"getty_test_1\" width=\"707\" height=\"540\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_1.png 707w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_1-300x229.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_1-624x477.png 624w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><\/p>\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">Clicking enter after using the mouse to type my name yields this resulting screen.<\/p>\n<p align=\"justify\"><img decoding=\"async\" class=\"alignleft wp-image-1763 size-full\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_2.png\" alt=\"getty_test_2\" width=\"707\" height=\"540\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_2.png 707w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_2-300x229.png 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/getty_test_2-624x477.png 624w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><\/p>\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">\n<p align=\"justify\">If you don&#8217;t see the same result you most likely also don&#8217;t see your mini-tester looking like this with the application open and connected to the Pi.<\/p>\n<p align=\"justify\"><img decoding=\"async\" class=\"alignleft wp-image-1764 size-full\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg\" alt=\"0726161420a\" width=\"2560\" height=\"1920\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg 1920w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a-300x225.jpg 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a-768x576.jpg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a-1024x768.jpg 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a-624x468.jpg 624w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Your terminal window should also should also show something which looks much like the following:<\/p>\n<pre>Jul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Result of connecting signal mapper 1\r\nJul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Testing: ttyS0 manufacturer:\u00a0 description:\u00a0 serial number:\u00a0 baud: 9600 data: 8 parity: 0 stop: 1\r\nJul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: port ttyS0 chosen as device\r\nJul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Testing: ttyS4 manufacturer:\u00a0 description:\u00a0 serial number:\u00a0 baud: 9600 data: 8 parity: 0 stop: 1\r\nJul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Attempting to open ttyS0\r\nJul 26 14:17:47 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Serial Device ttyS0 opened on first attempt\r\nJul 26 14:18:02 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Sending message: ROLAND\r\nJul 26 14:18:02 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: SerialThread writing message: ROLAND\r\nJul 26 14:18:02 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: SerialThread received data: ROLAND\r\nJul 26 14:18:02 roland-HP-Compaq-8100-Elite-SFF-PC LogikalLogger: Received message: ROLAND\r\n\r\n<\/pre>\n<p align=\"justify\">Why is it better to use the OS logger than your own log file? Because if something else happened on the system causing your program to misbehave it &#8220;should&#8221; show up in the system log. Entries are in timestamp sequence. If some device driver or piece of hardware throws an error the driver &#8220;should&#8221; report it here. I say should because all bets are off if the system disk is throwing errors on its way to that big recycling pile in the sky.<\/p>\n<p align=\"justify\">Why does this test work? We haven&#8217;t done anything to the Pi other than boot it with Raspbian and connect our serial cable. It shouldn&#8217;t work.<\/p>\n<p align=\"justify\">Well, it does and this is why I told you not to bludgeon forward. The Pi has a process running called <a href=\"http:\/\/linuxcommand.org\/man_pages\/mgetty8.html\">mgetty<\/a> which expects an ASCII terminal supporting a stripped down <a href=\"https:\/\/en.wikipedia.org\/wiki\/VT100\">VT100<\/a> interface. Not a real VT100 interface as defined by <a href=\"http:\/\/openvms.org\/\">OpenVMS<\/a> but what Linux users call VT100. As such, it echos back characters sent to it until it recognizes something such as a login attempt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Logging information in Linux In the zip file you will notice logikallogger.cpp and its header file. This is a class I have written over and over through the years, even before I got into Qt. Any time you are developing for an OS which has a central log system as Linux does you should have a class like this in your application. Yes, I know many in the C++ world decry the use of a &hellip; <a title=\"Raspberry Qt &#8211; Part 6\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/\"><span class=\"screen-reader-text\">Raspberry Qt &#8211; Part 6<\/span>Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":1764,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1113],"tags":[1141,1142,1144,9,1034,1143,1145],"class_list":["post-1761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-raspberry-pi","tag-basic","tag-goto","tag-mgetty","tag-openvms","tag-raspberry-pi","tag-syslog","tag-vt100","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Raspberry Qt - Part 6 &#8211; Logikal Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Raspberry Qt - Part 6 &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Logging information in Linux In the zip file you will notice logikallogger.cpp and its header file. This is a class I have written over and over through the years, even before I got into Qt. Any time you are developing for an OS which has a central log system as Linux does you should have a class like this in your application. Yes, I know many in the C++ world decry the use of a &hellip; Raspberry Qt &#8211; Part 6Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-27T18:40:17+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2016-07-30T21:23:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1920\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\"},\"headline\":\"Raspberry Qt &#8211; Part 6\",\"datePublished\":\"2016-07-27T18:40:17+00:00\",\"dateModified\":\"2016-07-30T21:23:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/\"},\"wordCount\":577,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/0726161420a.jpg\",\"keywords\":[\"BASIC\",\"goto\",\"mgetty\",\"OpenVMS\",\"Raspberry Pi\",\"syslog\",\"VT100\"],\"articleSection\":[\"Raspberry Pi\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/\",\"name\":\"Raspberry Qt - Part 6 &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/0726161420a.jpg\",\"datePublished\":\"2016-07-27T18:40:17+00:00\",\"dateModified\":\"2016-07-30T21:23:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/0726161420a.jpg\",\"contentUrl\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2016\\\/07\\\/0726161420a.jpg\",\"width\":1920,\"height\":1440},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/raspberry-pi\\\/raspberry-qt-part-6\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Raspberry Qt &#8211; Part 6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people having an attention span longer than a tweet\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\",\"name\":\"seasoned_geek\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\",\"caption\":\"seasoned_geek\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r\"},\"description\":\"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\\\/Qt touchscreen\\\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \\\"Zinc It!\\\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \\\"The Minimum You Need to Know to Be an OpenVMS Application Developer\\\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \\\"The Minimum You Need to Know\\\" book series was born. Three years later he wrote his first novel \\\"Infinite Exposure\\\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \\\"The Earth That Was\\\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.\",\"sameAs\":[\"https:\\\/\\\/theminimumyouneedtoknow.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/b87acf3335e19871db8f4a1aca03736c\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r\",\"caption\":\"admin\"},\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Raspberry Qt - Part 6 &#8211; Logikal Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/","og_locale":"en_US","og_type":"article","og_title":"Raspberry Qt - Part 6 &#8211; Logikal Blog","og_description":"Logging information in Linux In the zip file you will notice logikallogger.cpp and its header file. This is a class I have written over and over through the years, even before I got into Qt. Any time you are developing for an OS which has a central log system as Linux does you should have a class like this in your application. Yes, I know many in the C++ world decry the use of a &hellip; Raspberry Qt &#8211; Part 6Read more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/","og_site_name":"Logikal Blog","article_published_time":"2016-07-27T18:40:17+00:00","article_modified_time":"2016-07-30T21:23:05+00:00","og_image":[{"width":2560,"height":1920,"url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg","type":"image\/jpeg"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/"},"author":{"name":"admin","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c"},"headline":"Raspberry Qt &#8211; Part 6","datePublished":"2016-07-27T18:40:17+00:00","dateModified":"2016-07-30T21:23:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/"},"wordCount":577,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg","keywords":["BASIC","goto","mgetty","OpenVMS","Raspberry Pi","syslog","VT100"],"articleSection":["Raspberry Pi"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/","name":"Raspberry Qt - Part 6 &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg","datePublished":"2016-07-27T18:40:17+00:00","dateModified":"2016-07-30T21:23:05+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#primaryimage","url":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg","contentUrl":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2016\/07\/0726161420a.jpg","width":1920,"height":1440},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/raspberry-pi\/raspberry-qt-part-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Raspberry Qt &#8211; Part 6"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people having an attention span longer than a tweet","publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.logikalsolutions.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842","name":"seasoned_geek","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r","caption":"seasoned_geek"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/ae9adac14079d84b909e635d7af986fe4568053af4fd9ff8d4109298c392493e?s=96&d=mm&r=r"},"description":"Roland Hughes started his IT career in the early 1980s. He quickly became a consultant and president of Logikal Solutions, a software consulting firm specializing in OpenVMS application and C++\/Qt touchscreen\/embedded Linux development. Early in his career he became involved in what is now called cross platform development. Given the dearth of useful books on the subject he ventured into the world of professional author in 1995 writing the first of the \"Zinc It!\" book series for John Gordon Burke Publisher, Inc. A decade later he released a massive (nearly 800 pages) tome \"The Minimum You Need to Know to Be an OpenVMS Application Developer\" which tried to encapsulate the essential skills gained over what was nearly a 20 year career at that point. From there \"The Minimum You Need to Know\" book series was born. Three years later he wrote his first novel \"Infinite Exposure\" which got much notice from people involved in the banking and financial security worlds. Some of the attacks predicted in that book have since come to pass. While it was not originally intended to be a trilogy, it became the first book of \"The Earth That Was\" trilogy: Infinite Exposure Lesedi - The Greatest Lie Ever Told John Smith - Last Known Survivor of the Microsoft Wars When he is not consulting Roland Hughes posts about technology and sometimes politics on his blog. He also has regularly scheduled Sunday posts appearing on the Interesting Authors blog.","sameAs":["https:\/\/theminimumyouneedtoknow.com"]},{"@type":"Person","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/b87acf3335e19871db8f4a1aca03736c","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","url":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/168fb2539f8db5d41fe93ae7707d04fbfab3d518cd2603e8066217896887745a?s=96&d=mm&r=r","caption":"admin"},"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=1761"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/1761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media\/1764"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=1761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=1761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=1761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}