C#言語(7)-XMODEMプロトコルによるデータ送信

今回は、XMODEMプロトコルを使用してデータを送信するアプリケーションを作成しようと思います。転送効率はあまりよくありません。そのため、データ容量の大きいものを送信することには不向きですが。マイコンのFWのようにそこまで大きくないデータ容量であれば、十分使えます。マイコンのFWを書き込む目的でXMODEMプロトコルを使ってみようと思いました。

XMODEMプロトコルに関しては、下記のページが参考になると思います。

https://ja.wikipedia.org/wiki/XMODEM

下記のようなダイアログを作成しました。

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

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

シリアル通信に関しては、下記のページを参照してください。

C#言語(2)-RS232C通信(シリアル通信)

ファイルの参照方法に関しては、下記のページを参照してください。

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

参照ボタンを押すと、送信したいファイルを選択するダイアログを表示、送信したいファイルを選択した後に、実行ボタンを押すとファイルの送信を開始します。今回、受信側はTeraTermを使用しています。また別の機会に受信側のアプリケーションも作成しようと考えています。

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

Python(6)-TCP通信を使用したファイルへの書き込み

今回は、TCP通信を使用してサーバー側のファイルを書き換えてみようと思います。TCP通信に関しては下記を参照してください。

Python(4)-TCP通信

今回も、ダイアログ無しです。IPとポートも直接コード内に書き込んでおきます。また、書き換えを行うファイルも直接コード内に書き込んであります。

TCPサーバーのアプリケーションは、接続が完了すると、クライアント側に「[*] Connection」と文字列を送信して、受信待ちになります。クライアント側からデータが送られてくると、送られてきたファイルを蓄積します。データの受信が完了すると、指定したファイルに書き込みます。

TCPクライアントのアプリケーションは、接続が完了すると、受信待ちになります。サーバー側から「[*] Connection」と文字列を受信すると、送られてきた文字列を表示します。表示が完了したら指定したファイルのデータを送信します。

下記の例は、TCP_Client.exeをTCP_Server.exeで書き換えたものになります。
書き換え前は、TCP_Client.exeを実行すると、クライアントダイアログが表示されます。

書き換え後は、TCP_Client.exeを実行すると、TCPリスナーダイアログが表示されます。

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

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

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

Python(4)-TCP通信

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

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

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

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

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

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