zcbzjx 发表于 2012-10-9 14:32:08

【翻译教程】enc28J60 和 Arduino (4)——网络唤醒

本帖最后由 zcbzjx 于 2013-2-22 19:51 编辑

这个教程估计有兴趣的人不多,不过为了完整还是翻译下。英文确实很菜,有错误的地方希望各位指正。
原文在这儿

    在这个教程我将演示如何用arduino网络唤醒你的电脑。
    几乎所有的网络适配器都有网络唤醒功能。他通过在网络上发送一个特殊指令唤醒你的电脑。

准备工作


    使用此功能的两个主要要求:

    如果您的网络适配器没有嵌入在主板上,你必须将电缆连接到主板:

    在BIOS中启用WOL功能:

    有些主板如果网络适配器关闭了WOL After Power Loss(断电后是否启用WOL)功能将无法唤醒的PC。事实上,新的主板可以启用WOL功能,即使断电后,你可以配置此功能,在主板的BIOS:


Magic Packet

    唤醒命令是在网络上发送的一个特殊数据包,称为Magic Packet,这个数据包被本地网络所有设备接收,因为他的目标MAC地址为广播地址(FF:FF:FF:FF:FF:FF),后面为要唤醒电脑的MAC地址重复16次。

    并不需要选择高级别的协议,一般约定用UDP协议,目标端口为7或者9。

ARDUINO

    注意:EtherCard库在这个应用有一个bug,我已经做了修正,请确保下载最新的库。

    你可以用sendWol()方法发送Magic Packet;这个方法需要目标电脑MAC地址作为参数:static byte targetmac[] = {0x00,0x1A,0x4B,0x38,0x0F,0x5C};
...
ether.sendWol(targetmac);通常,你可以找到完整代码在 GitHub repository
利用网络分析工具如Wireshark,你可以查看arduino发送的数据包,你会发现数据包是正常的:


红色圈中 MAC地址的广播,发送到网络中的所有设备
绿色圈中 IP和UDP协议的选择
蓝色圈中 目标PC的MAC地址重复16次

返回目录

benzking 发表于 2012-10-9 14:52:57

支持,这么好的教程为什么不支持!

MicroCao 发表于 2012-10-9 15:30:55

支持,论坛需要有楼主这般人才

Tim 发表于 2012-10-9 15:55:57

顶个,人才呀{:soso_e130:}

erjiang 发表于 2012-10-9 16:56:03

顶顶张老师

darkorigin 发表于 2012-10-9 21:08:38

说实话,我知道很多电脑具备远程网络唤醒的设置,但是从来没试过
。。。。。
学习了,谢谢!!!!
另外提示下,所有网卡在关机时候网卡不断电的机器都可以被网络唤醒(主机接电 关机时连接了网线网口会亮灯或者闪灯的机器)

zhangdeyue1 发表于 2012-10-10 11:29:36


又更新了
谢谢分享:)

ninjiafan 发表于 2012-10-11 01:13:50

网络唤醒这个功能很好用...非常好的教程...感谢分享.

太行摄狼 发表于 2012-10-22 07:33:24

xx谢谢分享楼主英文不错

wasdpkj 发表于 2012-11-23 22:02:17

好帖!太棒了

junyang44 发表于 2013-5-8 19:59:41

要写论文,借用一下设置bios的图片:)

superlsl 发表于 2013-5-14 14:06:40

谢谢楼主分享,正在一篇一篇看

liliane22 发表于 2013-6-15 18:17:57

谢谢分享......

mpsk 发表于 2013-8-25 22:59:02

感谢楼主分享,学习中~~~

andy_linky 发表于 2014-1-5 19:47:42

支持,花时间学习!
页: [1]
查看完整版本: 【翻译教程】enc28J60 和 Arduino (4)——网络唤醒