C#言語(6)-CSVファイルの読み込みと書き込み

今回は、アプリケーション上でCSVファイルを開き、変数にCSVファイルデータを保存した後、変数に保存してあるCSVファイルデータを書き込むアプリケーションを作成しようと思います。下記のようなダイアログを作成しました。

ダイアログの作成方法は、下記を参照してください。

C#言語(1)-アプリケーションを作成してみる

参照ボタンを押すと、読み込みたいファイルを選択する画面が表示されます。

実行ボタンを押すと、書き込み先ファイルを選択、または新規作成できる画面が表示されます。

書き込み先ファイルを選択すると読み込んだデータを書き込み先ファイルに保存します。

単純な機能ですが、よく使う機能だと思います。読み込むファイルにパラメータを設定しておき利用したり、読み込んだファイル加工して新規にファイルを作成したりといろいろと応用できます。

それでは、ソースコードを見ていきます。

Scratch(3)-ビンゴマシーン

今回は、ビンゴマシーンを作成していおうと思います。下記のページで、動作確認をした変数とリスト、乱数を使用して、ビンゴマシーンを作成していきます。

Scratch(2)-変数とリスト

今回ポイントになってくるのは、「~まで繰り返す」です。前回、「もし「「numberに「rmd」が含まれる」ではない」なら」というような処理にしましたが、実際は、「「「numberに「rmd」が含まれる」」ではない」まで繰り返す」という処理にすることで、スプライトを押すと必ずリストnumberに含まれていない数字が表示されます。下記のようにブロックを作成したら、スプライトをクリックしてみます。5秒間、リストに含まれていない数字を表示した後に、リストの中に保存してある数字が全て表示されます。

Scratch(2)-変数とリスト

今回は、Scratchにて、変数とリストを使ってみたいと思います。ビンゴマシーンを作成するためには、出てきた数字を覚えておく必要があります。ランダムに数字(乱数)を発生させて、まずは変数rmd(変数の名前は任意でよいです。)に保存します。変数に保存したら、その保存した値をリストnumber(リストの名前は任意でよいです。)に保存していきます。リストnumberに保存する際にですが、保存しようとした値がリストに含まれている場合は、リストnumberに保存しません。まずは、イベントより「このスプライトが押されたとき」をドラック&ドロップで真ん中の作業スペースに配置します。次に変数rmdを作成します。変数より「変数を作る」をクリックします。すると変数の作成画面が表示されます。

新しい変数名にrmdと入力して、OKボタンを押します。すると、変数rmdが作成されます。変数rmdが作成できたら、変数より「rmdを0にする」を配置します。

この「rmdを0にする」の0の部分に、演算より「0から10までの乱数」を配置します。1から10を1から75までに編集します。

これでランダムに1~75の数字が変数rmdに保存されます。次にリストよりリストを作るをクリックして、リスト作成画面を表示します。

新しいリスト名にnumberと入力して、OKボタンを押します。すると、変数numberが作成されます。変数numberが作成できたら、制御より「もし~なら」を配置します。この~の部分に「「numberにrmdが含まれる」ではない」という条件を追加します。「ではない」は演算に、「numberになにかが含まれる」は変数に、rmdは変数のカテゴリにあります。

「もし~なら」に条件が入力されたので、その条件に当てはまった時の処理を追加します。変数より「なにかをnumberに追加する」を配置します。何かには、変数より「rmd」を配置します。これで、乱数で発生した1~75の数字がnumberに含まれていない場合は、numberに追加されます。それでは、スプライトをクリックしてみます。

リストに数字が保存されていくと思います。これをベースにビンゴマシーンを作成しますが、これでは、同じ数字が発生した場合、numberに追加されません。ビンゴマシーンを動かしても数字が出てこないことになります。そのため、今回、「もし「「numberに「rmd」が含まれる」ではない」なら」というような処理にしましたが、実際は、「「「numberに「rmd」が含まれる」」ではない」まで繰り返す」という処理にする必要があります。

Scratch(1)-動作確認

Scratchは、MITメディアラボで開発されたプログラミング言語です。プログラミング言語というより、プログラミングブロックという感じでしょうか。プログラミングをする時のロジックを学べると思います。前回、Pythonを使用してビンゴマシーンを作成しましたが、プログラミング言語に取り組んだことのない小学生には、取り組みにくいと思いましたので、別のプログラミング言語にすることにしました。Scratchは以前から気になってはいたものの、言語というよりブロックの感覚があったので、使わずじまいでした。実際に試してみると、これはこれでおもしろいです。また、ブロックというところが小学生にも取り組みやすそうです。Scratchは下記よりダウンロードできます。

https://scratch.mit.edu/download

Scratchは、オフライン環境だけでなく、WEB上にも用意されているので、お好きな方を選んでいただけばと思います。私はオフライン環境で試そうと思います。ダウロードして、インストールした後に、Scratchを実行すると下記の画面が表示されます。

Scratchキャット(スプライト)が表示されているので、このスプライトをクリックするとコメントをする動作を作成してみます。イベントより「このスプライトが押されたとき」をドラック&ドロップで真ん中の作業スペースに配置します。その後、見た目より「こんにちは!と2秒言う」をドラック&ドロップで真ん中の作業スペースに配置します。この時、「このスプライトが押されたとき」の下につなげるように「こんにちは!と2秒言う」を配置します。試しに、2秒の部分を5秒に変更しておきます。それでは、スプライトをクリックします。スプライトが5秒間「こんにちは!」と吹き出しでコメントします。

このブロックを真ん中の作業スペースを配置することで、プログラミングを行っていきます。アルファベットを使用せず、日本語だけでもプログラミングできるのは、小さなお子さんにも取り組みやすくて良いですね。もう少し動作確認したのちに、「ビンゴマシーン」を作成していこうと思います。

2019年10月27日 | カテゴリー : Scratch | タグ : | 投稿者 : prog

Python(3)-ビンゴマシーン

前回、ビンゴマシーンを作成するために、GUIのベース作成を行いました。GUIのベース作成に関しては、下記のページを参照して下さい。

Python(2)-GUI作成

上記のページでGUIの画面の定義、ラベルの作成、ボタンの作成を行いましたが、ボタンを押したときの動作を記述していなかったので、記述しようと思います。まずは、下記のようにButtonを作成する際にcommadオプションを追加します。オプションとして、command=Start、command=Clearを追加しました。このオプションを追加することで、ボタンを押したときに、指定した関数にジャンプします。

#スタートボタン
btn_start = tkinter.Button(frame, text='スタート', command=Start, width=15)
btn_start.pack(padx=20,  side = 'left')

#クリアボタン
btn_clear = tkinter.Button(frame, text='クリア', command=Clear, width=15)
btn_clear.pack(padx=20,  side = 'left')

Python(2)-GUI作成

Pythonにて、GUIを作成したい場合は、tkinterパッケージでGUIを作成して、PythonからGUIを呼び出します。次回、簡易的なビンゴマシーンを作りたいと思いますので、そのGUIを作成しようと思います。とりあえず下記のようなGUIを作成してみます。

まずは、下記のように、tkinterパッケージをインポートします。

import tkinter

次に、下記のようにtkinterオブジェクトを取得します。これが、GUIを作成するベースのオブジェクトとなるので、rootという変数に保存しておきます。titleメソッドに文字列を入力すると、GUIのタイトルに入力した文字が表示されます。geometryメソッドがGUIの画面サイズです。

root = tkinter.Tk()
root.title("BINGO")
root.geometry("400x300")

GUIの画面にラベルを追加してみようと思います。thinkerオブジェクトには、任意の値を渡せないようです。その為、下記のような、コードを記述するとエラーになります。それでは、どうしたらよいでしょうか?

label_past = tkinter.Label(root, textvariable = "過去の数値", font=("",15))

Python(1)-動作確認

2020年より小学校でもプログラミング教育が始まるということで、何か良い言語はないかなと思い、探していたところ、Pythonを試してみることにしました。Raspberry piでも動作するので、PCを用意しなくてもよいので、便利です。まずは、Windows PCでPythonを試していこうと思います。Pythonは下記のサイトからダウンロードできます。

https://www.python.org/

ダウンロードして、インストールが完了したら、まずは、動作確認をしようと思います。下記のように環境変数にPathを追加しておくと、どのフォルダ階層からもPythonコマンドを実行できるので、Pathを追加しておきます。

それでは、コマンドプロンプトを実行して、下記のコマンドを入力してみます。インストールしたPythonのバージョンを確認できます。

python --version

次は、テキストファイルにPythonのコードを記述して実行してみます。下記のようにコードを記述して、.py拡張子で保存します。test-print.pyというファイル名にしました。

print("Hello world.")

ファイルの保存先フォルダにて、下記のコードを実行します。

python test-print.py

下記のように、Hello world.と表示されました。

動作確認はできたので、次回はダイアログを作成しようと思います。

2019年8月14日 | カテゴリー : Python | タグ : | 投稿者 : prog

GR-ROSE(4)-e2studio schetch

今回はe2studioで作成したファームウェアをGR-ROSEに書き込んでみたいと思います。出荷時はGR-ROSEのRXマイコンにUSBファームウェアが書き込まれています。リセットボタンを押すことでストレージとなり、binファイルをコピーするとユーザーアプリケーションとして実行されるようになっています。このbinファイルがArduinoライクなスケッチで作成したファイルになります。今回は、このUSBファームウェアをイレースして、別のファームウェアを書き込みたいと思います。

まずは、書き込みファームウェアを作成します。Timerを使用して、LEDを点滅するファームウェアを作成しようと思います。

それでは、新規プロジェクトの作成を行います。新規プロジェクトの作成は下記のページを参考にしてください。

RX(3)-RS232通信

上記のページでは、ターゲット・デバイスを「R5F565NEHDFC」に設定しています。今回使用するマイコンは、「R5F565NEHDFP」なので、「R5F565NEHxFP」に設定してください。

プロジェクト・エクスプローラーに新規プロジェクトが追加されました。中央には、スマート・コンフィグレータが開かれると思いますので、入出力ポートのコンポーネントとタイマーのコンポーネントを追加・設定していきます。追加、設定の方法は下記のページを参考にしてください。

RX(2)-タイマーLED点滅

コンポーネントの追加・設定ができましたら、コード生成ボタンを押します。プロジェクトツリーの中に、コードが生成されました。それでは、main関数、r_Config_TMR0_TMR1_cmia0_interrupt関数にコーディングしていきます。コーディングの内容は、下記のページを参考にしてください。

RX(2)-タイマーLED点滅

コーディングが完了しましたら、書き込みを行います。書き込みは、Renesas Flash Programmerを使用して行います。Renesas Flash Programmerは下記のページよりダウンロードできます。

http:// https://www.renesas.com/jp/ja/products/software-tools/tools/programmer/renesas-flash-programmer-programming-gui.html

GR-ROSE(3)-RS485

今回はGR-ROSEを使用して、RS485通信機能を作成しようと思います。前回(下記のサイト)でも述べましたが、GR-ROSEはさまざまなインターフェイスを搭載しております。

GR-ROSE(1)-動作確認

RS485を搭載している基板を探している時に、GR-ROSEを見つけました。今回は、RS485通信機能を使用して、LEDのON_OFFを実現します。

それでは、IDE for GRの実行して、USBケーブルでPCとGR-ROSEを接続しておきます。

GR-ROSEのスケッチでは、Serial7クラスを使用して、RS485通信を行います。まずは、シリアル通信のボーレート、ポートの設定を行います。シリアル通信のボーレート、ポートの設定は下記のように、beginメソッドを使用します。

GR-ROSE(2)-Timer

今回はGR-ROSEを使用して、TimerによるLEDの点滅を作成しようと思います。前回(下記のサイト)では、LEDの点滅をSLEEP関数を使用して実現しました。

GR-ROSE(1)-動作確認

今回は、Timer機能を使用してLEDの点滅を実現します。

それでは、IDE for GRの実行して、USBケーブルでPCとGR-ROSEを接続しておきます。