yoshiyuki's blog

Arduino/Teensy/Raspberry pi pico を利用した I2C, SPI 通信アプリを紹介します

Visual Studio で Raspberry Pi Pico と通信する Windows アプリを作る (1)

Arduiono や Raspberry Pi Pico を操作して I2C 通信などを実行する Windows アプリを作成したのですが、この記事ではその Windows アプリの基礎となる USB-Serial 通信の制御部分を紹介します。

Visual Studio の入手

Windows アプリは Visual Studio で作成しました。Visual Studio の無償版の Visual Studio Community は以下のサイトの上の方の「Visual Studio 無償版」をクリックした先からダウンロードできます。

visualstudio.microsoft.com

Visual Studio のインストール

Visual Studio のインストールではどのコンポーネントをインストールするかを選ぶ必要があります (インストール後に追加も可能)。今回の Windows アプリの作成のためには「.NET デスクトップ開発」を使うので、これにチェックを入れてインストールします。

新しいプロジェクトの作成

Visual Studio のインストールが完了したら、さっそくアプリの作成に取り掛かります。Visual Studio を開いたら、まずは「新しいプロジェクトのの作成」をクリックします。

次にプロジェクトのテンプレートを選択します。Windows アプリを作成する場合は「Windows フォームアプリ」を選択すれば良いのですが、作成する言語には C# と Vitual Basic の二つがあり、どちらの言語を使うかもここで選択する必要があります。ここでは C# を選択します。

最後にプロジェクト名を設定します。プロジェクト名はなんでもいいのですが、それがそのままソリューション名になり、実行ファイルのファイル名にもなるのでご注意ください。

「次へ」をクリックするとプロジェクトが作成され、作業画面が開きます。作業画面は真ん中に「Form 1」という名前の、のっぺらぼうの Window が置かれただけのものとなります。ここでアプリを作成します。

Hello World!

お試しで簡単なアプリを作ってみます。最初に作るプログラムといえば Hello World なので、ボタンをクリックしたらテキストボックスに「Hello World!」と出力されるアプリを作成します。
まずは空のフォームにボタンとテキストボックスを置きます。これは左のバーからツールボックスを開いて「Button」と「TextBox」をそれぞれドラッグするだけです。お試しなので配置は適当です。

フォーム上では配置した Button や TextBox の形をマウスでドラッグして変更できるのですが、TextBox はデフォルトでは1行となっているため横には広がっても縦には広がりません。そこでこれを複数行に拡張します。
フォームに置いた TextBox をクリックして選択した状態にすると右下に TextBox のプロパティが表示されるので、その中の「Multiline」という項目を探し、Default ではこれが「False」になっているので「True」に変更します。これで TextBox が複数行に対応するようになったので、マウスで縦にも広げられるようになります。

フォームの準備ができたので、ボタンをクリックした際の動作を記述します。動作を記述する場所はさっきフォーム上に置いたボタン (button 1) をクリックすると飛んで、そこにはすでに button 1 をクリックする際に実行される関数の記述が用意されています。ただし、関数の中身は空なので、このままでは button 1 をクリックしても何も起きません。そこで、この中にテキストボックスに Hello World! と表示する記述を追加します。

        private void button1_Click(object sender, EventArgs e)
        {
		textBox1.AppendText("Hello World!\r\n");
        }

button1_Click はフォーム上の button 1 がクリックされた際に呼び出される関数です。これは自動生成されるので、この記述でどうやって button 1 のクリックと関連付けられているのかは私も理解していません。
textBox1.AppendText はテキストボックスにカッコ内の文字を追加出力する関数です。ここで textBox1 はフォームに配置したテキストボックスに割り当てられた名前です。今回は1個しか配置していませんが、フォームに複数のテキストボックスを配置した場合はこの名前を変えることで出力先のテキストボックスを変更できます。
出力する文字は "Hello World!" と改行 (\r\n) です。

記述ができたのでアプリを起動して動作確認を行います。上のメニューの「Debug」「Any CPU」と並んだ先の 「(緑三角) (プロジェクト名: ここでは RPP_CTRL_CS)」をクリックすると Debug mode で作成したアプリが起動します。起動したアプリの方 (作成画面のフォームではなく) で button1 をクリックするたびにテキストボックスに Hello World! が出力されれば動作成功です。