1 Reply Latest reply on Jul 24, 2014 1:18 PM by mhahn

    Intel Galileo Ethernet connection to PC with C#

    MarkHals

      I'm using VS2012 on Windows 7 which is connected by ethernet to my Intel Galileo, whose sketches are uploaded with Arduino 1.5.3. My end goal is to control a motor through a ethernet cable, but I can't establish a simple connecting between the two programs.

       

      Here is my code on c#:

       

      using System;

      using System.Collections.Generic;

      using System.Linq;

      using System.Net;

      using System.Net.Sockets;

      using System.Text;

      using System.Threading.Tasks;

      using System.Windows.Forms;

       

       

      namespace TemperatureArduinoReader

      {

          static class Program

          {

           

              /// <summary>

              /// The main entry point for the application.

              /// </summary>

              [STAThread]

             

              static void Main()

              {

                  byte[] packetData = System.Text.ASCIIEncoding.ASCII.GetBytes("hello World");

       

       

                  string IP = "192.168.1.177";

                      //"127.0.0.1";

                  int port = 8888;

       

       

                  IPEndPoint ep = new IPEndPoint(IPAddress.Parse(IP), port);

                  Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

       

       

                  client.SendTo(packetData, ep);

               

              }

          }

      }

       

       

       

       

      Here is my code on Arduino, taken from the arduino webstite:

       

       

       

       

       

      #include <SPI.h>         // needed for Arduino versions later than 0018

      #include <Ethernet.h>

      #include <EthernetUdp.h>         // UDP library from: bjoern@cs.stanford.edu 12/30/2008

       

       

      byte mac[] = { 0X98 , 0x4F, 0xEE, 0x01, 0x54, 0xB3};

      IPAddress ip(192,168,1,177);

      unsigned int localPort = 8888;     

       

       

       

       

      char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet,

      char  ReplyBuffer[] = "acknowledged";       // a string to send back

      // An EthernetUDP instance to let us send and receive packets over UDP

      EthernetUDP Udp;

       

       

      void setup() {

        // start the Ethernet and UDP:

        Ethernet.begin(mac,ip);

        Udp.begin(localPort);

       

       

        Serial.begin(9600);

      }

       

       

      void loop() {

        // if there's data available, read a packet

        int packetSize = Udp.parsePacket();

        if(packetSize)

        {

          Serial.print("Received packet of size ");

          Serial.println(packetSize);

          Serial.print("From ");

          IPAddress remote = Udp.remoteIP();

          for (int i =0; i < 4; i++)

          {

            Serial.print(remote[i], DEC);

            if (i < 3)

            {

              Serial.print(".");

            }

          }

          Serial.print(", port ");

          Serial.println(Udp.remotePort());

       

       

          // read the packet into packetBufffer

          Udp.read(packetBuffer,UDP_TX_PACKET_MAX_SIZE);

          Serial.println("Contents:");

          Serial.println(packetBuffer);

       

       

          // send a reply, to the IP address and port that sent us the packet we received

          Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());

          Udp.write(ReplyBuffer);

          Udp.endPacket();

        }

        delay(10);

      }

       

      First, I upload the sketch to the Galileo, then open the Serial, then run the c# program, but nothing appears in the Serial.

       

      I've been beating my head against a wall trying to figure this out for a couple days. I've tried different combinations of IP addresses and everything else, now I'm looking for your help.

       

      Thanks, Mark