Ethernet shield ile Visual basic de yaptığım c# programı üzerinden arduino ya veri aktarma

Yardım edin demek yerine, kodunun ilgili bölümünü eklesen nasıl olur.
Bağlantı sürekli açık mı, dinleyen, bağlantı yapan hangi taraf. ?

C# da, textbox içeriğini bir string değişkene atayıp
conn.Send(bytesSent, bytesSent.Length, 0);
gibi bir şey yazman yeterli olacak.

Arduino tarafında da gelen değişkeni 65535 den küçükse int bir değişkene büyükse long/float bir değişkene atayacaksın. Bu atama içinde atoi/atol fonksiyonlarını kullanabilirsin.
Arduino tarafında gelen veriyi nasıl alacaksın kısmı server.read() veya client.read() şeklinde.
Hocam şuan işteyim eve geçince size gerekli bilgi kısımlarını ileticem yardımınız için cok tesekkur ederim
 
Hocam resimde gördüğünüz gibi saycın yanında, her +5 input verdimmi 9. pine sayıyo benim istediğim
Oraya eklediğim texbox1 (0- 999) veya daha büyük değer girdimmi, girilen veri sayacın içeriğinden büyükse bir pin çıkış vericek lütfen yardım edebilirminiz sadece bu komutu hem c#a hem arduinoya ekleyebilirmsiniz baya bi eksik bilgiye sahibim yeterli zamana sahip değilim bu öğrenim için lütfen yardım
Kod:
using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.Net.Sockets;

namespace WindowsFormsApp14

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        TcpClient myClient;

        NetworkStream ns;

        bool connected = false;



        //gönderilecek karakterler

        char[] led1 = { 'a' };

        char[] sayacl = { 'b' };

        char[] sıfır= { 'c' };



        byte[] readData = new byte[256];

        string[] stringSeparators = new string[] { "|" };

        private void Form1_Load(object sender, EventArgs e)

        {

            //timer lar 200ms' de tetikleniyor

            timer1.Interval = 200;

            timer2.Interval = 200;

          

            {



            }

        }



        private void button1_Click(object sender, EventArgs e)

        {

            //bağlı ise bağlantıyı kes

            if (!connected)

            {

                try

                {

                    myClient = new TcpClient("169.254.145.11", 61);         //server IP ve port

                    label1.Text = "Bağlandı";

                    connected = true;

                    ns = myClient.GetStream();

                    button1.Text = "DURDUR";

                }

                catch (Exception ex)

                {

                    MessageBox.Show("Bağlantı Kurulamadı!\n\r" + ex.Message, "Baglanti Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    connected = false;

                    button1.Text = "Bağlan";

                }

            }

            else

            {

                try

                {

                    myClient.Close();               //server ile bağlantıyı kes

                    button1.Text = "Bağlan";

                    label1.Text = "Bağlantı Yok";

                    connected = false;

                }

                catch (Exception ex)

                {

                    MessageBox.Show("Bağlantı Kurulamadı!\n\r" + ex.Message, "Baglanti Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error);

                    connected = false;

                    button1.Text = "Bağlan";

                    label1.Text = "Bağlantı Yok";

                }

            }

        }



        private void label1_Click(object sender, EventArgs e)

        {

          

        }



        private void button3_Click(object sender, EventArgs e)



        {   ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sayacl), 0, sayacl.Length);

            int recv = ns.Read(readData, 0, readData.Length);                               //gelen veriyi aldık

            String s = Encoding.ASCII.GetString(readData, 0, recv);

            String[] ss = s.Split(stringSeparators, StringSplitOptions.None);               //parseleyip lable' e yazdırdık

            label3.Text = ss[1];

        }



        private void button2_Click(object sender, EventArgs e)

        {

            if (connected)

            {

                ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(led1), 0, led1.Length);         //led1 karakterini gönderdik

                int recv = ns.Read(readData, 0, readData.Length);                               //gelen veriyi aldık

                String s = Encoding.ASCII.GetString(readData, 0, recv);

                String[] ss = s.Split(stringSeparators, StringSplitOptions.None);               //parseleyip lable' e yazdırdık

                label2.Text = ss[1];

            }

        }



        private void button4_Click(object sender, EventArgs e)

        {

            ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sıfır), 0, sıfır.Length);

        }



        private void timer2_Tick(object sender, EventArgs e)

        {

            ns.Write(Encoding.GetEncoding("UTF-8").GetBytes(sayacl), 0, sayacl.Length);

            int recv = ns.Read(readData, 0, readData.Length);

            String s = Encoding.ASCII.GetString(readData, 0, recv);

            String[] ss = s.Split(stringSeparators, StringSplitOptions.None);

            label3.Text = ss[1];

        }



        private void checkBox1_CheckedChanged(object sender, EventArgs e)

        {

            if (checkBox1.Checked)

            {

                if (connected)

                {

                    timer2.Start();

                }

                else

                {

                    checkBox1.Checked = false;

                }

            }

            else

            {

                timer2.Stop();

            }

        }

    }



}
ARDUİNO KODUM
Kod:
#include <SPI.h>

#include <Ethernet.h>



//sıradan bir mac adresi atadık

byte mac[] = {

  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED

};



//IP ayarlamaları

//aşağıdaki gibi ayarlama yaparsanız sorun ile kaşılaşmazsınız

IPAddress ip(169, 254, 145, 11);

IPAddress myDns(169, 254, 1, 1);

IPAddress gateway(169, 254, 1, 1);

IPAddress subnet(255, 255, 0, 0);

bool butondurum = false ;

bool butonbasildi = false;



int led1 = 5;

String sendVal = "";

int sayac = 1;

int say = 0;

int buton = 9;

//kullanmak üzere seçtiğimiz port

EthernetServer server(61);             

boolean alreadyConnected = false; //ilk kez bağlantı yapılıyormu kontrol değişkeni



void setup() {

  // Shield kurulumu

  Ethernet.begin(mac, ip, myDns, gateway, subnet);

  // server başlattık ve client' leri dinlemeye başladık

  server.begin();



  //Seri haberleşmeyi başlattık

  Serial.begin(9600);



  pinMode(led1, OUTPUT);



  pinMode(buton, INPUT);



  //IP adresini serial monitör' e yazdırdık

  Serial.print("TCP server address:");

  Serial.println(Ethernet.localIP());

}



unsigned long lastTime = 0;



void loop() {

  // bağlanan client' ları yakaladık

  EthernetClient client = server.available();



  if (client) {

    //ilk kez bağlantı yapılıyorsa tampondaki verileri temizledik

    if (!alreadyConnected) {

      // clear out the input buffer:

      client.flush();

      Serial.println("Baglantı Var");

      alreadyConnected = true;

    }



    //client den veri geliyor mu?

    if (client.available() > 0) {

    

    



  butondurum=digitalRead(buton);

  if(butondurum && !butonbasildi)

  {sayac ++; delay(10);}

  butonbasildi = butondurum;



      // Client' ten gelen veriyi oku

      char thisChar = client.read();

      // clientten gelen veriyi görüntüle

      Serial.print("Okunan Karakter: ");

      Serial.print(thisChar);

      Serial.print(" ");



      switch(thisChar)              //gelen karaktere göre işlem yapalım

      {

      

          case 'a':                 //a ise led yaka yada söndür

            digitalWrite(led1, !digitalRead(led1));

            sendVal = "led1|" + String(digitalRead(led1)) + "|";

            client.print(sendVal);

            break;

          

             case 'b':               //d ise sayac değerini geri gönder

            sendVal = "sayacl|" + String(sayac) + "|";

            client.print(sendVal);

            break;

          

           case 'c':

           sayac = 0 ;

           break;

          

          

      }



      //önceki tcp iletişim aradaki zamanı seri porta yazdırdık.

      Serial.print("Gecen Zaman: ");

      Serial.println(millis() - lastTime);

      lastTime = millis();



    }

  }



}
--------------------------------------------------------------------
ARDUİNO KODUM
Kod:
#include <SPI.h>
#include <Ethernet.h>

//sıradan bir mac adresi atadık
byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};

//IP ayarlamaları
//aşağıdaki gibi ayarlama yaparsanız sorun ile kaşılaşmazsınız
IPAddress ip(169, 254, 145, 11);
IPAddress myDns(169, 254, 1, 1);
IPAddress gateway(169, 254, 1, 1);
IPAddress subnet(255, 255, 0, 0);
bool butondurum = false ;
bool butonbasildi = false;

int led1 = 5;
String sendVal = "";
int sayac = 1;
int say = 0;
int buton = 9;
//kullanmak üzere seçtiğimiz port
EthernetServer server(61);             
boolean alreadyConnected = false; //ilk kez bağlantı yapılıyormu kontrol değişkeni

void setup() {
  // Shield kurulumu
  Ethernet.begin(mac, ip, myDns, gateway, subnet);
  // server başlattık ve client' leri dinlemeye başladık
  server.begin();

  //Seri haberleşmeyi başlattık
  Serial.begin(9600);

  pinMode(led1, OUTPUT);

  pinMode(buton, INPUT);

  //IP adresini serial monitör' e yazdırdık
  Serial.print("TCP server address:");
  Serial.println(Ethernet.localIP());
}

unsigned long lastTime = 0;

void loop() {
  // bağlanan client' ları yakaladık
  EthernetClient client = server.available();

  if (client) {
    //ilk kez bağlantı yapılıyorsa tampondaki verileri temizledik
    if (!alreadyConnected) {
      // clear out the input buffer:
      client.flush();
      Serial.println("Baglantı Var");
      alreadyConnected = true;
    }

    //client den veri geliyor mu?
    if (client.available() > 0) {
     
     

  butondurum=digitalRead(buton);
  if(butondurum && !butonbasildi)
  {sayac ++; delay(10);}
  butonbasildi = butondurum;

      // Client' ten gelen veriyi oku
      char thisChar = client.read();
      // clientten gelen veriyi görüntüle
      Serial.print("Okunan Karakter: ");
      Serial.print(thisChar);
      Serial.print(" ");

      switch(thisChar)              //gelen karaktere göre işlem yapalım
      {
      
          case 'a':                 //a ise led yaka yada söndür
            digitalWrite(led1, !digitalRead(led1));
            sendVal = "led1|" + String(digitalRead(led1)) + "|";
            client.print(sendVal);
            break;
           
             case 'b':               //d ise sayac değerini geri gönder
            sendVal = "sayacl|" + String(sayac) + "|";
            client.print(sendVal);
            break;
           
           case 'c':
           sayac = 0 ;
           break;
          
          
      }

      //önceki tcp iletişim aradaki zamanı seri porta yazdırdık.
      Serial.print("Gecen Zaman: ");
      Serial.println(millis() - lastTime);
      lastTime = millis();

    }
  }

}
 

Ekli dosyalar

  • Adsız.png
    Adsız.png
    6.5 KB · Görüntüleme: 8
Moderatör tarafında düzenlendi:

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst