完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
译自:http://ricardo-dias.com/2010/11/20/arduino-wakes-my-pc/ 我一直梦想着通过网络控制我房间里的一些物件。在电脑上看IPTV,开/关灯,遥控P2P下载…完成这些,我需要一个服务器– 我的旧台式机倒是可以做到。当然,我不是故意晾着它 整天/周/月的…^^ 我需要在任何想要用的时候,找到复活它的办法。所以我想我可以用一个Arduino和以太网插板来发送 局域网唤醒包(来实现远程服务器开机)。 这个UdpRaw库可允许发送原始数据包,所以我要做的只是执行以下这个“魔法包(Magic Packet)” – 它由 6个0xFF及紧跟的16个目标MAC地址 组成。 byte wolMac[] = { 0x00,0x00,0x00,0x36,0x45,0xC1 };现在,我所需要的是在6*0xFF后复制MAC地址16次。我是这么做的: byte all[102];int i,c1,j=0;for(i = 0; i < 6; i++,j++){ all[j] = 0xFF;}for(i = 0; i < 16; i++){ for( c1 = 0; c1 < 6; c1++,j++) all[j] = wolMac[c1];}运行这些代码之后,所有的这些阵列将获得完整的魔法包,预备发送: UdpRaw.sendPacket(all,102,targetip,targetPort);所以测试的话,我琢磨出了一个简单的程序,当按下一个按钮时,包就发送了。然后呢,我在pin 2上用了一个中断。Arduino基本能保持对那个引脚的侦听,无论从低到高,都将执行特定功能。 搞定上面之后,我计划用Arduino来侦听网络端口,当它接收到一个指定的包序列后,就唤醒电脑。这样就能在世界的任何有角落叫启动我的服务器了! 这是全部的Arduino 代码: /** Arduino WakeMyPc * Ricardo Dias * http://ricardo-dias.com/ * * This sketch sends the "magic packet" to wake up * a PC on Local Area Network when a push-button * is pressed. */#include PS:你可能在想“见鬼为什么它不能直接把这些包发送到电脑上?” 可以这样解释:我的ISP喜欢在每天夜里2点重启路由器。那么路由器重启,服务器就down掉,它不知道服务器连着的是哪个以太网端口。为解决此问题,这些包需要发送到广播IP。然而,在局域网中才行。 |
|
相关推荐
1 个讨论
|
|
只有小组成员才能发言,加入小组>>
549个成员聚集在这个小组
加入小组7026 浏览 0 评论
7498 浏览 0 评论
5365 浏览 1 评论
13113 浏览 5 评论
3861 浏览 2 评论
9424浏览 1评论
使用stm32,通过spi的dma 收发,运行多次读写以后w5500发送正常,接收卡死,高人帮忙看看
14676浏览 1评论
w5500 作为tcp server,客户端异常发送【RST,ACK】断开连接问题
15887浏览 1评论
7036浏览 0评论
7507浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 18:22 , Processed in 0.606519 second(s), Total 58, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
697