XIAOESP32-WROOM-32EPIC16F1827TWELITE(トワイライト)PIC12F675お問い合わせプライバシーポリシーPRVB.NET(VB2022)でファイルの名前を付けて保存する方法VB.NETコピー2024.10.19本記事はプロモーションが含まれています。こんにちは、ENGかぴです。2022)でダイアログを使用するとファイルを名前付けてデータを保存することができます。テキストボックスに表示したイベントのログをダイヤログを使用して保存する方法と読み込む方法をまとめました。ファイルを作成して保存する方法を下記記事にまとめています。この方法はアプリを管理するフォルダの固定した場所にログを保存する方法です。本記事ではログをダイアログを使用して任意の場所に名前を付けて保存します。Windowsフォームアプリケーション(.NETFramework)を対象としています。2022をVB2022とします。VB.NET(VB2022)のデスクトップアプリで動作確認したことを下記リンクにまとめています。関連リンクファイルの保存を確認するアプリファイルの保存を確認するアプリボタンのクリックなどのイベントを動作履歴(ログ)をTextBox1に表示し、ダイアログを使用してファイルの名前を付けて任意の場所にCSVファイル(テキストファイル)で保存できるようにします。ログはイベントの内容、ComboBox1及びListBox1の選択項目を1イベント1行で表示します。表示するイベントは以下の通りです。「CSV保存(エクスポート)」をクリックすると保存用のダイヤログが表示します。ファイルの名前と保存先を指定するとTextBox1に表示しているログのファイルを生成して保存(書き込み)します。「CSV保存(インポート)」をクリックすると読み込み用のダイヤログを表示します。CSVファイル(テキストファイル)を選択するとTextBox1に読み込んだデータを表示します。「クリア」をクリックするとTextBox1の表示をクリアします。スポンサーリンクコントロールの実装コントロールの配置Form1.vb[デザイン]にGroupBox、ComboBox、ListBox、TextBox、Buttonのコントロールを追加します。Form1を任意の名称に変更している場合はForm1を変更した名前に置き換えて下さい。コントロールはツールボックスのすべてのWindowsフォームまたはカテゴリを選択して追加します。GroupBoxはコンテナーのカテゴリに含まれており、ComboBox、ListBox、TextBox、Buttonはコモンコントロールのカテゴリに含まれています。最初にGroupBoxを配置します。ツールボックスのGroupBoxを選択するとForm1内でマウスのポインタがGroupBoxのアイコンなります。この状態で左クリックするとGroupBoxが配置できます。左クリックを維持したままマウスのポインタを操作することでサイズを調整しながら配置することができます。左クリックである程度のサイズで配置しプロパティを指定して微調整すると効率よく配置できます。同様にしてGroupBox内にComboBox1、ListBox1、TextBox1、Button1~6を配置します。GroupBox1のTextプロパティを「操作盤」に変更します。Button1~6のTextプロパティを「CSV保存(エクスポート)」「CSV保存(インポート)」「ボタン1」「ボタン2」「ボタン3」「クリア」に変更します。Subファイル保存のダイヤログを使用するためSystem.Windows.Forms.SaveFileDialogクラスを使用します。Newを使用して上記のクラスを初期化してインスタンス化(exFileオブジェクト)します。ダイヤログで保存するファイルの種別に制限を入れるためFilterプロパティを指定します。Filterプロパティの書式は[ファイルの説明]または[種別]を垂直(|)で区切って指定します。垂直(|)はShilt+[¥]のものです。アルファベットのI(アイ)l(エル)ではありません。例ではCSVファイルを生成するために[ファイルの説明]に「CSVファイル(*.csv)」区切りとして「|」,[種別]に「*.csv」を指定しています。同様にテキストファイルを生成するために[ファイルの説明]に「テキストファイル(*.txt)」区切りとして「|」,[種別]に「*.txt」を指定しています。exFileオフジェクトのShowDialog()メソッドでダイヤログを開くとファイルの保存先、ファイル名、ファイルの種類が選択できます。それぞれの項目を指定して「保存(S)」をクリックするとダイヤログからOK(保存(s))の応答がセットされるので戻り値を確認してファイルの生成に進みます。「キャンセル」をクリックすると処理せずダイヤログを閉じます。exFileオフジェクトのOpenFile()メソッドでファイルを開きます。System.IOクラスで管理するファイルの情報が戻り値にセットされます。ファイルにデータを書き込むためSystem.IOのStreamWriterクラスを使用します。StreamWriterクラスの初期化で引数を指定してインスタンス化します。インスタンス化したf_writeオブジェクトを使用してファイルを操作します。第1引数にファイルを指定します。例ではダイヤログで指定したファイル情報を格納しているstreamを指定しています。第2引数は保存するテキストのエンコード(文字コード)を指定します。例ではUTF-8を指定しています。Shift-JISを指定したい場合はSystem.TextのEncodingクラスのGetEncoding()メソッドで”shift_jis”を指定します。f_writeオブジェクトのWrite()メソッドの引数に書き込む文字列や数値を指定します。例ではTextBox1のTextプロパティ(表示している文字列)を指定しています。最後にClose()メソッドをf_openオブジェクトで開いているファイルを閉じます。ダイヤログを閉じるためexFileオブジェクトのDispose()メソッドで開いたファイルなどのリソースを開放します。MsgBox("読み込みに失敗しました。Subファイル読み込みのダイヤログを使用するためSystem.Windows.Forms.OpenFileDialogクラスを使用します。Newを使用して上記のクラスを初期化してインスタンス化(imFileオブジェクト)します。Filterプロパティでファイルの種別に制限をかけますが、ダイヤログでファイルを生成すると同様です。imFileオフジェクトのShowDialog()メソッドでダイヤログを開くと開くファイルの場所、ファイル名、ファイルの種類が選択できます。それぞれの項目を指定して「開く(O)」をクリックするとダイヤログからOK(開く(O))の応答がセットされるので戻り値を確認してファイルの読み込みに進みます。「キャンセル」をクリックすると処理せずダイヤログを閉じます。exFileオフジェクトのOpenFile()メソッドでファイルを開きます。System.IOクラスで管理するファイルの情報が戻り値にセットされます。ファイルからデータを読み込むためSystem.IOのStreamReaderクラスを使用します。StreamReaderクラスの初期化で引数を指定してインスタンス化します。f_openオブジェクトを使用してファイルを操作します。第1引数にファイルを指定します。例ではダイヤログで指定したファイル情報を格納しているstreamを指定しています。第2引数は保存するテキストのエンコード(文字コード)を指定します。ファイルを保存した時と同様のエンコードを指定します。例ではUTF-8を指定しています。StreamReaderクラスのEndOfStreamプロパティはファイルの文末を判断します。Until~Loopで文末になるまでループさせます。Until~Loopと条件が反対になるためEndOfStreamプロパティがFalseであればループするようにします。ファイルの内容はRead()メソッドで読み出すことができます。Readline()メソッドを使用すると改行コードまでの文字列を読み込むことができます。ログのデータは改行コードを入れて1行になるように保存(書き込んでいる)のでReadline()メソッドで1件のログが取得できます。取得した文字列をTextBox1のTextプロパティに指定して表示します。ファイルの読み込みが終わったら、Close()メソッドでファイルを閉じます。ダイヤログを閉じるためimFileオブジェクトのDispose()メソッドで開いたファイルなどのリソースを開放します。Sub参考として固定した場所に保存しているのファイルをダイヤログで取得する方法を説明します。上記記事ではログのファイルを固定した場所に保存しているためフォルダの階層を下ってファイルを探す必要があります。固定した場所のファイルをダイヤログで指定した場所とファイル名で生成したファイルにコピーして取得します。System.IO.FileクラスのCopy()メソッドでファイルをコピーします。第1引数にコピー元のファイルを指定します。第2引数にコピー先のファイルを指定します。コピー先のファイルはダイヤログで指定したファイルになります。第3引数は同じファイル名のファイルが存在する場合にコピーを許可するかの指定です。例ではコピーを許可するためTrueを指定しています。ファイルのコピーが完了したらダイヤログで使用したリソースをDispose()メソッドで解放します。スポンサーリンク動作確認(デバッグ)デバッグは実際のアプリケーションの動作を模擬して実行するものです。デバッグの開始はエディタ上部の「▶開始」をクリックすると開始します。動作確認の結果イベントの情報がログとしてTextBox1に表示されることを確認します。ログを確認した後でダイヤログからファイルが生成できることを確認します。デバッグを開始すると「アプリを起動しました。」のログを表示します。ComboBox1を変更すると「ComboBoxが選択されました。ListBox1を変更すると「ListBoxが選択されました。「ボタン1」をクリックすると「Button1がクリックされました。」の表示ログを残します。ボタン2、ボタン3もButton番号以外は同様のログを残します。「CSV保存(エクスポート)」をクリックするとダイヤログを開きます。ダイヤログの動作確認ダイヤログでファイルを保存する場所を選択します。動作確認のためデスクトップにログテストのフォルダーを生成してテキストファイルの形式で保存します。例ではファイル名に「test」を指定して保存しています。保存したtest.txtを開くとTextBox1に表示されていたログと同様のデータが保存されていることが確認できます。「クリア」をクリックするとTextBox1の表示をクリアすることができます。TextBox1をクリアした後で「CSV保存(インポート)」をクリックして表示される読み込み用のダイヤログからtest.txtを選択するとTextBox1にtext.txtの内容を表示することが確認できます。csvファイルを生成しても同様の結果になりましたが、csvファイルを開くためにエクセルが必要になります。コードのデバッグを行う場合は、コードエディタでブレークポイントを置くことで一時的にプログラムを停止させることができます。ブレークポイントでデバッグする方法ブレークポイントはコードエディターの最左部分をクリックして●マークが表示されれば設置できています。例ではButton1がクリックされた時に発生したイベントの先頭部分にブレークポイントを置いています。この状態でButton1をクリックするとブレークポイントでプログラムが一時停止します。F11を押すとステップ実行になるため1行ずつ内容を確認しながらデバッグを行うことができます。上部の「▶続行(C)」をクリックするとブレークポイント状態から通常の動作に復帰します。以下のソースコードはコンパイルして動作確認をしております。コメントなど細かな部分で間違っていたりやライブラリの更新などにより動作しなくなったりする可能性があります。参考としてお使いいただければと思います。"Button1がクリックされました。"Button2がクリックされました。"Button1がクリックされました。"ConboBoxが選択されました。"ListBoxが選択されました。"アプリを起動しました。MsgBox("読み込みに失敗しました。Classコントロールの番号やイベントハンドラーなどのプロパティ名などを変更している場合はソースコードのイベントハンドラーをお使いのイベントハンドラーに置き換えてください。Timer1は初期化時にComboBox1とListBox1のSelectedIndexChangedイベントによるログの保存を防止するために使用しています。Timerの使用方法は下記記事を参考にしてください。関連リンクVB.NET(VB2022)のデスクトップアプリで動作確認したことを下記リンクにまとめています。Studio以外にもVSCodeという便利なエディターを提供しています。下記リンクではVSCodeのインストールの仕方からC言語開発環境の作り方までをまとめています。VSCodeをインストールしてC/C++の開発環境を作るPR:無料トライアル実施中【PC専用】AIスライド資料作成ツールの利用:イルシル最後まで、読んでいただきありがとうございました。組み込みエンジニアPICマイコン(PIC16F1827)で外部割込みを使用するPIC16F1827は外部割込み機能(INT)を持っているため外部機器からのパルス信号に応答して処理を行うことができます。IDEのプラグインであるMCCでEXT_INTを実装して動作確認を行いました。組み込みエンジニアPICマイコン(PIC12F675)のタイマーの管理の仕方の一例マイコンのソフトを開発しているとタイマーを多く使います。DOから任意の期間信号を出力したり、DIに一定期間入力されている信号の判定したいときタイマーを使います。PIC12F675を使ったタイマーの管理の一例をまとめました。組み込みエンジニアLTspiceでspiceモデルを自作のシンボルや自動生成して追加する方法LTspiceにシンボルをデータを流用して他メーカのspiceモデルを追加する方法を他の記事で紹介しましたが、今回はシンボルを自作してspiceモデルを追加するとサブサーキットの定義から自動でシンボルを生成する方法をまとめます。Arduinoは初心者のためのスターターキットです。照度センサーなど複数のセンサーが実装されておりArduinoライブラリの使い方やC言語(C++)の学習ができます。XIAO31ESP32-WROOM-32E37TWELITE(トワイライト)26PIC16F182731PIC12F67522ノウハウ(体験談)36趣味と生活29その他6タグオペアンププロフィールENGかぴ当ブログの運営者のENGカピです。組み込みエンジニアとして10年以上の経験を活かしてセンサーモジュール等の動作確認したことをまとめています。広告、アフィリエイト収益で当ブログを運営させていただいております。defined.")}))})()タイトルとURLをコピーしました。