flamebox 发表于 2012-5-27 22:11:17

基于ethernet-Shield的简单udp to 232实现

       对于Arduino的开始关注得益于极客工坊,发现Arduino确实是一个很好的平台,很简单的方法就可以实现以往单片机复杂的应用。
但发现坛子的讨论热度一直不是很高,可能是由于Arduino在国内还不是很普及的原因。现将自己学习Arduino的一点心得拿出来,希望能起到抛砖引玉的效果,并希望能引起大家的积极讨论,能完善这个功能就最好了。
    用到的是官方的ethernet-Shield,实现的功能是通过以太网的udp发送数据到Arduino,转成串口的数据发出,反过来也可,实现串口和以太网的双向通信。程序很粗糙,功能很简单,希望大家一起去完善。
    #include <SPI.h>      
#include <Ethernet.h>
#include <EthernetUdp.h>


byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 1, 177);

unsigned int localPort = 8888;      
EthernetUDP Udp;
char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,
char ReplyBuffer[24]; //buffer to send packet,
void setup() {
   Ethernet.begin(mac,ip);
Udp.begin(localPort);
Serial.begin(9600);
}

void loop() {


int packetSize = Udp.parsePacket();
Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());
if(packetSize)
{
    // read the packet into packetBufffer
    Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);
    Serial.println(packetBuffer);//send the data to 232
memset(packetBuffer,0,sizeof(packetBuffer));

}
   if (Serial.available() > 0)
   {
   ReplyBuffer[0]= Serial.read();
   delay(2);
   Udp.write(ReplyBuffer);
   Udp.endPacket();
   }
}


Randy 发表于 2012-5-27 22:22:21

官方的ethernet-Shield 我曾经玩过一下下的W5100这个小模块,也玩过了ENC28J60,但是对于计算机其他的资源配置还是没得深入学习,有机会一定呀研究研究,现在国内的Arduino爱好者确实比较少,但是极客在这方面算是先进工作者了,给大家爱好者提供了一个很好的平台,对于新手来说,资源不少了,而且还会与日俱增中,希望得到大家的努力一起把国内的Arduino尽快普及!

幻生幻灭 发表于 2012-5-27 22:34:28

还没涉及以外网通讯,呵呵。不过支持下

陈冬冬 发表于 2012-5-28 13:16:04

{:soso_e101:}{:soso_e101:}觉得没有电子基础。有时候看帖子里的讨论好吃力。。。我觉得工坊可以注册个微博什么的。我在微博上看到几个大的创客空间都把arduino玩的挺好的。浙大的翁恺老师也在弄。
页: [1]
查看完整版本: 基于ethernet-Shield的简单udp to 232实现