{"id":3015,"date":"2019-01-08T22:20:46","date_gmt":"2019-01-09T04:20:46","guid":{"rendered":"http:\/\/www.logikalsolutions.com\/wordpress\/?p=3015"},"modified":"2019-01-08T22:20:46","modified_gmt":"2019-01-09T04:20:46","slug":"qt-and-usb-pt-6","status":"publish","type":"post","link":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/","title":{"rendered":"Qt and USB &#8211; Pt. 6"},"content":{"rendered":"<p>Been a long time since I last touched this. I did quite a bit of work before packing up and heading out to a shiny new client out of state. Sadly I only brought the latest piece of code with me which has nothing to do with Qt. The Qt based stuff migrated to QML since I needed to get more familiar with that for my upcoming project. I also crawled towards being able to communicate via USB. I do say crawled.<\/p>\n<p>When you come from a serial, parallel port or network communications background your first impulse\/wish is to do something like this.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-3016\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg\" alt=\"usb cable in 2 ports\" width=\"678\" height=\"904\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-225x300.jpeg 225w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24.jpeg 1440w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>Not gonna happen. If you try one of those special RCA Android tablet transfer cables<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-3017\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2018-12-26_14-15-39-768x1024.jpeg\" alt=\"RCA Android Table cable\" width=\"678\" height=\"904\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2018-12-26_14-15-39-768x1024.jpeg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2018-12-26_14-15-39-225x300.jpeg 225w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2018-12-26_14-15-39.jpeg 1440w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>You get to watch all of the lights go out on your powered hub. What&#8217;s special about this cable? According to RCA the power line is cut because the RCA Viking Pro cannot have power coming in on the port. This cable is what is required if you wish to cross compile and deploy code to the Android tablet.<img decoding=\"async\" class=\"aligncenter size-large wp-image-2123\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A-1024x768.jpg\" alt=\"RCA Viking Pro image\" width=\"678\" height=\"509\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A-1024x768.jpg 1024w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A-300x225.jpg 300w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A-768x576.jpg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A-730x548.jpg 730w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2017\/05\/IMG0054A.jpg 1600w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>Yeah, I&#8217;m not a hardware guy. I&#8217;ve done serial communications much of my life and understand it pretty well. I&#8217;ve even done parallel port communications with the DOS outp() command. This is a new frontier fraught with peril. USB communications requires some form of intelligence in anything which gets connected. The OS is also going to try and identify the device, then load a driver. Actually if you have the stand alone C program I started working on to strip this problem down to the barest of components and you plug both ends of the same cable into the hub you can see periodic error messages popping up as Linux tries to identify the two new devices. It can be entertaining.<\/p>\n<p>All of the snippets and scraps of code which &#8220;claim&#8221; to work on-line rely on a single USB chip which has both bulk input and output end points. Many\/most of those &#8220;complete&#8221; programs which the poster claim works won&#8217;t even compile. Their problem isn&#8217;t some change in the C standard. I found variables which weren&#8217;t even declared. Really don&#8217;t know what C compiler they were using to get away with that.<\/p>\n<p>My next knee-jerk reaction was to use my PL 2303 USB to serial cable and connect it to my DB-9 serial port on the back of the desktop.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-3018\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-35-12-768x1024.jpeg\" alt=\"PL2303 and DB-9 serial\" width=\"678\" height=\"904\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-35-12-768x1024.jpeg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-35-12-225x300.jpeg 225w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-35-12.jpeg 1440w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>The part in the middle would have the pretty pretty lights<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-large wp-image-3021\" src=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-31-33-1-768x1024.jpeg\" alt=\"gender bender\" width=\"678\" height=\"904\" srcset=\"https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-31-33-1-768x1024.jpeg 768w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-31-33-1-225x300.jpeg 225w, https:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_12-31-33-1.jpeg 1440w\" sizes=\"(max-width: 678px) 100vw, 678px\" \/><\/p>\n<p>That of course requires a gender bender with one set of nuts removed.<\/p>\n<p>With everything plugged in and the pretty lights lit, I used the following command to find my device.<\/p>\n<pre>sudo lsusb -v<\/pre>\n<p>Here is the portion of the output for this device:<\/p>\n<pre>Bus 001 Device 020: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port\r\nDevice Descriptor:\r\nbLength 18\r\nbDescriptorType 1\r\nbcdUSB 1.10\r\nbDeviceClass 0 (Defined at Interface level)\r\nbDeviceSubClass 0 \r\nbDeviceProtocol 0 \r\nbMaxPacketSize0 64\r\nidVendor 0x067b Prolific Technology, Inc.\r\nidProduct 0x2303 PL2303 Serial Port\r\nbcdDevice 3.00\r\niManufacturer 1 Prolific Technology Inc.\r\niProduct 2 USB-Serial Controller\r\niSerial 0 \r\nbNumConfigurations 1\r\nConfiguration Descriptor:\r\nbLength 9\r\nbDescriptorType 2\r\nwTotalLength 39\r\nbNumInterfaces 1\r\nbConfigurationValue 1\r\niConfiguration 0 \r\nbmAttributes 0x80\r\n(Bus Powered)\r\nMaxPower 100mA\r\nInterface Descriptor:\r\nbLength 9\r\nbDescriptorType 4\r\nbInterfaceNumber 0\r\nbAlternateSetting 0\r\nbNumEndpoints 3\r\nbInterfaceClass 255 Vendor Specific Class\r\nbInterfaceSubClass 0 \r\nbInterfaceProtocol 0 \r\niInterface 0 \r\nEndpoint Descriptor:\r\nbLength 7\r\nbDescriptorType 5\r\nbEndpointAddress 0x81 EP 1 IN\r\nbmAttributes 3\r\nTransfer Type Interrupt\r\nSynch Type None\r\nUsage Type Data\r\nwMaxPacketSize 0x000a 1x 10 bytes\r\nbInterval 1\r\nEndpoint Descriptor:\r\nbLength 7\r\nbDescriptorType 5\r\n<strong>bEndpointAddress 0x02 EP 2 OUT<\/strong>\r\n<strong>bmAttributes 2<\/strong>\r\n<strong>Transfer Type Bulk<\/strong>\r\n<strong>Synch Type None<\/strong>\r\n<strong>Usage Type Data<\/strong>\r\n<strong>wMaxPacketSize 0x0040 1x 64 bytes<\/strong>\r\nbInterval 0\r\nEndpoint Descriptor:\r\nbLength 7\r\nbDescriptorType 5\r\n<strong>bEndpointAddress 0x83 EP 3 IN<\/strong>\r\n<strong>bmAttributes 2<\/strong>\r\n<strong>Transfer Type Bulk<\/strong>\r\n<strong>Synch Type None<\/strong>\r\n<strong>Usage Type Data<\/strong>\r\n<strong>wMaxPacketSize 0x0040 1x 64 bytes<\/strong>\r\nbInterval 0\r\nDevice Status: 0x0000\r\n(Bus Powered)\r\n<\/pre>\n<p>I bolded the endpoints of interest. Gee! Seems like this ought to work just like all of those example programs, right?<\/p>\n<p><strong>Not a chance!<\/strong><\/p>\n<p>After an awful lot of head scratching combined with failures I stumbled onto <a href=\"http:\/\/wp.brodzinski.net\/hardware\/fake-pl2303-how-to-install\/\">this post<\/a>. Man does that suck. My favorite one of these cables, only because it had lights on it so you could tell if you were communicating is the modern day equivalent of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Softmodem\">WinModem<\/a>. That&#8217;s right, it&#8217;s a fake converter just like WinModems were fake modems. They would only work on Windows with the Windows driver because they had none of the modem chipset. The same is true for the PL 2303. The manufacturer has even dropped support for it from their latest Windows driver so you have to work around per the previous link.<\/p>\n<p>One of the first steps in working with libusb is making a call to remove the kernel driver. Once the driver was gone, what was left in the hardware couldn&#8217;t possibly work. So, after frantic packing for my trip (and potentially overwriting the really nice QML code with the suckier old version in all of my moving stuff around) I hopped onto ebay and ordered some USB to serial bridge devices which came with nice little TTL wires.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/i.ebayimg.com\/images\/g\/FqYAAOSwxbpZl5x6\/s-l1600.jpg\"><img decoding=\"async\" class=\"size-large\" src=\"https:\/\/i.ebayimg.com\/images\/g\/FqYAAOSwxbpZl5x6\/s-l1600.jpg\" alt=\"USB to UART TTL adapter\" width=\"1600\" height=\"1598\" \/><\/a><figcaption class=\"wp-caption-text\">CP2102 USB 2.0 to UART TTL 5PIN Module Serial Converter Adapter Red+Silver TS<\/figcaption><\/figure>\n<p>The leads were the selling point for me. I don&#8217;t want to string a boatload of cable for this. I just want to connect transmit to receive with one wire so I can have a full loopback. If I get really energetic over the next few weeks I will dig through the <a href=\"http:\/\/www.prolific.com.tw\/UserFiles\/files\/ds_pl2303HXD_v1_4_4.pdf\">data sheet for the PL 2303<\/a> and find the Linux driver source to see if I can get code which works with that hardware and no driver, just to do it.<\/p>\n<p>When I plug the new device in and re-run the lsusb -v command I see the following for our new device.<\/p>\n<pre>Bus 001 Device 021: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge \/ myAVR mySmartUSB light\r\nDevice Descriptor:\r\nbLength 18\r\nbDescriptorType 1\r\nbcdUSB 1.10\r\nbDeviceClass 0 (Defined at Interface level)\r\nbDeviceSubClass 0 \r\nbDeviceProtocol 0 \r\nbMaxPacketSize0 64\r\nidVendor 0x10c4 Cygnal Integrated Products, Inc.\r\nidProduct 0xea60 CP210x UART Bridge \/ myAVR mySmartUSB light\r\nbcdDevice 1.00\r\niManufacturer 1 Silicon Labs\r\n<strong>iProduct 2 CP2102 USB to UART Bridge Controller<\/strong>\r\niSerial 3 0001\r\nbNumConfigurations 1\r\nConfiguration Descriptor:\r\nbLength 9\r\nbDescriptorType 2\r\nwTotalLength 32\r\nbNumInterfaces 1\r\nbConfigurationValue 1\r\niConfiguration 0 \r\nbmAttributes 0x80\r\n(Bus Powered)\r\nMaxPower 100mA\r\nInterface Descriptor:\r\nbLength 9\r\nbDescriptorType 4\r\nbInterfaceNumber 0\r\nbAlternateSetting 0\r\nbNumEndpoints 2\r\nbInterfaceClass 255 Vendor Specific Class\r\nbInterfaceSubClass 0 \r\nbInterfaceProtocol 0 \r\niInterface 2 CP2102 USB to UART Bridge Controller\r\nEndpoint Descriptor:\r\nbLength 7\r\nbDescriptorType 5\r\n<strong>bEndpointAddress 0x81 EP 1 IN<\/strong>\r\n<strong>bmAttributes 2<\/strong>\r\n<strong>Transfer Type Bulk<\/strong>\r\n<strong>Synch Type None<\/strong>\r\n<strong>Usage Type Data<\/strong>\r\n<strong>wMaxPacketSize 0x0040 1x 64 bytes<\/strong>\r\nbInterval 0\r\nEndpoint Descriptor:\r\nbLength 7\r\nbDescriptorType 5\r\n<strong>bEndpointAddress 0x01 EP 1 OUT<\/strong>\r\n<strong>bmAttributes 2<\/strong>\r\n<strong>Transfer Type Bulk<\/strong>\r\n<strong>Synch Type None<\/strong>\r\n<strong>Usage Type Data<\/strong>\r\n<strong>wMaxPacketSize 0x0040 1x 64 bytes<\/strong>\r\nbInterval 0\r\nDevice Status: 0x0000\r\n(Bus Powered)<\/pre>\n<p>&nbsp;<\/p>\n<p>The fact it says it is a controller is encouraging, but, that disappointment shall have to wait until tomorrow. It&#8217;s late and I&#8217;m tired.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Been a long time since I last touched this. I did quite a bit of work before packing up and heading out to a shiny new client out of state. Sadly I only brought the latest piece of code with me which has nothing to do with Qt. The Qt based stuff migrated to QML since I needed to get more familiar with that for my upcoming project. I also crawled towards being able to &hellip; <a title=\"Qt and USB &#8211; Pt. 6\" class=\"bnm-read-more\" href=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/\"><span class=\"screen-reader-text\">Qt and USB &#8211; Pt. 6<\/span>Read more<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[159,1607],"class_list":["post-3015","post","type-post","status-publish","format-standard","hentry","category-information-technology","tag-qt","tag-usb","bnm-entry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Qt and USB - Pt. 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\/information-technology\/qt-and-usb-pt-6\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Qt and USB - Pt. 6 &#8211; Logikal Blog\" \/>\n<meta property=\"og:description\" content=\"Been a long time since I last touched this. I did quite a bit of work before packing up and heading out to a shiny new client out of state. Sadly I only brought the latest piece of code with me which has nothing to do with Qt. The Qt based stuff migrated to QML since I needed to get more familiar with that for my upcoming project. I also crawled towards being able to &hellip; Qt and USB &#8211; Pt. 6Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/\" \/>\n<meta property=\"og:site_name\" content=\"Logikal Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-01-09T04:20:46+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg\" \/>\n<meta name=\"author\" content=\"seasoned_geek\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"seasoned_geek\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/\"},\"author\":{\"name\":\"seasoned_geek\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"headline\":\"Qt and USB &#8211; Pt. 6\",\"datePublished\":\"2019-01-09T04:20:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/\"},\"wordCount\":831,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/c077f770ade13de7faaf616c3eac6842\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/IMG_2019-01-01_09-17-24-768x1024.jpeg\",\"keywords\":[\"Qt\",\"usb\"],\"articleSection\":[\"Information Technology\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/\",\"name\":\"Qt and USB - Pt. 6 &#8211; Logikal Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/IMG_2019-01-01_09-17-24-768x1024.jpeg\",\"datePublished\":\"2019-01-09T04:20:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#primaryimage\",\"url\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/IMG_2019-01-01_09-17-24-768x1024.jpeg\",\"contentUrl\":\"http:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/wp-content\\\/uploads\\\/2019\\\/01\\\/IMG_2019-01-01_09-17-24-768x1024.jpeg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/information-technology\\\/qt-and-usb-pt-6\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Qt and USB &#8211; Pt. 6\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/\",\"name\":\"Logikal Blog\",\"description\":\"For people with attention spans 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\"],\"url\":\"https:\\\/\\\/www.logikalsolutions.com\\\/wordpress\\\/author\\\/seasoned_geek\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Qt and USB - Pt. 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\/information-technology\/qt-and-usb-pt-6\/","og_locale":"en_US","og_type":"article","og_title":"Qt and USB - Pt. 6 &#8211; Logikal Blog","og_description":"Been a long time since I last touched this. I did quite a bit of work before packing up and heading out to a shiny new client out of state. Sadly I only brought the latest piece of code with me which has nothing to do with Qt. The Qt based stuff migrated to QML since I needed to get more familiar with that for my upcoming project. I also crawled towards being able to &hellip; Qt and USB &#8211; Pt. 6Read more","og_url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/","og_site_name":"Logikal Blog","article_published_time":"2019-01-09T04:20:46+00:00","og_image":[{"url":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg","type":"","width":"","height":""}],"author":"seasoned_geek","twitter_card":"summary_large_image","twitter_misc":{"Written by":"seasoned_geek","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#article","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/"},"author":{"name":"seasoned_geek","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"headline":"Qt and USB &#8211; Pt. 6","datePublished":"2019-01-09T04:20:46+00:00","mainEntityOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/"},"wordCount":831,"commentCount":0,"publisher":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#\/schema\/person\/c077f770ade13de7faaf616c3eac6842"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#primaryimage"},"thumbnailUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg","keywords":["Qt","usb"],"articleSection":["Information Technology"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/","url":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/","name":"Qt and USB - Pt. 6 &#8211; Logikal Blog","isPartOf":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#primaryimage"},"image":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#primaryimage"},"thumbnailUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg","datePublished":"2019-01-09T04:20:46+00:00","breadcrumb":{"@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#primaryimage","url":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg","contentUrl":"http:\/\/www.logikalsolutions.com\/wordpress\/wp-content\/uploads\/2019\/01\/IMG_2019-01-01_09-17-24-768x1024.jpeg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/information-technology\/qt-and-usb-pt-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.logikalsolutions.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"Qt and USB &#8211; Pt. 6"}]},{"@type":"WebSite","@id":"https:\/\/www.logikalsolutions.com\/wordpress\/#website","url":"https:\/\/www.logikalsolutions.com\/wordpress\/","name":"Logikal Blog","description":"For people with attention spans 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"],"url":"https:\/\/www.logikalsolutions.com\/wordpress\/author\/seasoned_geek\/"}]}},"_links":{"self":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3015","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3015"}],"version-history":[{"count":0,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/posts\/3015\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.logikalsolutions.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}