3

私はArduino Megaを試しています。Arduino Ethernet Shieldもあります。

コンピューター(またはスマートフォンなどの他のデバイス)の助けを借りずに、それらを使用してメールを送信する必要があります。いくつかの記事を見つけることができましたが、受け入れられる解決策が見つかりませんでした...

どうすればいいですか?これを特別なアプリケーションに使用するように求めているわけではないので、欠落している詳細については任意の仮定を立てることができます.

4

1 に答える 1

1

上記のコメントの議論から、コードを作成したばかりの誰かからのコードが必要であるか、時間をかけてコンポーネントについて学び、コンポーネントを見つけたり作成したりする必要があるように思えます。

非標準パケットにのみ役立つ場合、彼らはこのプラットフォーム用のイーサネット シールドを作成しません。つまり、どこかの誰かが、あるレベルの IP スタックを作成しました。

ただし、メールを送信するには、Simple Mail Transfer Protocol (SMTP) を学習する必要があります。ほとんどすべてのインターネット プロトコル定義は、RFC (Request for Comments) と呼ばれるものを使用して定義されています。したがって、SMTP RFC をグーグルで検索すると、RFC 2821が見つかります。

IETFは、インターネット エンジニアリング タスク フォースです。これらのドキュメントの多くのコピーが多くの Web サイトにあります。また、インターネットの時代とこれらのプロトコルにより、多くの場合、以前の RFC を置き換えるために 1 つの RFC が作成されていることがわかります。バージョン番号は使用されていませんが、HTML 1.0、HTML 2.0 などのようなものです。RFC は RFC xyz を完全に置き換えると言っていますが、RFC xyz を見つけて読むことをお勧めします。できる限り戻って、それを学び、前進します。

TCPの上に乗っている多く/ほとんどのプロトコル(TCP は RFC で定義されたさらに別のプロトコルであり、後で詳しく説明します) は ASCII ベースであり、たとえば、Telnet でプロトコルを学習/実験することが非常に簡単になります。おそらくTelnetを使用してSMTPを学習します。

ほとんどのプロトコルはある種の半二重のものであり、接続を確立すると、多くの場合、サーバーが文字列を送信します。その文字列を確認してから、ある種の hello 文字列を送信すると、サーバーはある種の OKAY または失敗ステータスで応答します。SMTP の場合は、I am mailing from this email address、サーバーが OK と言う、 I want to mail this person または this list of people と言う、各メール アドレスに対して、OK または失敗を取得します。最終的に、メッセージの本文を送信する準備ができていることをサーバーに伝え、それを行い、定義された終了でメッセージを終了します。次に、サーバーが正常または失敗と言うか、さらにハンドシェークがある可能性があります。

ただし、一般的なプロトコルには、これが前後しています。通常、コマンドで文字列を送信すると、通常、サーバー側は短い OK またはエラーを返します。必要に応じて、エラーの詳細を返信することもありますが、常に、正常またはエラーを示す数バイトから始めます。通常、プロトコルにはフローがあり、これを最初に実行し、次にこれを実行する必要があります。

Berkeley socketsと呼ばれることもあるソケットプログラミングを学ぶ必要があります。Unix 間でほぼ移植可能なプログラムを作成できますが、プラットフォームが選択されている場合は、Windows ソケットを使用して Windows にも移植できます。最初にプロトコルを学習する必要があります。デスクトップ/ラップトップの方が優れており、埋め込まれていないため、そこでより速く完了することができます. ソケットを使用するためにフォークやスレッドを学ぶ必要はありません。そのように示すのは簡単ですが、ポーリングのみを使用して完全なアプリケーションを作成できるため、例は、何かを送信し、待機し、何かを送信し、待機する半二重であることを示している可能性があります。これらの単純な学習プログラムの場合、少し前にソケットを学習し、そこからすべてプロトコルを学習します。

ここまでは非常に簡単な部分でしたが、難しい部分は TCP/IP スタックです。そこに向かう途中で赤ちゃんの一歩を踏み出す経験を積むことなく、それを試みることはお勧めしません. たとえば、最初にARPに応答すること(さらに別の RFC プロトコル、アドレス解決プロトコル)、次にping ( ICMPエコー、ICMP プロトコルのサブセットの 1 つ)、次にIP基本 (パケットのスニッフィング)、UDPパケットの受信と生成を学習します。TCP はそれより上のまったく別のレベルであり、より多くのハンドシェークです。固定パケット サイズではなく、ストリーミングであり、コードをパケットで操作しないでください。シリアル ポートでの作業と同様に、バイト ストリームです。

独自の TCP スタックを作成することは非常に重要なことです。お勧めしません。RTOSや環境に関係なく、このプラットフォームのイーサネット シールド用の TCP/IP スタックを作成した人を見つけて、それを使用する必要があります。彼らは使う、使う。次に、プロトコルを使用したデスクトップ/ラップトップ ベースのエクスペリエンスを利用して、それを適用します。

上記の議論から、プロトコルなどを学びたくない場合は、Arduinoイーサネットシールドの例をグーグルで調べて、誰かが電子メールを送信する何かをしたかどうかを確認する必要があると思います.

于 2012-08-25T13:42:26.477 に答える