【VB.NET】シリアル受信データをDataGridViewにログ<便利ロガー>

シンプルで使い勝手のよいシリアル受信ロガーを作ってみました。
exeファイルを提供しているので、プログラム作らない方でも使っていただけます。
前作のシリアル受信基本プログラムでは、データをログして閲覧する機能はありませんでした。今回は、DataGridViewをメインにしたデータログプログラムにしました。
※DataGridViewとは、Excelみたいな表です。以後dgvと略称で表記します。
※VB.NET初めて1年経過した記念に作成しましたが、本プログラム作成とデバッグとブログ記事作成まで土日でできてしまいました。
VB.NET慣れれば生産性が凄く上がりますので、お仕事、研究の
推進力になるので、1-2か月かけて習得すれば一生の宝になります。

※2023年7月29日追記
ロガーは測定対象のTPOで仕様を最適化する必要があるので、多種作成してます。今回はBlueTooth送受信オートログです。
【STA23】C#BlueToothシリアルでRTKログ操作Pgm作った<マルチスレッドで小技有>

※2021年12月2日追記
本プログラムの機能拡張した応用作品つくりました。DGVからCSCワンタッチ保存する機能とグラフを追加

【VB.NET】リアルタイムグラフBitmap展開<その3DGV経由CSV保存>

●機能概要
⓪高速ログ対応(4msec周期まで確認済み)CH数16CH以下任意
 数msec周期の高速ログを行うために、サンプリング中は、string配列に保存しておいて
 ログをpauseした時に、瞬時にdgvへ配列をばらして書き込みます。
 ・CH数は、自由ですが、現在は16Ch以下に設定してあります。
 ・マイコンからは、数値のASCIIデータをカンマ区切りで最後のCRLFをつけて1データと送信してください。

①シリアルポート条件をdgvの最初の行に入力してからポートOPENします。
=>DataGridViewの0行目にCH数(任意)COMポート番号、ボーレートを入力します。

②ポートOPEN後、サンプリング開始はチェックボックスのON/OFFで決めます。
=>サンプリングの停止は、PAUSEチェックでログを中断させることにしました。
中断された瞬間にログしたstring配列からdgvへ全データを書き込みます。
=>中断を再開すると現在のデータ番号からログをスタートして、ログをためこみます。

③表をクリアして最初からやり直す時は、一旦DISCONNECTして、最初からやり直します。

④ログしたデータは、ctrl-A ctrl-C で全面コピーしてEXCELシートへペーストして保存
=>マウス右クリックでコピーペーストは対応してません。
=>csvファイルで保存してExcel読み込むより全コピー全ペーストしたほうが速くて手間も少ないです


●プログラム
 
実行形式 exeはこのzipです。Form1_Serial_Recieve_dgvTable_00_EXE
=>zipを解凍して、ダブルクリックすると「windowsによって保護されました」と言われるので詳細情報をクリックして実行クリックで動きます。
ソリューション全体はこちらのzipです。Form1_Serial_Recieve_dgvTable_00
ソースコードはgistにおいてあります。
https://gist.github.com/dj1711572002/c1bc13afb7a66b0701fc4b98773b962d

=>ご自分でFORMを作ることも簡単です。
form1にButton1,2,TextBox1,CheckBox1,DataGridView1の4個のコントロールを
ドラッグして、gistからコードをコピペすれば完成します。


全部で111行と短いコードです。
■準備:DataGridView1を表示ーツールボックスーデータからFORM1へドラッグドロップします。Propertyを開いて、(Name)をdgv1と短い名称に変更してリターンして閉じます。

1)DataGridViewに関わる設定と命令
1-1:Sub FORM1_Load()
本例では桁数16x行数1と初期設定してあります。
行番号のヘッダー幅を60ドットに設定
クリップボードへの全面コピー機能をエナブル
ボタン類のエナブル設定
1-2:Sub PrintData()
受信したデータはdArr() as string配列に格納されます。
データ番号rnでカウントは保持されます。rnは、Disconnectされる場合はゼロリセットされますが、start/pauseを繰り返している間はカウントアップが続きます。
1-3:Sub CheckBox1_CheckedChanged()
ログしたdARR()string配列をカンマでSPLITして、arr1配列にばらしてdgv1に書き込みます。
Forループで、rn_start行からrn行まで行をAddしていきます。
●操作方法
3STEPで超簡単です。

●2021年11月22日追記
上記プログラムを発展させてリアルタイムグラフでログしたデータを自在にスクロールしてログデータのグラフを確認してカーソル2本もついてます。

【VB.NET】リアルタイムグラフBitmap展開<その2カーソルと拡大縮小>

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です