Ethernet
Ethernet
Information
本ページは私家版のため、誤り等あればご指摘ください。
最新の情報は公式のドキュメントをご参照ください。
http://mbed.org/handbook/Ethernet
TCP/IPプロトコルスタックについては http://mbed.org/handbook/Networking
イーサネットの機能とmbed基板上のPHYにより、コア内臓とモジュラージャックを付けることによりEthernetへ接続できます。
物理層を制御する最低限のライブラリです。実際にTCP/IPを使用するには EthernetNetIf 等を使用します。
http://mbed.org/cookbook/Networking-Stack-Releases
初期化
Ethernet eth;
eth: 名前
送信
val = eth.write(data, size);
data: 送信するデータの配列ポインタ(char *)
size: dataのバイト数
val: 準備できたバイト数
val = eth.send();
val: 0=失敗、1=成功
受信
val = eth.receive();
val: 受信したバイト数
val = eth.read(data, size);
data: 受信データを入れる配列ポインタ(char *)
size: dataのバイト数
val: 読み込んだバイト数
MACアドレス
MACアドレスを設定する
eth.address(mac);
mac: MACアドレス(char *)
mbedのMACアドレス
自身のMACアドレスを読み込む。
extern "C" void mbed_mac_address(char *s);
mbed_mac_address(&mac);
リンク状態
val = eth.link();
val: 0=オフライン、1=オンライン
リンク速度
eth.set_link(mode);
mode | 備考 |
---|---|
AutoNegotiate | オートネゴシエーション |
HalfDuplex10 | 10 Mbps、半二重 |
FullDuplex10 | 10 Mbps、全二十 |
HalfDuplex100 | 100 Mbps、半二重 |
FullDuplex100 | 100 Mbps、全二十 |
例
受信したデータのMACアドレスを表示
#include "mbed.h" Ethernet eth; int main() { char buf[0x600]; while(1) { int size = eth.receive(); if(size > 0) { eth.read(buf, size); printf("Destination: %02X:%02X:%02X:%02X:%02X:%02X\n", buf[0], buf[1], buf[2], buf[3], buf[4], buf[5]); printf("Source: %02X:%02X:%02X:%02X:%02X:%02X\n", buf[6], buf[7], buf[8], buf[9], buf[10], buf[11]); } wait(1); } }
Please log in to post comments.