<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Barcode &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/barcode/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Mon, 07 Jul 2025 20:05:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Windows Barcode and HTMLViewer Updates</title>
		<link>https://blog.xojo.com/2025/07/08/barcode-and-htmlviewer-updates/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 08 Jul 2025 18:01:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2025r2]]></category>
		<category><![CDATA[Barcode]]></category>
		<category><![CDATA[DesktopHTMLViewer]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=15023</guid>

					<description><![CDATA[The Barcode Scanner received a significant upgrade in Xojo 2025r2 on Windows, with support for more aspect ratios and video mirroring. The DesktopHTMLViewer also saw&#8230;]]></description>
										<content:encoded><![CDATA[
<p>The Barcode Scanner received a significant upgrade in Xojo 2025r2 on Windows, with support for more aspect ratios and video mirroring. The DesktopHTMLViewer also saw improvements with the ability to print to PDF.</p>



<h2 class="wp-block-heading">Consistent Barcode Scanning Experience</h2>



<p>Not to be outdone, the Barcode scanning experience on Windows has been brought up to par with other platforms, now including support for video mirroring in the scanning window.  Also, if you were seeing a “squished” video before, we’ve now added support for a wider range of video devices and aspect ratios.</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="964" height="842" src="https://blog.xojo.com/wp-content/uploads/2025/06/Webcam1.png" alt="" class="wp-image-15031" srcset="https://blog.xojo.com/wp-content/uploads/2025/06/Webcam1.png 964w, https://blog.xojo.com/wp-content/uploads/2025/06/Webcam1-300x262.png 300w, https://blog.xojo.com/wp-content/uploads/2025/06/Webcam1-768x671.png 768w" sizes="(max-width: 964px) 100vw, 964px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full"><img decoding="async" width="964" height="842" src="https://blog.xojo.com/wp-content/uploads/2025/06/Webcam2.png" alt="" class="wp-image-15032" srcset="https://blog.xojo.com/wp-content/uploads/2025/06/Webcam2.png 964w, https://blog.xojo.com/wp-content/uploads/2025/06/Webcam2-300x262.png 300w, https://blog.xojo.com/wp-content/uploads/2025/06/Webcam2-768x671.png 768w" sizes="(max-width: 964px) 100vw, 964px" /></figure>
</div>
</div>



<h2 class="wp-block-heading">DesktopHTMLViewer Improvements</h2>



<p>Thanks to some feedback we received, the DesktopHTMLViewer now supports raising the FocusReceived, FocusLost, KeyDown, and KeyUp events.</p>



<p>While DesktopHTMLViewer.Print works well, there are times you might want to go straight to PDF. If you&#8217;d rather skip the default print prompts, you can now use the new <code>DesktopHTMLViewer.PrintToPDF(file As FolderItem)</code> method to print HTML content directly to a PDF file. Just pass in the destination file and everything else works just like the regular Print method, including the PrintComplete event firing on success.</p>



<p>We&#8217;re always working to make Xojo better, and your feedback plays a big part in that. So from all of us here at Xojo—thank you! We truly appreciate your input as we continue to improve the product for you and everyone who uses it.</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Spotlight On: Raximus Studios</title>
		<link>https://blog.xojo.com/2024/11/12/spotlight-on-raximus-studios/</link>
		
		<dc:creator><![CDATA[Alyssa Foley]]></dc:creator>
		<pubDate>Tue, 12 Nov 2024 17:00:00 +0000</pubDate>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Barcode]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[POS]]></category>
		<category><![CDATA[QR Code]]></category>
		<category><![CDATA[Spotlight On]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=13940</guid>

					<description><![CDATA[Spotlight On posts focus on Xojo community members. We’ll use this space to tell the stories of people using Xojo, share amazing Xojo-made apps and&#8230;]]></description>
										<content:encoded><![CDATA[
<p><em>Spotlight On posts focus on Xojo community members. We’ll use this space to tell the stories of people using Xojo, share amazing Xojo-made apps and spread awareness of community resources. If you have an app, a project or a person you want to see featured in Spotlight On,&nbsp;<a href="mailto:hello@xojo.com" target="_blank" rel="noreferrer noopener">tell us about it</a>!</em></p>



<p>For Geoff Haynes, his work as a developer started at home with BASIC on a Commodore 64, that led him to PHP and Microsoft SQL Server for some web development, which then lead him to traveling the US amusement park circuit to install the hardware and software for point of sale (POS) systems. Today, he is settled and running <a href="https://raximusstudios.com">Raximus Studios</a>, using Xojo and enjoying doing what he knows best.</p>



<h2 class="wp-block-heading">Q&amp;A with Geoff Haynes of Raximus Studios</h2>



<h3 class="wp-block-heading">Mac, Windows or Linux?</h3>



<p>Windows for anything requiring a UI. Linux for everything else. Sadly, I do not own a Mac but my iPhone is my daily driver for most tasks.</p>



<h3 class="wp-block-heading">What&#8217;s next on your &#8220;Learn Next&#8221; list?</h3>



<p>I spent a couple months early in 2023 learning about electrical engineering and designing circuits. I started building an EEPROM bios programming circuit but did not have time to finish it. I would like to learn more about electrical engineering and circuit design in the future.</p>



<h3 class="wp-block-heading">What programming moments made you think “Wow, I love my job so much.”</h3>



<ul class="wp-block-list">
<li>The first time I used the Xojo crypto module to send encrypted data back and forth to an Android app written in Java.</li>



<li>The first time I compiled a class library in C# and used declares in Xojo to access the functions inside of it.</li>
</ul>



<h3 class="wp-block-heading">What is something that has surprised you about coding in the last 10 years?</h3>



<p>The major shift to web-based cloud systems replacing software running locally on computers.</p>



<h3 class="wp-block-heading">What is a cool piece of software more people should know about?</h3>



<ul class="wp-block-list">
<li>I think <a href="https://webyog.com/product/sqlyog/">SQLyog</a> is a great tool for MariaDB. I tried many different tools used to manage MariaDB and SQLyog is my favorite.</li>



<li><a href="https://www.voidtools.com">Voidtools Everything</a> is a great program I use a lot to quickly find files on my development machine.</li>



<li><strong>By far, <a href="https://www.nuget.org/packages/UnmanagedExports">UnmanagedExports</a> by Robert Giesecke is the most useful tool I use in every new software project.</strong></li>
</ul>



<h3 class="wp-block-heading">What&#8217;s the most&nbsp;interesting thing you worked on recently?</h3>



<p>Earlier this year I wrote a C# class library that can take image files and convert the binary data to work with ESCPOS commands to print perfect graphics using receipt printers in Xojo. That was really challenging and satisfying when I got it working perfectly.</p>



<h3 class="wp-block-heading">Music or no music while coding?</h3>



<p>The answer depends on what I am coding. If I am designing UI or server backend code then no music. If I am working on tedious tasks e.g. threading database queries then it’s usually Radiohead&#8217;s <em>A Moon Shaped Pool</em> or the <em>Tron: Legacy</em> soundtrack playing in the background.</p>



<h3 class="wp-block-heading">When did you start using Xojo?</h3>



<p>In 2009 I was offered a position to develop different types of software for a local IT business that was interested in writing custom applications for their clients. This is how I started using Xojo (then Real Studio). For the next several years I wrote many different types of custom applications for local businesses in Real Studio. Some examples include an office check-in manager, a contest management system, I also developed a system that was designed to work with grocery store membership cards. In addition to Real Studio, I also wrote many different types of mobile Android applications in Java. In my spare time I worked on custom database report applications in Real Studio for clients that I met during my time working in the POS industry. </p>



<h3 class="wp-block-heading">What did you first build with Xojo?</h3>



<p>In 2016 after I parted ways with the local IT company, I decided to start Raximus Studios when I had the idea to design an arcade debit card system in Xojo that could take advantage of the cheaper IoT circuit boards that had become available.<br>I integrated the arcade debit system with other existing POS systems that I knew from my years of subcontractor work in the POS amusement industry. A few other systems I have designed in Xojo that are currently in use at locations include:</p>



<ul class="wp-block-list">
<li>&nbsp;An unattended gate access system that controls turnstile entry through barcode and QR scans as well as biometrics.&nbsp;</li>



<li>A media control system that uses IR scanning devices to control AV devices like the type of systems used to control multiple monitors in restaurants and bowling alleys.&nbsp;</li>



<li>A cloud-based gate security system used to design and create photo ID cards that are scanned and verified for gate entry.&nbsp;</li>
</ul>



<h3 class="wp-block-heading">What are you building with Xojo today?</h3>



<p>In 2023 I started work on my own amusement and entertainment POS system written in Xojo. This new POS system RAXPOS will be launching in early 2025 at the first location.&nbsp;</p>



<p><em>Thank you to Geoff Haynes for answering questions and sharing his experience with Xojo with the community. You can contact Geoff </em>at <a href="https://twitter.com/raximusstudios">@raximusstudios</a><em> and learn more about his projects at Raximus Studios</em><em>.  If you have an app, a project or a person you want to see featured in Spotlight On,&nbsp;<a href="mailto:hello@xojo.com" target="_blank" rel="noreferrer noopener">tell us about it</a>!</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Create and Scan Barcodes and QR Codes on Mac, Windows and iOS</title>
		<link>https://blog.xojo.com/2024/03/26/create-and-scan-barcodes-and-qr-codes-on-mac-windows-and-ios/</link>
		
		<dc:creator><![CDATA[Javier Menendez]]></dc:creator>
		<pubDate>Tue, 26 Mar 2024 15:00:00 +0000</pubDate>
				<category><![CDATA[Cross-Platform]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2024r1]]></category>
		<category><![CDATA[Barcode]]></category>
		<category><![CDATA[Multi-Platform Development]]></category>
		<category><![CDATA[QR Code]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=12742</guid>

					<description><![CDATA[Xojo 2024r1 introduces the Barcode class for Windows, macOS and iOS. Now you can create barcodes and QR codes and scan up to twelve other types of codes with your Mac, Windows or iOS cameras. In addition, you can now identify codes from an image provided as a parameter.]]></description>
										<content:encoded><![CDATA[
<p>Xojo 2024r1 introduces the Barcode class for Windows, macOS and iOS. Now you can create barcodes and QR codes and scan up to twelve other types of codes with your Mac, Windows or iOS cameras. In addition, you can now identify codes from an image provided as a parameter.</p>



<span id="more-12742"></span>



<h2 class="wp-block-heading">Generate Codes</h2>



<p>The ability to generate codes and identify them from images is available as a shared method for the indicated platforms, in desktop and console apps. The latter is interesting because it means that you can use this functionality in web apps deployed on Windows or Mac servers.</p>



<p>Creating QR or Bar128 codes couldn&#8217;t be simpler. Since it uses a shared method, it is not even necessary to have previously created an instance of the class, you only need to invoke the method:</p>



<pre class="wp-block-code"><code>Barcode.Image(value As String, width As Integer, height As Integer, type As Barcode.Types = Barcode.Types.QR) As Picture</code></pre>



<p>Where the expected parameters are the following:</p>



<ul class="wp-block-list">
<li><strong>Value:</strong> Source text string that will be converted to the indicated code type</li>



<li><strong>Width:</strong> Width of the resulting image with the generated code</li>



<li><strong>Height:</strong> Height of the resulting image with the generated code</li>



<li><strong>Type:</strong> The type of code you want to generate. It can be QR or Bar128; these values are available in the Barcode.Types enumerator</li>
</ul>



<p>Once the method is invoked, you will obtain an image (Picture) that you can use in your app; or you will receive an InvalidArgumentException if some of the parameters provided are invalid, such as passing an empty text string as the data source.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img decoding="async" width="990" height="930" src="https://blog.xojo.com/wp-content/uploads/2024/03/CreateCode.gif" alt="" class="wp-image-12743"/></figure>
</div>


<p>For example, the following line of code generates a 120 x 120 image corresponding to a QR code with the text provided:</p>



<pre class="wp-block-code"><code>Var p As Picture = Barcode.Image("Xojo Rocks!", 120, 120, Barcode.Types.QR)</code></pre>



<h2 class="wp-block-heading">Recognize Codes in Images</h2>



<p>In the same way it is possible to generate code images from text, it is also possible to recognize up to twelve different types of codes from an image. To do this we will use another shared method of the Barcode class:</p>



<pre class="wp-block-code"><code>Barcode.FromImage(image As Picture) As String()</code></pre>



<p>As you can see, in this case the method will return an array of Strings with the values of the recognized codes. It is possible that the image contains more than one code; but it is also possible that no code could be recognized in the provided image, so it is advisable to check the limits of the received array before proceeding.</p>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="990" height="930" src="https://blog.xojo.com/wp-content/uploads/2024/03/CodeFromImage.gif" alt="" class="wp-image-12744"/></figure>
</div>


<p>For example, this line of code will recognize the codes available in the MyPicture image and return the values in the RecognizedCodes() array:</p>



<pre class="wp-block-code"><code>Var RecognizedCodes() As String = Barcode.FromImage(MyPicture)</code></pre>



<h2 class="wp-block-heading">Scan Codes</h2>



<p>Scanning QR codes (or any of the other supported codes) on desktop is only available for macOS and Windows platforms. This is due to desktop presenting a user interface where you can preview the image captured by the selected camera. You can select the camera to use to scan from those connected to the computer (including, for example, iOS devices in the case of Mac, through Continuity; or Android devices paired with your Windows computer). In the case of Mac, the ability to scan images is only available using macOS 10.15 or higher.</p>



<p>To scan codes directly using any of the cameras connected to the computer it is necessary to have previously created an instance of the Barcode class (for example, drag the class from the IDE Library onto the tray area in the Layout Editor window):</p>



<figure class="wp-block-image is-style-default"><img loading="lazy" decoding="async" width="2798" height="1768" src="https://blog.xojo.com/wp-content/uploads/2024/03/Barcode.png" alt="" class="wp-image-12745" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/Barcode.png 2798w, https://blog.xojo.com/wp-content/uploads/2024/03/Barcode-300x190.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/Barcode-1024x647.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/Barcode-768x485.png 768w, https://blog.xojo.com/wp-content/uploads/2024/03/Barcode-1536x971.png 1536w, https://blog.xojo.com/wp-content/uploads/2024/03/Barcode-2048x1294.png 2048w" sizes="auto, (max-width: 2798px) 100vw, 2798px" /></figure>



<p>Doing so will add it to the Project Browser where we can select it and implement any of the three available Event Handlers:</p>



<ul class="wp-block-list">
<li><strong>ScanCancelled:</strong> The user has canceled the code scanning operation, such as by closing the presented UI window</li>



<li><strong>ScanCompleted:</strong> Receive the value as String corresponding to the code detected by the camera</li>



<li><strong>ScanFailed:</strong> Raised when some type of error has occurred, such as the fact that no camera is detected</li>
</ul>



<p>To display the code scanning UI, invoke the StartScan method on the created Barcode instance. For example:</p>



<pre id="xojo" class="wp-block-code"><code>Barcode1.StartScan</code></pre>


<div class="wp-block-image is-style-default">
<figure class="aligncenter"><img loading="lazy" decoding="async" width="1424" height="1148" src="https://blog.xojo.com/wp-content/uploads/2024/03/ScanUI.png" alt="" class="wp-image-12748" srcset="https://blog.xojo.com/wp-content/uploads/2024/03/ScanUI.png 1424w, https://blog.xojo.com/wp-content/uploads/2024/03/ScanUI-300x242.png 300w, https://blog.xojo.com/wp-content/uploads/2024/03/ScanUI-1024x826.png 1024w, https://blog.xojo.com/wp-content/uploads/2024/03/ScanUI-768x619.png 768w" sizes="auto, (max-width: 1424px) 100vw, 1424px" /></figure>
</div>


<p>The scan UI does not close automatically when a code is recognized to allow scanning a series of codes (such as in the case of inventory), so it is also possible to stop the operation by code by calling the StopScan method. For example, you can include this line of code in the ScanCompleted event of the Barcode1 instance after the received value has been processed:</p>



<pre id="xojo" class="wp-block-code"><code>me.StopScan</code></pre>



<p>As expected, invoking the StopScan method from code will close the code scanning UI.</p>



<figure class="wp-block-video"><video controls src="https://blog.xojo.com/wp-content/uploads/2024/03/CodeScan.mp4"></video></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Now you can create all types of applications on macOS, Windows and iOS with the ability to generate and scan QR codes, Barcodes and other types of codes, opening up a wide field of possibilities for Xojo users.</p>



<p><em>Javier Menendez is an engineer at Xojo and has been using Xojo since 1998. He lives in Castellón</em>, <em>Spain and hosts regular Xojo hangouts en español. Ask Javier questions on Twitter at <a href="https://twitter.com/xojoes" target="_blank" rel="noreferrer noopener">@XojoES</a> or on the <a href="https://forum.xojo.com/u/javier_menendez/summary" target="_blank" rel="noreferrer noopener">Xojo Forum</a>.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>
]]></content:encoded>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2024/03/CodeScan.mp4" length="2575174" type="video/mp4" />

			</item>
	</channel>
</rss>
