Python(5)-TCP通信を使用したコマンドラインインタプリタ

今回は、前回作成したTCP通信を使用してサーバー側をコマンドラインで
制御してみようと思います。Pythonで構築したTCP通信ついては下記のページを紹介しています。

Python(4)-TCP通信

前回と同様で、ダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側からコマンドが送られてくると、送られてきた情報をコマンドラインインタプリタに処理させます。処理した内容を返信します。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。

下記の例は、クライアント側がdirコマンドを送信した際の動作になります。

サーバー側の画面では、下記のように表示されています。

サーバー側のソースコードは下記のようになります。

Python(4)-TCP通信

今回は、C#でも作成したTCP通信のアプリケーションをPythonを使用して作成してみようと思います。C#で作成したたアプリケーションは下記のページを参考にしてください。

C#言語(3)-TCP通信(クライアント編)
C#言語(4)-TCP通信(リスナー編)

今回はダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。送信と受信を順番に行うような仕組みになっています。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から文字列が送られてくると、送られてきた文字を受信して表示します。表示が完了したら今度は文字を送信できます。受信と送信を順番に行うような仕組みになっています。

動作させると下記のように文字列を送受信できます。

クライアント側をC#で作成したアプリケーションでも文字列を送受信できます。。

サーバー側のソースコードは下記のようになります。

RX(3)-RS232通信

今回はRXマイコンを使用して、RS232通信機能を構築します。使用するマイコンは、「RX65N」になります。「Renesas Starter Kit+ for RX65N-2MB」評価ボードを使用します。

前回まで、「CS+」を使用していいましたが、今回から、統合開発環境を「e2studio」に変更しました。RXの場合、なんとなくですが、e2studioの方が使いやすそうに思いました。

まずは、新規プロジェクトを作成します。[ファイル]→[新規作成]→[C/C++ Project]を選択します。

「New C/C++ Project」ダイアログが開かれるので、「Renesas CC-RX C/C++ Executable Project」を選択して、「次へ」を押します。

プロジェクト名に、任意の名称を入力して、「次へ」を押します。今回は、「RX65N_UART」という名前にしました。

ターゲット・デバイスを設定します。今回使用するマイコンは、「R5F565NEHDFC」なので、「R5F565NEHxFC」を選択します。Hardware Debug 構成生成は「E2 Lite(RX)」を選択します。設定できたら、「次へ」を押します。

スマート・コンフィグレータを使用するので、チェックボックスをONします。
設定できたら、「次へ」を押します。

ここでは、今回、特に設定はしないので、「次へ」を押します。

「終了」ボタンを押して、プロジェクトを作成します。

プロジェクト・エクスプローラーにプロジェクトが追加されました。中央には、スマート・コンフィグレータが開かれています。

スマート・コンフィグレータを使用して、まずは、PORTの設定をします。

コンポーネントの追加方法は下記のページを参考にして下さい。

RX(1)-スイッチによるLED点灯

入出力ポートのコンポーネントを追加でましたら、PORTの設定を行います。「Renesas Starter Kit+ for RX65N-2MB」には、LEDが4個搭載しています。 「LED0(緑色)」はP73、「LED1(橙色)」はPG7、「LED2(赤色)」はPG6、「LED3(赤色)」はPG5を使用します。今回は、LED1とLED2を使用します。使用するPORTは、P7G7とPG6なので、PORTEにチェックを入れます。

LED1はPG7、LED2はPG6を使用するので、PORTGタブを選択して、PG7、PG6を出力に設定します。Highで消灯なので、1に出力するにチェックを入れておりきます。

次に、シリアル通信の設定を行います。まずは、コンポーネントの追加です。SCI(SCIF)調歩式同期モードを選択して、「次へ」を押します。

作業モードを「送信/受信」に設定します。「Renesas Starter Kit+ for RX65N-2MB」はシリアル通信コネクタがSCI8に接続されているので、リソースは「SCI8」を選択します。選択ができましたら、「終了」を押します。

シリアル通信のコンポーネントが追加されました。設定は初期のままで大丈夫です。

設定ができましたらコード生成ボタンを押します。プロジェクトツリーの中に、コードが生成されました。それでは、ボタンが押されたときの処理内容をmain関数にコーディングしていきます。RX65N_UART.cを開きます。main関数を下記のようにコーディングします。

RenesasSynergy(10)-サービスコール関数

前回は、Renesas Synergy S7G2マイコンをRS232通信機能とMessagingの機能を追加したファームウェアを作成しました。今回は、このMessaging機能の変わりに、ThreadXに用意されているサービスコール関数を使用して、thread間の処理の受け渡しを行おうと思います。使用する評価ボードは、RenesasSynergyマイコン「S7G2」が搭載されている「SK-S7G2」です。

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

RenesasSynergy(1)-LED点滅

threadを2つ追加します。threadの作成方法は、下記のページを参照してください。

RenesasSynergy(3)-タイマを使用したLEDの点滅

new_thread0、new_thread1を作成しました。今回、TIme Slicing intervalを0で設定していますので、注意してください。

続いて、UARTをnew_thread1に追加します。UARTの追加方法は下記のページを参照してください。

RenesasSynergy(8)-RS232通信

下記のようにthreadの追加、UARTの追加をしました。

それでは、[Generate Project Content]を選択して、ソースコードを生成します。

RenesasSynergy(9)-Messaging機能

前回は、Renesas Synergy S7G2マイコンをRS232通信機能を追加したファームウェアを作成しました。今回は、このファームウェにMessaging機能を追加して、thread間の処理の受け渡しを行おうと思います。使用する評価ボードは、RenesasSynergyマイコン「S7G2」が搭載されている「SK-S7G2」です。前回作成したプロジェクトファイルを改良していこうと思います。

RenesasSynergy(8)-RS232通信

今回は、RS232通信機能を追加したファームウェアを作成します。使用する評価ボードは、RenesasSynergyマイコン「S7G2」が搭載されている「SK-S7G2」です。評価ボードにはLEDが3つ用意されているので、L1,ONでLED1が点灯、L1,OFFでLED1が消灯、L2,ONでLED2が点灯、L2,OFFでLED2が消灯するコマンドを用意して、RS232通信を行える機能を作成しようと思います。デリミタは’\r’です。

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

RenesasSynergy(1)-LED点滅

今回は、プロジェクト名を「RS232」としました。テンプレートは、BSPを選択しました。プロジェクトファイルが作成できたので、まずは、スレッドを2つ作成します。1つ目のスレッド(new thread0)は、特になにも処理をしないスレッドです。2つ目のスレッド(new thread1)は、RS232通信の受信と送信を行います。

RL78G13(5)-RS232通信

今回は、RS232通信機能を追加したファームウェアを作成します。使用するマイコンは「RL78G13」、評価ボードは、「Renesas Starter kit for RL78/G13」です。評価ボードにはLEDが4つ用意されているので、L1,ONでLED1が点灯、L1,OFFでLED1が消灯、L2,ONでLED2が点灯、L2,OFFでLED2が消灯するコマンドを用意して、RS232通信を行える機能を作成しようと思います。デリミタは’\r’です。

それでは、新規プロジェクトを作成します。今回は、プロジェクト名を「RL78G13_RS232」としました。新規プロジェクトの作成方法は、下記のページを参考にしてください。

RL78G13(1)-SWによるLED点灯

それでは、コード生成ツールを使用して、設定を行っていきます。[クロック発生回路]、[ウォッチドック・タイマ]は「RL78G13(1)-SWによるLED点灯消灯」で行った設定と同じです。

次にRS232通信を行うために、UARTを設定します。プロジェクトツリーから[コード生成ツール]→[シリアル]を選択します。チャンネル0を「UART0」にして、送信/受信機能を選択します。

C#言語(3)-TCP通信(クライアント編)

C#言語を使用して、TCP通信のアプリケーションを作成します。今回は、クライアント側のアプリケーションになります。TCP通信アプリケーションのダイアログは下記のようになります。

IPには、接続先アドレスを入力して、ポートには、使用するポート番号を入力します。IP、ポートは自分のPCの環境に合わせてください。私の場合は、IP「192.168.25.1」、ポート「8888」を入力しました。また、セキュリティソフトがインストールされている場合は、ネットワークに接続できるように、設定をして下さい。入力したら、開始ボタンをクリックする事で、接続を試みます。接続が完了したら、下記のようなメッセージが表示されます。

ソースコードは下記のようになります。※リスナー側との接続、データの送受信部分を抜粋。

続きを読む