<?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>シリアル通信 | リョクちゃの電脳日記</title>
	<atom:link href="https://dreamparadaisu.com/tag/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1/feed/" rel="self" type="application/rss+xml" />
	<link>https://dreamparadaisu.com</link>
	<description>今まで学んできたことや、新たに学んだこと、趣味を通して様々な人と共有できたらなと思いはじめた電脳日記。</description>
	<lastBuildDate>Tue, 03 May 2022 07:29:58 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<atom:link rel='hub' href='https://dreamparadaisu.com/?pushpress=hub'/>
<site xmlns="com-wordpress:feed-additions:1">180489529</site>	<item>
		<title>【TeraTerm】シリアル通信対応のハンディスキャナからデータを受信する</title>
		<link>https://dreamparadaisu.com/tool_2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=tool_2</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Fri, 25 Jun 2021 14:01:43 +0000</pubDate>
				<category><![CDATA[日常]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[シリアル通信]]></category>
		<category><![CDATA[パソコン]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=2533</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、Tera Termを使って実際にシリアル通信対応のハンディスキャナと 通信を行い、読み取ったバーコードの情報を受け取れるか検証したので、 紹介していきます。 &#160; ...</p>
The post <a href="https://dreamparadaisu.com/tool_2/">【TeraTerm】シリアル通信対応のハンディスキャナからデータを受信する</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、Tera Termを使って実際にシリアル通信対応のハンディスキャナと</p>
<p>通信を行い、読み取ったバーコードの情報を受け取れるか検証したので、</p>
<p>紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみにTera Termのインストールについてはこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/tool_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_11-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_11-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_11-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_11-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/tool_1/" class="blog-card-title-link">【ツール紹介】TeraTermをインストールしてシリアル通信テストを行う～インストール編～</a></div><div class="blog-card-excerpt">TeraTermを使ってVB.Netで作成したシリアル通信テストアプリケーションをテストするためにTeraTermというツールをインストールしたので方法を紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/tool_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/tool_1/" alt="" /></a></div><div class="blog-card-date">2021-06-24 15:54</div></div></div>
<p>&nbsp;</p>
<p style="text-align: center"><a href="https://px.a8.net/svt/ejp?a8mat=3HE8CV+97114I+4OPM+5Z6WX" rel="nofollow"> <img decoding="async" src="https://www27.a8.net/svt/bgt?aid=210616015556&amp;wid=001&amp;eno=01&amp;mid=s00000021865001004000&amp;mc=1" alt="" width="468" height="60" border="0"></a> <img decoding="async" src="https://www17.a8.net/0.gif?a8mat=3HE8CV+97114I+4OPM+5Z6WX" alt="" width="1" height="1" border="0"></p>
<p>&nbsp;</p>
<h1>ハンディスキャナ</h1>
<p>&nbsp;</p>
<p>ハンディスキャナはレジの横についている、</p>
<p><span class="marker-under">バーコードやQRコードを読取ってくれる機械</span>です。</p>
<p>&nbsp;</p>
<p>バーコードの読み取り機能は、スマートフォンにもついていますね。</p>
<p>ですが、ハンディスキャナはコロナの影響もあって最近ではあらゆるところで</p>
<p>見かけるのではないでしょうか？</p>
<p>&nbsp;</p>
<p>今回は、シリアル通信に対応しているハンディスキャナを使って、</p>
<p>データの受信の検証をしています。</p>
<p>&nbsp;</p>
<p>シリアル通信に対応しているハンディスキャナは、</p>
<p>プログラムによる制御もできるのでアプリケーション開発では、</p>
<p>よく使うハードウェアとして、筆者の中では挙げられます。</p>
<p>&nbsp;</p>
<p>使用したハンディスキャナは、Honeywell社から販売されている、</p>
<p>Xeonシリーズの1900になります。</p>
<p>&nbsp;</p>
<p>これは、1次元コード(バーコード)や2次元コード(QR)の読み取りが可能です。</p>
<p>また、OCR読み取り機能も付いているので、文字を認識することもできます。</p>
<p>&nbsp;</p>

<p>&nbsp;</p>
<h1>Tera Termを使った通信</h1>
<p>ここからは既にTera Termがインストールされている前提で進めていきます。</p>
<p>&nbsp;</p>
<p>まず、Tera Termを起動します。</p>
<p>起動すると、新しい接続と書かれたウィンドウが立ち上がっているかと思います。</p>
<figure id="attachment_mmd_2535" class="wp-block-image aligncenter"><img decoding="async" width="655" height="482" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_12.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>デフォルトではTCP/IPにチェックが入っているので、</p>
<p>シリアルにチェックを入れます。</p>
<p>&nbsp;</p>
<h2>ポートの設定</h2>
<p>&nbsp;</p>
<p>チェックを入れ、ポートのプルダウンを押し、</p>
<p>パソコンに接続されているスキャナのポートを選択します。</p>
<figure id="attachment_mmd_2537" class="wp-block-image aligncenter"><img decoding="async" width="653" height="478" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_14.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<figure id="attachment_mmd_2536" class="wp-block-image aligncenter"><img decoding="async" width="653" height="484" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_13.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>ここでは<span class="marker-under"><strong>COM6</strong></span>に、Xeon 1900が割り当てられています。</p>
<p>ユーザによってCOMの割り当ては変わりますので、気を付けてください。</p>
<p>設定ができたら、OKボタンを押します。</p>
<p>&nbsp;</p>
<p>問題なく接続ができると、以下の画面が表示されます。</p>
<figure id="attachment_mmd_2538" class="wp-block-image aligncenter"><img decoding="async" width="659" height="487" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_15.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h2>通信条件の確認</h2>
<p>&nbsp;</p>
<p>接続ができたら、まずは通信条件の確認を行います。</p>
<p>ここでいう通信条件は、</p>
<ul>

<li>通信速度(ボーレート)</li>

<li>データビット</li>

<li>パリティ</li>

<li>ストップビット</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>Tera Termで確認するには、設定タブをのシリアルポートを選択します。</p>
<figure id="attachment_mmd_2539" class="wp-block-image aligncenter"><img decoding="async" width="654" height="484" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_16.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>選択すると、以下の画面が表示されます。</p>
<p>この画面に書いてある情報が、現在繋がれているスキャナの通信条件になります。</p>
<figure id="attachment_mmd_2540" class="wp-block-image aligncenter"><img decoding="async" width="656" height="484" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_17.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p><span class="red-under">スピードと書かれているのが、通信速度にあたります</span>。</p>
<p>&nbsp;</p>
<h2>読み取ったデータを受信</h2>
<p>Tera Term上の通信条件がハンディスキャナとの通信条件が一致していれば、</p>
<p>データは正しく受診することができます。</p>
<p>&nbsp;</p>
<p>受診ができない原因として挙げられるのが、</p>
<ul>

<li>通信速度が一致していない</li>

<li>COMが違っている</li>

<li>デリミタの設定が違う</li>
</ul>
<p>といった原因が考えられます。</p>
<p>※たまにパソコンと接続しているケーブルが抜けていたということもあります。</p>
<p>&nbsp;</p>
<p>読み取る対象は、QRコードとします。</p>
<figure id="attachment_mmd_2543" class="wp-block-image aligncenter"><img decoding="async" width="680" height="288" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_18.png" class="attachment-680x433 size-680x433" alt="" loading="lazy" align="center" /></figure>
<p>右のQRコードを読んで、Tera Term上に表示されれば、受信成功です。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_2544" class="wp-block-image aligncenter"><img decoding="async" width="680" height="288" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_19.png" class="attachment-680x434 size-680x434" alt="" loading="lazy" align="center" /></figure>
<p>受信に成功すると、読み取った情報が表示されます。</p>
<p>今回は、QRコードから<span class="red-under"><strong>12345678</strong></span>を読取り、Tera Termで受信、表示をしています。</p>
<p>&nbsp;</p>
<p>再度読み取る場合は、<span class="marker-under"><strong>バッファのクリア</strong></span>をして行います。</p>
<p>バッファのクリアは、編集タブをクリックし、バッファのクリアを選択することでできます。</p>
<figure id="attachment_mmd_2545" class="wp-block-image aligncenter"><img decoding="async" width="656" height="501" src="https://dreamparadaisu.com/wp-content/uploads/2021/06/teraterm_20.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>以上が、受信の検証になります。</p>
<p>&nbsp;</p>
<p>シリアル通信に関しては、こちらもご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_53/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_53/" class="blog-card-title-link">【VB.Net】ハードウェアとシリアル通信をする方法</a></div><div class="blog-card-excerpt">PCと何らかの機器をシリアル通信(RS-232C、RS-422やRS-485)をし、データを受信したい場合や機器を制御したい場合は、IoT時代の到来よりも前に行われてきました。今回はVB.Netで何らかの機器とシリアル通信をする方法を簡単に紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_53/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_53/" alt="" /></a></div><div class="blog-card-date">2021-01-16 17:45</div></div></div>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>ハンディスキャナを使ってTera Termで読み取った情報が受信でき、</p>
<p>表示されるかといった検証を行いました。</p>
<p>&nbsp;</p>
<p>シリアル機器の接続テストやデータ受信テストにTera Termを使うと便利です。</p>
<p>&nbsp;</p>
<p>実際にここで接続ができれば、アプリケーションでも通信条件さえ合わせてしまえば、</p>
<p>通信はできるのでアプリケーションでの検証の工数が少し削減できます。</p>
<p>&nbsp;</p>
<p>興味のある方は一度試してもらえたらなと思います。</p>
<p>&nbsp;</p>
<p>最後までお読みいただきありがとうございます。</p>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="2533"
					data-ulike-nonce="97494a7802"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_2533"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/tool_2/">【TeraTerm】シリアル通信対応のハンディスキャナからデータを受信する</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2533</post-id>	</item>
		<item>
		<title>【VB.Net】ArduinoProMini互換機とCdsを使って明るさをグラフ化してみた。</title>
		<link>https://dreamparadaisu.com/visualbasic_55/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_55</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Wed, 20 Jan 2021 14:57:50 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[シリアル通信]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1717</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は前回の記事の応用例といった形になります。 &#160; ArduinoProMini互換機とCdsと呼ばれる明るさセンサを用いて、 室内の明るさを計測し、Cdsからの値をAr...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_55/">【VB.Net】ArduinoProMini互換機とCdsを使って明るさをグラフ化してみた。</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は前回の記事の応用例といった形になります。</p>
<p>&nbsp;</p>
<p>ArduinoProMini互換機とCdsと呼ばれる明るさセンサを用いて、</p>
<p>室内の明るさを計測し、Cdsからの値をArduinoProMini互換機を経由し</p>
<p>シリアル通信で受信します。</p>
<p>&nbsp;</p>
<p>受信した値をリアルタイムでチャートコントロールに表示するといった内容の</p>
<p>実験をしてみましたので紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_54/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_54/" class="blog-card-title-link">【VB.Net】Arduinoとシリアル通信してみた～ArduinoProMini互換機～</a></div><div class="blog-card-excerpt">Arduinoとは、イタリアで産まれた教育用のマイコンボードです。今回はArdunioProMiniの互換機とされるAE-ATMEGA328-MINIを使って、VB.Netでシリアル通信をし、ATMEGA328MINIからデータを受信する方法を紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_54/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_54/" alt="" /></a></div><div class="blog-card-date">2021-01-19 01:43</div></div></div>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" rel="nofollow">
<img decoding="async" class="aligncenter" src="https://www27.a8.net/svt/bgt?aid=220503664100&amp;wid=001&amp;eno=01&amp;mid=s00000015623001010000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。</p>
<p>最初の手順については、下記記事をご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-title-link">VisualStudioで始めるWindowsアプリケーション開発</a></div><div class="blog-card-excerpt">VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。
以前に、簡単にざっくりと教える機会があった...</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/vb_aplication_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/vb_aplication_1/" alt="" /></a></div><div class="blog-card-date">2020-08-22 17:45</div></div></div>
<h2>Cdsとは</h2>
<p>硫化カドミウムセルと呼ばれ、<span class="marker-under">硫黄(元素記号：S)とカドミウム(cd)の化合物</span>になります。</p>
<p>下図の表面の受光部分に光を受けると明るさによって、抵抗値を低くする特性があります。</p>
<figure id="attachment_mmd_1718" class="wp-block-image aligncenter"><img decoding="async" width="370" height="277" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">Cdsセンサ</p>
<p>特徴としては、</p>
<ul>

<li>受光した際の反応が遅い</li>

<li>応答性を必要とする用途には不得手</li>
</ul>
<p>といった特徴が挙げられます。</p>
<p>特性を利用して、暗いときに自動的に光っていく<span class="marker-under">自動照明灯などに用いられたりしています</span>。</p>
<h2>CdsとArduinoProMini互換機の接続</h2>
<p>ArduinoProMini互換機とCdsは以下のように接続しました。</p>
<figure id="attachment_mmd_1719" class="wp-block-image aligncenter"><img decoding="async" width="792" height="660" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>Cdsは光を効率よく受け取れるよう黒い筒を被せています。</p>
<p>互換機のA01端子にCdsを接続します。</p>
<p>A01端子はアナログピンと呼ばれ、Cdsで受け取った値をアナログ値で取得します。</p>
<p>互換機はA0～A7までの8ピンが搭載されています。</p>
<h2>フォームの作成</h2>
<p>今回は以下のようなフォームを作成します。</p>
<figure id="attachment_mmd_1720" class="wp-block-image aligncenter"><img decoding="async" width="680" height="431" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_4.png" class="attachment-680x648 size-680x648" alt="" loading="lazy" align="center" /></figure>
<p>各1～8までのコントロールの名称やテキストは以下のように設定しています。</p>

<table id="tablepress-39" class="tablepress tablepress-id-39">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th><th class="column-4">テキスト</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">Label</td><td class="column-3">Label1</td><td class="column-4">COM Port</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">Label</td><td class="column-3">Label2</td><td class="column-4">INPUT</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">ComboBox</td><td class="column-3">cbComPort</td><td class="column-4"></td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">RichTextBox</td><td class="column-3">rtxSerial</td><td class="column-4"></td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">Chart</td><td class="column-3">chPhoto</td><td class="column-4"></td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">Label</td><td class="column-3">lblTimer</td><td class="column-4">Timer:off</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">Button</td><td class="column-3">btConnect</td><td class="column-4">Connect</td>
</tr>
<tr class="row-9">
	<td class="column-1">8</td><td class="column-2">Button</td><td class="column-3">btClear</td><td class="column-4">CLEAR</td>
</tr>
</tbody>
</table>

<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>※　Windows7 8 8.1でも動作はできますが、</p>
<p>画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>ArudinoProMini互換機に接続されたCdsの計測値をシリアル通信を介し、</p>
<p>受信することでrtxSerialとchPhotoにそれぞれ表示できることを目的とします。</p>
<p>rtxSerialでは受け取った値を表示、chPhotoでは値を折れ線グラフ化することとします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<h2>ArduioProMini互換機のスケッチ</h2>
<p>AruduinoIDEを使用して、スケッチを作成していきます。</p>
<p>スケッチは前回作成したスケッチを使用していきます。</p>
<h3>定数・変数の宣言</h3>
<p>Cdsがつながっているピン情報を定数、Cdsからの値を記憶するのを変数として</p>
<p>それぞれ宣言します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">const int Cds = 1;  // Cdsがつながっているピン
int val = 0;        // Cdsからの値を記憶する変数</pre><p>
&nbsp;</p>
<h3>setup()ブロックでの処理</h3>
<p>シリアルポートの設定を行います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">void setup()
{
  Serial.begin(9600);  //シリアルポートを9600bpsで開く
}</pre><p>
&nbsp;</p>
<h3>loop()ブロックでの処理</h3>
<p>Cdsからの値を変数で受け取ります。</p>
<p>Cdsの値を受け取るには、</p>
<div class="information">analogRead(ピン番号)</div>
<p>と記述することで受け取ることができます。</p>
<p>&nbsp;</p>
<p>ArduinoProMiniでは、0～1023の範囲でアナログ値(整数値)を受け取ることができます。</p>
<p>これはアナログピンが10ビットのAD<span style="font-size: 14px">(アナログ・デジタル)</span>コンバータを搭載しているからです。</p>
<p>&nbsp;</p>
<p>受け取った値はSerial.printlnに引数として渡します。</p>
<p>これを1秒間隔で実行するようにします。</p>
<p>以下がloop()ブロック内のコードになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">void loop()
{
  val = analogRead(Cds);  // Cdsの値を受け取る
  Serial.println(val);
  delay(1000);  //1秒停止
}</pre><p>
&nbsp;</p>
<p>以上が、今回のスケッチとなります。</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+106APT" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www29.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006076000&amp;mc=1" alt="" width="448" height="66" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www17.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+106APT" alt="" width="1" height="1" border="0" />
<h2>VB.Netのコード</h2>
<h3>定数・変数宣言</h3>
<p>定数には、履歴の上限を50件としたいのであらかじめ宣言しておきます。</p>
<p>&nbsp;</p>
<p>変数には、Comポートの選択値を代入する変数と</p>
<p>受け取った情報を記憶する変数そして受け取ったデータを</p>
<p>格納しておくコレクション(キュー)をそれぞれ変数として宣言します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "定数宣言"
    Private Const MAX_HISTORY As Integer = 50
#End Region

#Region "変数宣言"
    Private _comPort As String
    Private mrecvData As String = ""

    'センサ値データの履歴
    Private countHistory As Queue(Of Integer) = New Queue(Of Integer)
#End Region</pre><p>
&nbsp;</p>
<h3>フォームロード時の処理</h3>
<p>以下の処理を行います。</p>
<ul>

<li>タイマーの非アクティブ</li>

<li>COMポートの取得をし、コンボボックスへ反映</li>

<li>チャートの表示を初期化</li>
</ul>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "画面ロード"
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Enabled = False

        'COMポートを取得
        _comPort = ""
        For Each sp As String In My.Computer.Ports.SerialPortNames
            Me.cbComPort.Items.Add(sp)
        Next sp

        'チャートの表示を初期化
        Call InitializeChart()
    End Sub
#End Region</pre><p>
チャートの表示を初期化する部分は関数として新たに作成しています。</p>
<p>&nbsp;</p>
<h3>初期化の関数</h3>
<p>今回はチャートを計測機器に表示されているかのようなモニタデザインにしていきます。</p>
<figure id="attachment_mmd_1723" class="wp-block-image aligncenter"><img decoding="async" width="297" height="246" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">こんなイメージにしていきます。</p>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "グラフ表示の初期化"
    Private Sub InitializeChart()

        With chPhoto
            'チャート全体の背景色を設定
            .BackColor = Color.Black
            .ChartAreas(0).BackColor = Color.Transparent

            'チャート表示エリア周囲の余白をカットする
            .ChartAreas(0).InnerPlotPosition.Auto = False
            .ChartAreas(0).InnerPlotPosition.Width = 100       ' 100%
            .ChartAreas(0).InnerPlotPosition.Height = 90       ' 90 %(横軸のメモリラベル印字分の余白)
            .ChartAreas(0).InnerPlotPosition.X = 8
            .ChartAreas(0).InnerPlotPosition.Y = 0

            'X,Y軸情報のセット関数を定義
            Dim setAxis As Action(Of DataVisualization.Charting.Axis) =
                Sub(axisInfo)
                    '軸の目盛ラベルのフォントサイズ上限値を制限
                    axisInfo.LabelAutoFitMaxFontSize = 8

                    '軸のメモリラベルの文字色をセット
                    axisInfo.LabelStyle.ForeColor = Color.White

                    '軸タイトルの文字色をセット
                    axisInfo.TitleForeColor = Color.White

                    '軸の色をセット
                    axisInfo.MajorGrid.Enabled = True
                    axisInfo.MajorGrid.LineColor = ColorTranslator.FromHtml("#008242")
                    axisInfo.MinorGrid.Enabled = False
                    axisInfo.MinorGrid.LineColor = ColorTranslator.FromHtml("#008242")
                End Sub

            'X,Y軸の表示方法を定義
            setAxis(.ChartAreas(0).AxisY)
            setAxis(.ChartAreas(0).AxisX)

            .ChartAreas(0).AxisY.MinorGrid.Enabled = True
            .ChartAreas(0).AxisY.Maximum = 1023 '縦軸の最大値を1023にする

            .AntiAliasing = DataVisualization.Charting.AntiAliasingStyles.None

            '折れ線グラフとして表示
            .Series(0).ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line

            '線の色を指定
            .Series(0).Color = ColorTranslator.FromHtml("#00FF00")

            '凡例を非表示、各値に数値を表示しない
            .Series(0).IsVisibleInLegend = False
            .Series(0).IsValueShownAsLabel = False

        End With
    End Sub
#End Region</pre><p>
&nbsp;</p>
<h3>シリアル通信に関連する処理</h3>
<p>ハードウェアとの接続に関しては以下の処理を行います。</p>
<ul>

<li>Connectボタン押下</li>

<li>シリアル通信の準備</li>

<li>シリアル通信の開始
既に接続されている場合は、通信を閉じる処理を実行します。</li>

<li>接続確立後ボタンのテキストをDis-connectに変更</li>

<li>タイマーの設定(1秒周期でチャートの再描画を行います。)</li>
</ul>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "コネクトボタンクリック"
    Private Sub btConnect_Click(sender As Object, e As EventArgs) Handles btConnect.Click
        If (btConnect.Text = "Connect") Then
            If (_comPort &lt;&gt; "") Then
                Me.SerialPort1.Close()
                Me.SerialPort1.PortName = _comPort
                With Me.SerialPort1
                    .BaudRate = 9600
                    .DataBits = 8
                    .Parity = Parity.None
                    .StopBits = StopBits.One
                    .Handshake = Handshake.None
                    .Encoding = System.Text.Encoding.Default
                    .ReadTimeout = 10000
                End With

                Me.SerialPort1.Open()
                btConnect.Text = "Dis-connect"

                '1秒周期でチャートを再描画
                Timer1.Enabled = True
                Timer1.Interval = 50
                lblTimer.Text = "Timer: ON"
            Else
                MsgBox("Select a COM port first")
            End If
        Else
            Me.SerialPort1.Close()
            Me.btConnect.Text = "Connect"
            Me.Timer1.Enabled = False
            Me.lblTimer.Text = "Timer: OFF"
        End If
    End Sub
#End Region</pre><p>
データの受信に関する処理の流れは以下のようにします。</p>
<ul>

<li>データを受信
受け取った値が0ならnothing &amp; vbcrlf(改行コード)を戻り値として返します。
0でなければ、受け取った値を整数型に変換し、戻り値として返します。</li>
</ul>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "シリアルデータ受信処理"
    Private Function ReceiveSerialData(ByRef value As Integer) As String
        Dim Incoming As String
        Incoming = SerialPort1.ReadLine()
        If Incoming Is Nothing Then
            value = 0
            Return "nothing" &amp; vbCrLf
        Else
            value = CInt(Incoming)
            Return Incoming
        End If
    End Function
#End Region</pre><p></p>
<h3>チャートコントロールの処理</h3>
<p>1秒間隔で再描画を行うので、タイマーイベントの処理は以下のようにしました。</p>
<ul>

<li>コレクション変数に受け取った値を格納</li>

<li>rtxSerialに受け取った値を表示</li>

<li>コレクション変数が格納許容数を超えていたら格納した値を取り除く</li>

<li>グラフの再描画</li>
</ul>
<p>これらの処理を行います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "タイマー処理"
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim value As Integer
        mrecvData = ReceiveSerialData(value)
        rtxSerial.Text &amp;= mrecvData
        countHistory.Enqueue(value)

        '履歴の最大数を超えていたら、古いものを削除する
        While countHistory.Count &gt; MAX_HISTORY
            countHistory.Dequeue()
        End While

        'グラフを再描画する
        Call showChart()
    End Sub
#End Region</pre><p>
履歴の最大数を超えていたら、コレクション変数に最初に格納された値から取り除きます。</p>
<p>&nbsp;</p>
<p>以降、同様の処理を1秒ごとに繰り返します。</p>
<p>グラフへの描画処理は以下の関数を作成し行います。</p>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "グラフの描画"
    Private Sub showChart()
        'チャートに値をセット
        chPhoto.Series(0).Points.Clear()
        For Each value As Integer In countHistory
            chPhoto.Series(0).Points.Add(New DataPoint(0, value))
        Next value
    End Sub
#End Region</pre><p></p>
<h1><a href="https://px.a8.net/svt/ejp?a8mat=3BOIYL+FXCGC2+399O+64JTD" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www28.a8.net/svt/bgt?aid=201018621963&amp;wid=001&amp;eno=01&amp;mid=s00000015198001029000&amp;mc=1" alt="" width="300" height="250" border="0"></a>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www11.a8.net/0.gif?a8mat=3BOIYL+FXCGC2+399O+64JTD" alt="" width="1" height="1" border="0"></h1>
<h1>実行編</h1>
<p>実際にArduinoProMini互換機と接続して、プログラムを実行していきます。</p>
<figure id="attachment_mmd_1724" class="wp-block-image aligncenter"><img decoding="async" width="739" height="471" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">プログラム起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1725" class="wp-block-image aligncenter"><img decoding="async" width="745" height="474" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">COMポートの選択</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1726" class="wp-block-image aligncenter"><img decoding="async" width="744" height="477" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">接続後の明るさ受信</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1727" class="wp-block-image aligncenter"><img decoding="async" width="742" height="475" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/cds_9.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">接続後の明るさ受信(数分経過後)</p>
<p>&nbsp;</p>
<p>Cdsにライトを照らしたり、指でCdsを覆ったりして明るさを変化させてみました。</p>
<p>うーん、データの受信にインターバルを設定しているせいか、</p>
<p>スムーズな受信ができていない気がします。</p>
<p>&nbsp;</p>
<p>これは改善の余地がありです。</p>
<p>※　もしコードを試される方がいましたらお気を付けください。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>ArduinoProMini互換機とCdsを使って計測値を受信し、チャートコントロールで</p>
<p>リアルタイムに可視化することができました。</p>
<p>&nbsp;</p>
<p>PCとArduinoProMini互換機の通信が同期していないせいか、タイミングによっては</p>
<p>受信できなくなったり、チャートコントロールでの表示が遅れたりとしてしまいました。</p>
<p>&nbsp;</p>
<p>まだまだ勉強と改善が必要です……。</p>
<p>読者の方の何らかの参考になれば嬉しいです。</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1717"
					data-ulike-nonce="86302dc6da"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1717"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_55/">【VB.Net】ArduinoProMini互換機とCdsを使って明るさをグラフ化してみた。</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1717</post-id>	</item>
		<item>
		<title>【VB.Net】Arduinoとシリアル通信してみた～ArduinoProMini互換機～</title>
		<link>https://dreamparadaisu.com/visualbasic_54/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_54</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Mon, 18 Jan 2021 16:43:17 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[シリアル通信]]></category>
		<category><![CDATA[プログラム]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1683</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回は、ArduinoProMiniの互換機であるAE-ATMEGA328-MINIを入手したので、 VB.Netで作成したアプリケーションとシリアル通信をし、 ArduinoPr...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_54/">【VB.Net】Arduinoとシリアル通信してみた～ArduinoProMini互換機～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回は、ArduinoProMiniの互換機であるAE-ATMEGA328-MINIを入手したので、</p>
<p>VB.Netで作成したアプリケーションとシリアル通信をし、</p>
<p>ArduinoProMini互換機からデータを受信してみたので紹介していきます。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_53/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_3-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_53/" class="blog-card-title-link">【VB.Net】ハードウェアとシリアル通信をする方法</a></div><div class="blog-card-excerpt">PCと何らかの機器をシリアル通信(RS-232C、RS-422やRS-485)をし、データを受信したい場合や機器を制御したい場合は、IoT時代の到来よりも前に行われてきました。今回はVB.Netで何らかの機器とシリアル通信をする方法を簡単に紹介していきます。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_53/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_53/" alt="" /></a></div><div class="blog-card-date">2021-01-16 17:45</div></div></div>
<p>&nbsp;</p>
<p>前回紹介できなかったシリアル通信後のデータ受信についても、こちらで触れています。</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www27.a8.net/svt/bgt?aid=220503664100&amp;wid=001&amp;eno=01&amp;mid=s00000015623001010000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www13.a8.net/0.gif?a8mat=3NA5PS+1NJD9U+3CJQ+60H7L" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。</p>
<p>最初の手順については、下記記事をご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-title-link">VisualStudioで始めるWindowsアプリケーション開発</a></div><div class="blog-card-excerpt">VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。
以前に、簡単にざっくりと教える機会があった...</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/vb_aplication_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/vb_aplication_1/" alt="" /></a></div><div class="blog-card-date">2020-08-22 17:45</div></div></div>
<h2>フォームの作成</h2>
<p>フォームについては、前回のフォームを使います。</p>
<figure id="attachment_mmd_1670" class="wp-block-image aligncenter"><img decoding="async" width="680" height="379" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_2.png" class="attachment-680x571 size-680x571" alt="" loading="lazy" align="center" /></figure>
<p>各1～21までのコントロールの名称やテキストは以下のように設定しています。</p>

<table id="tablepress-38" class="tablepress tablepress-id-38">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th><th class="column-4">テキスト</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">GroupBox</td><td class="column-3">gbBaudrate</td><td class="column-4">ボーレート(bit/sec)</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">RadioButton</td><td class="column-3">rb57600</td><td class="column-4">56700</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">RadioButton</td><td class="column-3">rbs38400</td><td class="column-4">38400</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">RadioButton</td><td class="column-3">rbs19200</td><td class="column-4">19200</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">RadioButton</td><td class="column-3">rbs9600</td><td class="column-4">9600</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">RadioButton</td><td class="column-3">rbs4800</td><td class="column-4">4800</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">GroupBox</td><td class="column-3">gbDataLength</td><td class="column-4">データ長</td>
</tr>
<tr class="row-9">
	<td class="column-1">8</td><td class="column-2">GroupBox</td><td class="column-3">gbParity</td><td class="column-4">パリティ</td>
</tr>
<tr class="row-10">
	<td class="column-1">9</td><td class="column-2">RadioButton</td><td class="column-3">rbSeven</td><td class="column-4">7ビット</td>
</tr>
<tr class="row-11">
	<td class="column-1">10</td><td class="column-2">RadioButton</td><td class="column-3">rbEight</td><td class="column-4">8ビット</td>
</tr>
<tr class="row-12">
	<td class="column-1">11</td><td class="column-2">RadioButton</td><td class="column-3">rbEven</td><td class="column-4">偶数</td>
</tr>
<tr class="row-13">
	<td class="column-1">12</td><td class="column-2">RadioButton</td><td class="column-3">rbOdd</td><td class="column-4">奇数</td>
</tr>
<tr class="row-14">
	<td class="column-1">13</td><td class="column-2">RadioButton</td><td class="column-3">rbNone</td><td class="column-4">なし</td>
</tr>
<tr class="row-15">
	<td class="column-1">14</td><td class="column-2">GroupBox</td><td class="column-3">gbStopBit</td><td class="column-4">ストップビット</td>
</tr>
<tr class="row-16">
	<td class="column-1">15</td><td class="column-2">Label</td><td class="column-3">lbComPort</td><td class="column-4">COMポート名</td>
</tr>
<tr class="row-17">
	<td class="column-1">16</td><td class="column-2">RadioButton</td><td class="column-3">rbOne</td><td class="column-4">1ビット</td>
</tr>
<tr class="row-18">
	<td class="column-1">17</td><td class="column-2">RadioButton</td><td class="column-3">rbTwo</td><td class="column-4">2ビット</td>
</tr>
<tr class="row-19">
	<td class="column-1">18</td><td class="column-2">Button</td><td class="column-3">btnConnect</td><td class="column-4">接続</td>
</tr>
<tr class="row-20">
	<td class="column-1">19</td><td class="column-2">ComboBox</td><td class="column-3">cbComport</td><td class="column-4"></td>
</tr>
<tr class="row-21">
	<td class="column-1">20</td><td class="column-2">Button</td><td class="column-3">btClose</td><td class="column-4">非接続</td>
</tr>
<tr class="row-22">
	<td class="column-1">21</td><td class="column-2">RitchTextBox</td><td class="column-3">rtxSerial</td><td class="column-4"></td>
</tr>
</tbody>
</table>

<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>&nbsp;</p>
<p>※　Windows7 8 8.1でも動作はできますが、</p>
<p>画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>各通信パラメータを選択し、接続ボタンを押すことで</p>
<p>ArduinoProMini互換機と接続ができることを確認し、</p>
<p>データが受信できることを目的とします。</p>
<p>&nbsp;</p>
<h1>プログラム編</h1>
<p>シリアル通信の接続に関する処理は、前回の記事をそのまま使用します。</p>
<p>ここでは、ArduinoProMini互換機側のコードと</p>
<p>データ受信に関する処理について書いていきます。</p>
<p>&nbsp;</p>
<h2>ArduinoProMini互換機へのプログラム</h2>
<p>今回使用するArduinoProMini互換機は以下のようなマイコンとなっております。</p>
<figure id="attachment_mmd_1689" class="wp-block-image "><img decoding="async" width="680" height="510" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/IMG_20210119_000103-scaled.jpg" class="attachment-680x768 size-680x768" alt="" loading="lazy" /></figure>
<p style="text-align: center"><a href="https://akizukidenshi.com/catalog/g/gK-10347/">ArduinoProMini互換機</a></p>
<h3>ArduinoIDEの準備</h3>
<p>ArduinoProMini互換機のプログラム(コード)を書くには、統合開発環境の</p>
<p>ArduinoIDEを使用します。</p>
<p>&nbsp;</p>
<p>IDEについては、Arduinoの公式フォーラムからダウンロードしてください。</p>
<p>&nbsp;</p>
<p><a href="https://www.arduino.cc/en/software">Arduino IDE(Arduino公式ページ)</a></p>
<p>ダウンロードをし、インスト―ルが完了すると</p>
<p>デスクトップ上に下のショートカットアイコンが作成されます。</p>
<p>※場合によっては、作成されないかもしれません。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1686" class="wp-block-image aligncenter"><img decoding="async" width="106" height="83" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_1.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>問題なくインストールされ、ショートカットアイコンを実行すれば、</p>
<p>以下のような画面が表示されると思います。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1687" class="wp-block-image aligncenter"><img decoding="async" width="505" height="923" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_2.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<h3>PCとArduinoProMini互換機を接続する</h3>
<p>PCとArduinoProMini互換機を接続するにあたって、互換機だけでは接続ができないので</p>
<p>以下のボードを使います。</p>
<figure id="attachment_mmd_1692" class="wp-block-image "><img decoding="async" width="680" height="510" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/IMG_20210119_000321-scaled.jpg" class="attachment-680x768 size-680x768" alt="" loading="lazy" /></figure>
<p style="text-align: center"><a href="https://akizukidenshi.com/catalog/g/gM-11007/">FT-232RQ USBシリアル変換モジュール</a></p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1688" class="wp-block-image aligncenter"><img decoding="async" width="680" height="510" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/IMG_20210119_000258-scaled.jpg" class="attachment-680x768 size-680x768" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">背面</p>
<p>&nbsp;</p>
<p>こちらを使って、以下のようにArduinoProMini互換機と接続してPCと接続をします。</p>
<figure id="attachment_mmd_1690" class="wp-block-image "><img decoding="async" width="680" height="510" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/IMG_20210119_000335-scaled.jpg" class="attachment-680x768 size-680x768" alt="" loading="lazy" /></figure>
<p style="text-align: center">ArduinoProMini互換機とUSBシリアルモジュールの接続図</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1691" class="wp-block-image aligncenter"><img decoding="async" width="680" height="510" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/IMG_20210119_000348-scaled.jpg" class="attachment-680x768 size-680x768" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">USBシリアルモジュールとマイクロUSB(オス)-USB(オス)の接続図</p>
<p>&nbsp;</p>
<h3>ArduinoIDE上での接続設定</h3>
<p>PCに接続をしたら、<span class="marker-under">ツールタブ→ボード→Arduino Pro or Pro Mini</span>を選択します。</p>
<figure id="attachment_mmd_1696" class="wp-block-image aligncenter"><img decoding="async" width="680" height="849" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_4.png" class="attachment-680x1024 size-680x1024" alt="" loading="lazy" align="center" /></figure>
<p>&nbsp;</p>
<p>次にArduinoIDEの<span class="marker-under">ツールタブ→プロセッサ→ATmega328P(5V, 16MHz)</span>を選択します。</p>
<figure id="attachment_mmd_1697" class="wp-block-image aligncenter"><img decoding="async" width="869" height="756" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>最後に、<span class="marker-under">ツールタブ→シリアルポート→COM3</span>を選択します。</p>
<p>※COM以降の数字に関しては、各端末によって異なります。</p>
<p>&nbsp;</p>
<p>筆者の環境ではCOM3にArduinoProMini互換機が接続されています。</p>
<figure id="attachment_mmd_1695" class="wp-block-image aligncenter"><img decoding="async" width="922" height="930" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_3.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>これで接続の設定は完了になります。</p>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+106APT" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www20.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006076000&amp;mc=1" alt="" width="448" height="66" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www10.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+106APT" alt="" width="1" height="1" border="0" />
<h3>ArudinoProMini互換機側のスケッチを作成する</h3>
<p>ArduinoIDEではスケッチと呼ばれるキャンパスを使ってコードを書いていきます。</p>
<p>VB.Netでいうプロジェクト(+ソースファイル)にあたる部分になります。</p>
<p>&nbsp;</p>
<p>作成時には、setup()ブロックとloop()ブロックがコードとして書かれています。</p>
<p>setup()ブロックには、主に通信時の設定やピンの割り当て(設定)などの処理を記述します。</p>
<p>&nbsp;</p>
<p>loop()ブロックでは、LEDの制御やデータの受送信などのメインとなる処理を記述します。</p>
<p>今回はシリアル通信に関する処理を書いていきます。</p>
<p>&nbsp;</p>
<h4>setup()ブロックでの記述</h4>
<p>setup()ブロックでは、ボーレートを設定します。</p>
<p>設定するには、Serial.begin(設定したいボーレート)で行います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">void setup()
{
  Serial.begin(9600);  //シリアルポートを9600bpsで開く
}</pre><p>
setup()ブロックはこれで完了です。</p>
<p>&nbsp;</p>
<h4>loop()ブロックでの記述</h4>
<p>loopブロックでは、送信するデータとして、文字列&#8221;Hello&#8221;と設定します。</p>
<p>これには、<strong><span class="red-under" style="font-size: 18px">Serial.println(&#8220;Hello&#8221;)</span></strong>と記述します。</p>
<p>&nbsp;</p>
<p>データの送信間隔を1秒とし、<span class="marker-under">1秒間隔でHelloを送信する処理</span>を行わせます。</p>
<p>送信間隔を設定するには、<strong><span class="red-under" style="font-size: 18px">delay(ミリ秒)関数</span></strong>を使用します。</p>
<p>&nbsp;</p>
<p>1秒なので、<span class="red-under">1000ミリ秒を引数として渡します</span>。</p>
<p>delay(1000)と記述します。</p>
<p>&nbsp;</p>
<p>コードで書くと以下のようになります。
</p><pre class="urvanov-syntax-highlighter-plain-tag">void loop()
{
  Serial.println("Hello");
  delay(1000);  //1秒停止
}</pre><p>
これでArduinoProMini側のスケッチは完了になります。</p>
<p>&nbsp;</p>
<h3>スケッチのボードへの書き込み</h3>
<p>完了したスケッチをボードへ書き込みます。</p>
<p>&nbsp;</p>
<p>書き込むには、以下の流れで行います。</p>
<ol>

<li>作成したスケッチの検証(コンパイル)</li>

<li>ボードに書き込む</li>
</ol>
<p>&nbsp;</p>
<p>1では、コードにエラーがないか検証を行っています。</p>
<p>問題がなければ、ボードに書き込んでいきます。</p>
<figure id="attachment_mmd_1698" class="wp-block-image aligncenter"><img decoding="async" width="960" height="928" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_9.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>問題がなければ</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1699" class="wp-block-image aligncenter"><img decoding="async" width="484" height="594" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_7.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>もし、コードに問題がある場合はエラーが表示されます。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1700" class="wp-block-image aligncenter"><img decoding="async" width="960" height="928" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_10.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>書き込みボタンを押します。</p>
<p>&nbsp;</p>
<p>問題がなければ、</p>
<figure id="attachment_mmd_1701" class="wp-block-image aligncenter"><img decoding="async" width="484" height="590" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_8.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>書き込み中にエラーが発生してしまうと、</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1702" class="wp-block-image aligncenter"><img decoding="async" width="484" height="588" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>この場合PCとの接続が途切れてしまった(途中でケーブルが抜けてしまった)が考えられます。</p>
<p>以上の流れで、作成したスケッチをボードに書き込むことができます。</p>
<p>&nbsp;</p>
<h2>シリアル通信のデータ受信処理</h2>
<p>ここからはVB.Netに戻り、シリアル通信後のデータを受信する場合は、</p>
<p>SerialPort変数.ReadLine()で受け取ることができます。</p>
<p>&nbsp;</p>
<p>今回は、<span class="marker-under">ArduinoProMini互換機から受け取った値は</span></p>
<p><span class="marker-under">Console.WriteLine()で出力をするようにします</span>。</p>
<p>&nbsp;</p>
<p>前回記事で紹介した、以下のコードを使用します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "データ受信イベント"
    Private Sub mSerialPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles mSerialPort.DataReceived

            '受信データ格納変数
            Dim mRecvData As String = mSerialPort.ReadLine()

            Console.WriteLine(mRecvData)

    End Sub
#End Region</pre><p></p>
<h1></h1>
<h1>実行編</h1>
<p>ArduinoProMini互換機の通信設定は以下の設定としています。</p>
<ul>

<li>通信速度(ボーレート)：9600bps</li>

<li>データ長(データビット)：8ビット</li>

<li>パリティ：なし(None)</li>

<li>ストップビット：1ビット</li>

<li>COMポート名：COM3(※接続する端末によって異なります。)</li>
</ul>
<figure id="attachment_mmd_1675" class="wp-block-image aligncenter"><img decoding="async" width="474" height="267" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1703" class="wp-block-image aligncenter"><img decoding="async" width="474" height="268" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_11.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">書くパラメータ設定後、接続ボタンを押します</p>
<p>&nbsp;</p>
<p>VisualStudio2019に戻り、出力ウィンドウにデータが表示されていることを確認します。</p>
<figure id="attachment_mmd_1704" class="wp-block-image aligncenter"><img decoding="async" width="947" height="193" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/serial_arduino_12.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p>1秒間隔でHelloが受信できていることが確認できます。</p>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>シリアル通信でデータを受信する方法とArduinoProMini互換機の統合開発環境(ArduinoIDE)</p>
<p>の使い方やArduino言語のシリアル通信に関する処理について解説しました。</p>
<p>&nbsp;</p>
<p>Arduino関連でWindowsフォームアプリケーションと</p>
<p>シリアル通信をしてみたかった読者、初学者の方の少しでも参考になれば嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p>&nbsp;</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<p>&nbsp;</p>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1683"
					data-ulike-nonce="09d572219d"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1683"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="0"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_54/">【VB.Net】Arduinoとシリアル通信してみた～ArduinoProMini互換機～</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1683</post-id>	</item>
		<item>
		<title>【VB.Net】ハードウェアとシリアル通信をする方法</title>
		<link>https://dreamparadaisu.com/visualbasic_53/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=visualbasic_53</link>
		
		<dc:creator><![CDATA[リョクちゃ]]></dc:creator>
		<pubDate>Sat, 16 Jan 2021 08:45:57 +0000</pubDate>
				<category><![CDATA[VB.Net]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[シリアル通信]]></category>
		<category><![CDATA[プログラム]]></category>
		<guid isPermaLink="false">https://dreamparadaisu.com/?p=1664</guid>

					<description><![CDATA[<p>どうも！リョクちゃです。 &#160; 今回はVB.Netで何らかの機器とシリアル通信をする方法について、 例を交えて簡単に紹介していきます。 &#160; シリアル通信を学んで様々な機器と接続をし、危機からのデータの取...</p>
The post <a href="https://dreamparadaisu.com/visualbasic_53/">【VB.Net】ハードウェアとシリアル通信をする方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>

この投稿の関連記事が見つかりませんでした。
</div>
]]></description>
										<content:encoded><![CDATA[<p>どうも！リョクちゃです。</p>
<p>&nbsp;</p>
<p>今回はVB.Netで何らかの機器とシリアル通信をする方法について、</p>
<p>例を交えて簡単に紹介していきます。</p>
<p>&nbsp;</p>
<p>シリアル通信を学んで様々な機器と接続をし、危機からのデータの取得や</p>
<p>機器の制御などができるようになるお手伝いができればなと思っております。</p>
<p>&nbsp;</p>
<p>ちなみに前回はこちら</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_52/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/chart_8-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/chart_8-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/chart_8-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/chart_8-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_52/" class="blog-card-title-link">【VB.Net】Chartコントロールの使い方～疑似計測編～</a></div><div class="blog-card-excerpt">Chartコントロールを使うことでWindowsフォームアプリケーションでグラフを作成・表示ができます。ここではChartの使い方を簡単に、疑似的に生成されたデータをボタンを押すたびにプロットしていくといった例を交えて紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_52/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_52/" alt="" /></a></div><div class="blog-card-date">2021-01-15 00:59</div></div></div>
<p>&nbsp;</p>
<p><a href="https://px.a8.net/svt/ejp?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" rel="nofollow">
<img loading="lazy" decoding="async" src="https://www24.a8.net/svt/bgt?aid=200715242275&amp;wid=001&amp;eno=01&amp;mid=s00000000002006105000&amp;mc=1" alt="" width="468" height="60" border="0" /></a></p>
<img loading="lazy" decoding="async" src="https://www16.a8.net/0.gif?a8mat=3BI0VE+4JQ84Y+0K+10CIHD" alt="" width="1" height="1" border="0" />
<p>&nbsp;</p>
<h1>準備編</h1>
<p>VisualStudio2019を使って、Windowsフォームアプリケーションを作成していきます。</p>
<p>最初の手順については、下記記事をご参照ください。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-75x75.png 75w, https://dreamparadaisu.com/wp-content/uploads/2020/08/ea11324c061da115892894236625e2ad-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/vb_aplication_1/" class="blog-card-title-link">VisualStudioで始めるWindowsアプリケーション開発</a></div><div class="blog-card-excerpt">VisualStudioを使ってWindowsアプリケーションを開発していく流れを紹介します。
以前に、簡単にざっくりと教える機会があった...</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/vb_aplication_1/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/vb_aplication_1/" alt="" /></a></div><div class="blog-card-date">2020-08-22 17:45</div></div></div>
<h2>シリアル通信とは</h2>
<p>インターネットで検索すると、以下のような回答がヒットします。</p>
<blockquote><b>シリアル通信</b>（シリアルつうしん、<a title="英語" href="https://ja.wikipedia.org/wiki/%E8%8B%B1%E8%AA%9E">英</a>: <span lang="en">Serial communication</span>）は、<a title="電気通信" href="https://ja.wikipedia.org/wiki/%E9%9B%BB%E6%B0%97%E9%80%9A%E4%BF%A1">電気通信</a>において<a title="伝送路" href="https://ja.wikipedia.org/wiki/%E4%BC%9D%E9%80%81%E8%B7%AF">伝送路</a>上を一度に1<a title="ビット" href="https://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83%E3%83%88">ビット</a>ずつ、逐次的にデータを送ることをいう。
<p style="text-align: right"><a href="https://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB%E9%80%9A%E4%BF%A1">出典: フリー百科事典『ウィキペディア（Wikipedia）』</a></p>
</blockquote>
<p>1ビットは0や1のデータを指します。</p>
<p>&nbsp;</p>
<p>シリアル通信には以下の規格があります。</p>
<ul>

<li>RS-232C
D-Sub25ピンまたはD-Sub9ピン(接続コネクタ)
正式名称：ANSI/EIA-232-E</li>

<li>RS-422A
各信号線の目的やタイミングは規定されています。
接続コネクタの規定はありません。
主にD-Sub25ピンやD-Sub9ピンが採用されています。</li>

<li>RS-485
RS-422Aの上位互換の規格
正式名称：EIA-485</li>
</ul>
<p>といった規格があり、主にはRS-232やRS-485が使われているのではないでしょうか。</p>
<p>&nbsp;</p>
<p>主なパラメータごとの特徴は以下のようになります。</p>

<table id="tablepress-37" class="tablepress tablepress-id-37">
<tbody class="row-striping row-hover">
<tr class="row-1">
	<td class="column-1">パラメータ</td><td class="column-2">RS-232C</td><td class="column-3">RS-422A</td><td class="column-4">RS-485</td>
</tr>
<tr class="row-2">
	<td class="column-1">伝送モード</td><td class="column-2">シンプレックス</td><td class="column-3">マルチポイント<br />
シンプレックス</td><td class="column-4">マルチポイント<br />
マルチプレックス</td>
</tr>
<tr class="row-3">
	<td class="column-1">最大接続台数</td><td class="column-2">1ドライバ<br />
1レシーバ</td><td class="column-3">1ドライバ<br />
10レシーバ</td><td class="column-4">32ドライバ<br />
32レシーバ</td>
</tr>
<tr class="row-4">
	<td class="column-1">最大伝送速度</td><td class="column-2">20[kbps]</td><td class="column-3">10[Mbps]</td><td class="column-4">10[Mbps]</td>
</tr>
<tr class="row-5">
	<td class="column-1">最大ケーブル長</td><td class="column-2">15[m]</td><td class="column-3">1200[m]</td><td class="column-4">1200[m]</td>
</tr>
<tr class="row-6">
	<td class="column-1">特徴</td><td class="column-2">短距離<br />
全２重通信<br />
1:1<br />
</td><td class="column-3">長距離<br />
全２重半2重通信<br />
1:N</td><td class="column-4">長距離<br />
全２重半２重<br />
N:N</td>
</tr>
</tbody>
</table>

<h2>フォームの作成</h2>
<p>今回、以下のフォームを作成します。</p>
<figure id="attachment_mmd_1670" class="wp-block-image aligncenter"><img decoding="async" width="680" height="379" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_2.png" class="attachment-680x571 size-680x571" alt="" loading="lazy" align="center" /></figure>
<p>各1～21までのコントロールの名称やテキストは以下のように設定しています。</p>

<table id="tablepress-38-no-2" class="tablepress tablepress-id-38">
<thead>
<tr class="row-1">
	<th class="column-1">No</th><th class="column-2">コントロール</th><th class="column-3">名前</th><th class="column-4">テキスト</th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">1</td><td class="column-2">GroupBox</td><td class="column-3">gbBaudrate</td><td class="column-4">ボーレート(bit/sec)</td>
</tr>
<tr class="row-3">
	<td class="column-1">2</td><td class="column-2">RadioButton</td><td class="column-3">rb57600</td><td class="column-4">56700</td>
</tr>
<tr class="row-4">
	<td class="column-1">3</td><td class="column-2">RadioButton</td><td class="column-3">rbs38400</td><td class="column-4">38400</td>
</tr>
<tr class="row-5">
	<td class="column-1">4</td><td class="column-2">RadioButton</td><td class="column-3">rbs19200</td><td class="column-4">19200</td>
</tr>
<tr class="row-6">
	<td class="column-1">5</td><td class="column-2">RadioButton</td><td class="column-3">rbs9600</td><td class="column-4">9600</td>
</tr>
<tr class="row-7">
	<td class="column-1">6</td><td class="column-2">RadioButton</td><td class="column-3">rbs4800</td><td class="column-4">4800</td>
</tr>
<tr class="row-8">
	<td class="column-1">7</td><td class="column-2">GroupBox</td><td class="column-3">gbDataLength</td><td class="column-4">データ長</td>
</tr>
<tr class="row-9">
	<td class="column-1">8</td><td class="column-2">GroupBox</td><td class="column-3">gbParity</td><td class="column-4">パリティ</td>
</tr>
<tr class="row-10">
	<td class="column-1">9</td><td class="column-2">RadioButton</td><td class="column-3">rbSeven</td><td class="column-4">7ビット</td>
</tr>
<tr class="row-11">
	<td class="column-1">10</td><td class="column-2">RadioButton</td><td class="column-3">rbEight</td><td class="column-4">8ビット</td>
</tr>
<tr class="row-12">
	<td class="column-1">11</td><td class="column-2">RadioButton</td><td class="column-3">rbEven</td><td class="column-4">偶数</td>
</tr>
<tr class="row-13">
	<td class="column-1">12</td><td class="column-2">RadioButton</td><td class="column-3">rbOdd</td><td class="column-4">奇数</td>
</tr>
<tr class="row-14">
	<td class="column-1">13</td><td class="column-2">RadioButton</td><td class="column-3">rbNone</td><td class="column-4">なし</td>
</tr>
<tr class="row-15">
	<td class="column-1">14</td><td class="column-2">GroupBox</td><td class="column-3">gbStopBit</td><td class="column-4">ストップビット</td>
</tr>
<tr class="row-16">
	<td class="column-1">15</td><td class="column-2">Label</td><td class="column-3">lbComPort</td><td class="column-4">COMポート名</td>
</tr>
<tr class="row-17">
	<td class="column-1">16</td><td class="column-2">RadioButton</td><td class="column-3">rbOne</td><td class="column-4">1ビット</td>
</tr>
<tr class="row-18">
	<td class="column-1">17</td><td class="column-2">RadioButton</td><td class="column-3">rbTwo</td><td class="column-4">2ビット</td>
</tr>
<tr class="row-19">
	<td class="column-1">18</td><td class="column-2">Button</td><td class="column-3">btnConnect</td><td class="column-4">接続</td>
</tr>
<tr class="row-20">
	<td class="column-1">19</td><td class="column-2">ComboBox</td><td class="column-3">cbComport</td><td class="column-4"></td>
</tr>
<tr class="row-21">
	<td class="column-1">20</td><td class="column-2">Button</td><td class="column-3">btClose</td><td class="column-4">非接続</td>
</tr>
<tr class="row-22">
	<td class="column-1">21</td><td class="column-2">RitchTextBox</td><td class="column-3">rtxSerial</td><td class="column-4"></td>
</tr>
</tbody>
</table>

<h2>実行環境</h2>
<p>筆者の実行環境は、</p>
<ul>

<li>VisualStudio2019</li>

<li>Windows 10 64bit</li>

<li>.Net Framework 4.5.1</li>
</ul>
<p>になります。</p>
<p>※　Windows7 8 8.1でも動作はできますが、画面デザインの表示が変わるかもしれません。</p>
<h2>アプリケーションの目的</h2>
<p>各通信パラメータを選択し、接続ボタンを押すことで機器との接続が成功した場合には、</p>
<p>rtxSerialに接続成功が出ることを確認し、</p>
<p>データが受信できる機器であれば受信ができることを目的とします。</p>
<p>&nbsp;</p>
<p>受信ができない場合は、接続のみ確認できることを目的とします。</p>
<h1>プログラム編</h1>
<h2>定数・変数宣言</h2>
<p>定数と変数には、それぞれ通信パラメータで必要となる変数を準備します。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "定数宣言"
    Private Const DataLength_Seven As Integer = 7
    Private Const DataLength_Eight As Integer = 8
#End Region

#Region "変数宣言"
    Private mBaudRate As Integer = Nothing　　　　　' 通信速度(機器側)
    Private mDataLength As Integer = Nothing      ' データ長
    Private mStopBits As StopBits = Nothing       ' ストップビット 
    Private mParity As Parity = Nothing           ' パリティ
    WithEvents mSerialPort As SerialPort = Nothing     ' 通信用シリアルポート変数
#End Region</pre><p>
#Region～#End Regionと書くことで、<span class="marker-under">コードをわかりやすいように</span></p>
<p><span class="marker-under">ブロックごとに分けています</span>。(今までの記事では書いていませんでした。。。)</p>
<p>&nbsp;</p>
<p>通信速度用に以下の列挙体を準備しておきます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "列挙体"
    Public Enum BaudrateList
        BR1 = 57600
        BR2 = 38400
        BR3 = 19200
        BR4 = 9600
        BR5 = 4800
    End Enum
#End Region</pre><p></p>
<h2>フォーム起動時の処理</h2>
<p>フォーム起動時には以下の処理を行います。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "画面ロード"
    Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            'コムポート取得
            Call SetComPort()


    End Sub
#End Region</pre><p>
PCに接続されているCOMポートを取得する関数を作成し、呼び出しています。</p>
<h2>COMポート取得関数</h2>
<p>COMポートを取得し、コンボボックスのcbComportに値をセットしています。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "COMポート処理"
    ''' &lt;summary&gt;
    ''' コンボボックスへ接続されているCOMを追加
    ''' &lt;/summary&gt;
    Private Sub SetComPort()
        Dim subName As String = "SetComPort"
        For Each strComPort As String In SerialPort.GetPortNames
            cbComport.Items.Add(strComPort)
        Next strComPort
    End Sub
#End Region</pre><p></p>
<h2>ボタン押下時の処理</h2>
<p>ボタンが押されたら、以下の処理を行います。</p>
<ul>

<li>SerialPort変数の初期化</li>

<li>各通信パラメータ(ストップビット、パリティ除く)入力値チェック</li>

<li>シリアル通信開始</li>

<li>成功時、接続成功とrtxSerialに表示</li>
</ul>
<p>&nbsp;
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "ボタン押下処理"
    ''' &lt;summary&gt;
    ''' シリアル機器接続
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub btConnect_Click(sender As Object, e As EventArgs) Handles btConnect.Click
        mSerialPort = New SerialPort

            'ボーレート
            If mBaudRate = Nothing Then
                MessageBox.Show("ボーレートが選択されていません。")
                Return
            End If
            mSerialPort.BaudRate = mBaudRate

            'データビット
            If mDataLength = Nothing Then
                MessageBox.Show("データ長が選択されていません。")
            End If
            mSerialPort.DataBits = mDataLength

            'COMポート
            If cbComport.Text = "" Then
                MessageBox.Show("COMポートが選択されていません。")
                Return
            End If
            mSerialPort.PortName = cbComport.SelectedItem.ToString()

            'シリアル接続
            mSerialPort.Open()

            rtxSerial.Text = "接続成功"

    End Sub</pre><p>
<a href="https://px.a8.net/svt/ejp?a8mat=3BOIYL+FXCGC2+399O+66WOX" rel="nofollow">
<img loading="lazy" decoding="async" class="aligncenter" src="https://www23.a8.net/svt/bgt?aid=201018621963&amp;wid=001&amp;eno=01&amp;mid=s00000015198001040000&amp;mc=1" alt="" width="300" height="250" border="0" /></a></p>
<img loading="lazy" decoding="async" class="aligncenter" src="https://www10.a8.net/0.gif?a8mat=3BOIYL+FXCGC2+399O+66WOX" alt="" width="1" height="1" border="0" />
<h2>通信パラメータに関する処理</h2>
<p>シリアル通信の接続をするにあたって、通信時のパラメータがあります。</p>
<p>この<span class="red-under">パラメータが通信側の機器とあっていないと正しく通信ができない</span>ので、</p>
<p>注意が必要です。</p>
<p>&nbsp;</p>
<p>通信パラメータには主に以下の項目があります。</p>
<ul>

<li>通信速度(ボーレート[bit/sec])</li>

<li>データ長(DataBits)</li>

<li>パリティ(Parity)</li>

<li>ストップビット(StopBits)</li>

<li>COMポート</li>
</ul>
<p>&nbsp;</p>
<p>各通信パラメータのラジオボタンがチェックされたとき、以下の処理をそれぞれ行います。</p>
<h3>ボーレート(通信速度)</h3>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "ボーレート処理"
    ''' &lt;summary&gt;
    ''' 通信速度57600(bit/sec)
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rb57600_CheckedChanged(sender As Object, e As EventArgs) Handles rb57600.CheckedChanged
        Dim subName As String = "rb57600_CheckedChanged"
        If rb57600.Checked Then
            Me.mBaudRate = BaudrateList.BR1
        Else
            Me.mBaudRate = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' 通信速度38400(bit/sec)
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rb38400_CheckedChanged(sender As Object, e As EventArgs) Handles rb38400.CheckedChanged
        Dim subName As String = "rb38400_CheckedChanged"
        If rb38400.Checked Then
            Me.mBaudRate = BaudrateList.BR2
        Else
            Me.mBaudRate = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' 通信速度19200(bit/sec)
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rb19200_CheckedChanged(sender As Object, e As EventArgs) Handles rb19200.CheckedChanged
        Dim subName As String = "rb19200_CheckedChanged"
        If rb19200.Checked Then
            Me.mBaudRate = BaudrateList.BR3
        Else
            Me.mBaudRate = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' 通信速度9600(bit/sec)
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rb9600_CheckedChanged(sender As Object, e As EventArgs) Handles rb9600.CheckedChanged
        Dim subName As String = "rb9600_CheckedChanged"
        If rb9600.Checked Then
            Me.mBaudRate = BaudrateList.BR4
        Else
            Me.mBaudRate = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' 通信速度4800(bit/sec)
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rb4800_CheckedChanged(sender As Object, e As EventArgs) Handles rb4800.CheckedChanged
        Dim subName As String = "rb4800_CheckedChanged"
        If rb4800.Checked Then
            Me.mBaudRate = BaudrateList.BR5
        Else
            Me.mBaudRate = Nothing
        End If
    End Sub
#End Region</pre><p></p>
<h3>データ長(データビット)</h3>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "データビット処理"
    ''' &lt;summary&gt;
    ''' データビット　7ビット
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbSeven_CheckedChanged(sender As Object, e As EventArgs) Handles rbSeven.CheckedChanged
        Dim subName As String = "rbSeven_CheckedChanged"
        If rbSeven.Checked Then
            Me.mDataLength = DataLength_Seven
        Else
            Me.mDataLength = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' データビット　8ビット
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbEight_CheckedChanged(sender As Object, e As EventArgs) Handles rbEight.CheckedChanged
        Dim subName As String = "rbEight_CheckedChanged"
        If rbEight.Checked Then
            Me.mDataLength = DataLength_Eight
        Else
            Me.mDataLength = Nothing
        End If
    End Sub
#End Region</pre><p></p>
<h3>ストップビット</h3>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "ストップビット"
    ''' &lt;summary&gt;
    ''' ストップビット　1ビット
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbOne_CheckedChanged(sender As Object, e As EventArgs) Handles rbOne.CheckedChanged
        Dim subName As String = "rbOne_CheckedChanged"
        If rbOne.Checked Then
            Me.mStopBits = StopBits.One
        Else
            Me.mStopBits = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' ストップビット　2ビット
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbTwo_CheckedChanged(sender As Object, e As EventArgs) Handles rbTwo.CheckedChanged
        Dim subName As String = "rbTwo_CheckedChanged"
        If rbTwo.Checked Then
            Me.mStopBits = StopBits.Two
        Else
            Me.mStopBits = Nothing
        End If
    End Sub
#End Region</pre><p></p>
<h3>パリティ</h3>
<p></p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "パリティ処理"
    ''' &lt;summary&gt;
    ''' 偶数
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbEven_CheckedChanged(sender As Object, e As EventArgs) Handles rbEven.CheckedChanged
        Dim subName As String = "rbEven_CheckedChanged"
        If rbEven.Checked Then
            Me.mParity = Parity.Even
        Else
            Me.mParity = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' 奇数
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbOdd_CheckedChanged(sender As Object, e As EventArgs) Handles rbOdd.CheckedChanged
        Dim subName As String = "rbOdd_CheckedChanged"
        If rbOdd.Checked Then
            Me.mParity = Parity.Odd
        Else
            Me.mParity = Nothing
        End If
    End Sub

    ''' &lt;summary&gt;
    ''' なし
    ''' &lt;/summary&gt;
    ''' &lt;param name="sender"&gt;&lt;/param&gt;
    ''' &lt;param name="e"&gt;&lt;/param&gt;
    Private Sub rbNone_CheckedChanged(sender As Object, e As EventArgs) Handles rbNone.CheckedChanged
        Dim subName As String = "rbNone_CheckedChanged"
        If rbNone.Checked Then
            Me.mParity = Parity.None
        Else
            Me.mParity = Nothing
        End If
    End Sub
#End Region</pre><p></p>
<h2>データ受信に関する処理</h2>
<p>機器から何らかのデータを受信したとき、以下の処理を行います。</p>
<p>このアプリケーションでは、受け取った値をConsole.WriteLine()で出力します。</p>
<div class="information">SerialPort.ReadLine()</div>
<p>と記述することで通信された機器からデータを受信することができます。</p>
<p>&nbsp;</p>
<p>また、<span class="marker-under">mSerialPort.DataReceived</span>のイベントを書くことで、</p>
<p>機器からデータを受信したときにイベントが発生がされるので逐一データの出力がされます。
</p><pre class="urvanov-syntax-highlighter-plain-tag">#Region "データ受信イベント"
    Private Sub mSerialPort_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles mSerialPort.DataReceived

            '受信データ格納変数
            Dim mRecvData As String = mSerialPort.ReadLine()

            Console.WriteLine(mRecvData)

    End Sub
#End Region</pre><p></p>
<h1></h1>
<h1>実行編</h1>
<p>それでは実行していきます。</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1675" class="wp-block-image aligncenter"><img decoding="async" width="474" height="267" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_4.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">プログラム起動時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1676" class="wp-block-image aligncenter"><img decoding="async" width="475" height="265" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_5.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">通信パラメータ選択時</p>
<p>&nbsp;</p>
<figure id="attachment_mmd_1677" class="wp-block-image aligncenter"><img decoding="async" width="477" height="272" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/Serial_6.png" class="attachment-full size-full" alt="" loading="lazy" align="center" /></figure>
<p style="text-align: center">接続ボタン押下後、接続成功メッセージを表示</p>
<p>&nbsp;</p>
<p><span class="strike">データ受信に関しては、手元になかったので後日改めて実行後書き足していきます。。。</span></p>
<p>続編として、以下の記事を作成しました。</p>
<p>&nbsp;</p>
<p>ArduinoProMini互換機からデータを受信する記事になっています。</p>
<div class="blog-card internal-blog-card blog-card-thumbnail-right cf"><div class="blog-card-thumbnail"><a href="https://dreamparadaisu.com/visualbasic_54/" class="blog-card-thumbnail-link"><img width="100" height="100" src="https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-100x100.png" class="blog-card-thumb-image wp-post-image" alt="" srcset="https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-100x100.png 100w, https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-150x150.png 150w, https://dreamparadaisu.com/wp-content/uploads/2021/01/arduino_1-120x120.png 120w" sizes="(max-width: 100px) 100vw, 100px" /></a></div><div class="blog-card-content"><div class="blog-card-title"><a href="https://dreamparadaisu.com/visualbasic_54/" class="blog-card-title-link">【VB.Net】Arduinoとシリアル通信してみた～ArduinoProMini互換機～</a></div><div class="blog-card-excerpt">Arduinoとは、イタリアで産まれた教育用のマイコンボードです。今回はArdunioProMiniの互換機とされるAE-ATMEGA328-MINIを使って、VB.Netでシリアル通信をし、ATMEGA328MINIからデータを受信する方法を紹介しています。</div></div><div class="blog-card-footer"><div class="blog-card-site">dreamparadaisu.com</div><div class="blog-card-hatebu"><a href="//b.hatena.ne.jp/entry/https://dreamparadaisu.com/visualbasic_54/" rel="nofollow"><img src="//b.hatena.ne.jp/entry/image/https://dreamparadaisu.com/visualbasic_54/" alt="" /></a></div><div class="blog-card-date">2021-01-19 01:43</div></div></div>
<p>&nbsp;</p>
<h1>まとめ</h1>
<p>VB.Netによるシリアル通信の接続や通信先の機器からデータの受信について、</p>
<p>紹介していきました。</p>
<p>&nbsp;</p>
<p>シリアル通信では通信先のパラメータが正しく合致していないと</p>
<p>通信が正常に行われないので通信先のパラメータを</p>
<p>よく確認したうえで通信をするようにしましょう。</p>
<p>&nbsp;</p>
<p>たとえ通信ができてもボーレートの違いによってデータの受信に失敗することもあります。</p>
<p>読者の方の少しでも参考になれば嬉しいです。</p>
<p>&nbsp;</p>
<p>最後までご覧いただきありがとうございます。</p>
<p><strong><em>・こちらの書籍を参考にVB.Net勉強しています。</em></strong></p>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15976080%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059112 Visual Basic 2019 パーフェクトマスター"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9112/9784798059112.jpg?_ex=200x200" alt="Visual Basic 2019 パーフェクトマスター" /></div><p class="wpap-title">Visual Basic 2019 パーフェクトマスター</p><div class="wpap-creator">金城俊哉</div><div class="wpap-price">3,300円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F16273997%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784798059006 作って覚える Visual Basic 2019 デスクトップアプリ入門"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/9006/9784798059006.jpg?_ex=200x200" alt="作って覚える Visual Basic 2019 デスクトップアプリ入門" /></div><p class="wpap-title">作って覚える Visual Basic 2019 デスクトップアプリ入門</p><div class="wpap-creator">荻原 裕之, 宮崎 昭世</div><div class="wpap-price">2,860円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>
<div class="wpap-tpl wpap-tpl-detail wpap-tpl-rakuten-books"><a href="https://hb.afl.rakuten.co.jp/hgc/g00q0728.wj9ire09.g00q0728.wj9isd7f/?pc=https%3A%2F%2Fbooks.rakuten.co.jp%2Frb%2F15009758%2F%3Frafcid%3Dwsc_b_ts_1064955924733071255" rel="nofollow" class="wpap-link" target="_blank" data-click-tracking="楽天ブックス 9784774190402 かんたんVisual　Basic改訂2版"><div class="wpap-image"><img decoding="async" src="https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/0402/9784774190402.jpg?_ex=200x200" alt="かんたんVisual　Basic改訂2版" /></div><p class="wpap-title">かんたんVisual　Basic改訂2版</p><div class="wpap-creator">高橋広樹</div><div class="wpap-price">2,904円<span class="wpap-date">(04/24 15:46時点)</span></div><div class="wpap-service">楽天ブックス</div></a></div>		<div class="wpulike wpulike-default " ><div class="wp_ulike_general_class wp_ulike_is_restricted"><button type="button"
					aria-label="いいねボタン"
					data-ulike-id="1664"
					data-ulike-nonce="ae478258ae"
					data-ulike-type="post"
					data-ulike-template="wpulike-default"
					data-ulike-display-likers=""
					data-ulike-likers-style="popover"
					class="wp_ulike_btn wp_ulike_put_image wp_post_btn_1664"></button><span class="count-box wp_ulike_counter_up" data-ulike-counter-value="+1"></span>			</div></div>The post <a href="https://dreamparadaisu.com/visualbasic_53/">【VB.Net】ハードウェアとシリアル通信をする方法</a> first appeared on <a href="https://dreamparadaisu.com">リョクちゃの電脳日記</a>.<div class='yarpp yarpp-related yarpp-related-rss yarpp-related-none yarpp-template-list'>
<p>この投稿の関連記事が見つかりませんでした。</p>
</div>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1664</post-id>	</item>
	</channel>
</rss>
