Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: rtszkrsn - 08 Mayıs 2016, 22:23:19

Başlık: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: rtszkrsn - 08 Mayıs 2016, 22:23:19
Arkadaşlar merhaba
Üzerinde çalıştıgım projede arduinomu client olarak server a baglıyorum ve server hızlı şekilde bana veriler yolluyor örnek olarak yollanan kod"Arn.Resp:100=0:101=0:102=0:103=0:104=0:105=0:

Arn.Resp:100=1:Arn.Resp:101=1:Arn.Resp:102=1:Arn.Resp:103=1:Arn.Resp:104=1:"

Benim amacım gelen bu veriyi bölüp kullanmak bu veri bu şekilde devamlı olarak değişerek geliyor ben burdaki örnegin"102=1:" geldiği zaman çıkışımı aktif etcem "102=0" geldiği zaman çıkışımı pasif etcem
if (client.available())
{
        char c = client.read();
         
        if (readString.length() < 15)
        {
          readString += c ;
          Serial.print(c);
        }


bu şekilde gelen veriyi okuyabiliyorum fakat döngü içerisinde sorgulama yaptıramıyorum bu konu hakkında fikirlerinizi bekliyorum bu arada kullandıgım arduinom arduino mega ethernet için wiznet kullanıyorum
Başlık: Ynt: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: rtszkrsn - 12 Mayıs 2016, 21:59:36
yardımcı olcak kimse yokmu
Başlık: Ynt: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: mehmet - 13 Mayıs 2016, 13:22:18
Aşağıdaki gibi bir kaç linki inceleyebilirsiniz...
http://www.programiz.com/c-programming/c-strings (http://www.programiz.com/c-programming/c-strings)
http://www.tutorialspoint.com/cprogramming/c_strings.htm (http://www.tutorialspoint.com/cprogramming/c_strings.htm)
http://www.cprogramming.com/tutorial/c/lesson9.html (http://www.cprogramming.com/tutorial/c/lesson9.html)
https://developer.mbed.org/forum/helloworld/topic/3846/?page=1#comment-19179 (https://developer.mbed.org/forum/helloworld/topic/3846/?page=1#comment-19179)
Başlık: Ynt: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: cripple - 13 Mayıs 2016, 13:54:02
Benzer bir projede yaptığım işlemler tam olarak aradığın kod kendine uyarlayıp kullanabilirsin
Açıklaması da şu şekilde : belirgin 2 karakter tespit et, dizi içinde kaçıncı sırada  olduklarını bul ve  aradaki karakterleri al
Gördüğüm kadarıyla senin gelen datanda ":" karakteri işini görebilir,bendeki kod da "<h1>" ile "</h1>" arasını alıyordum
Kolay gelsin

#define BUFSIZ 100
char clientline[BUFSIZ];

    if (client.available()) {
      // read incoming bytes:
      char inChar = client.read();

      // add incoming byte to end of line:
      currentLine += inChar;

      // if you get a newline, clear the line:
      if (inChar == '\n') {
        currentLine = "";
      }

/**********************************************************************************/
      if (currentLine.endsWith("<h1>")) {
        readingRates3 = true;
      }
      else if (readingRates3) {
        if (!currentLine.endsWith("</h1>")) { //'>' is our ending character
          currRates += inChar;
        }
        else {
          readingRates3 = false;

          String justRates3 = currRates.substring(0, currRates.length()-4);
          Serial.println(justRates3);

          // Split justRates
          int firstSpaceIndex = justRates3.indexOf(" ");
          int secondSpaceIndex = justRates3.indexOf(" ", firstSpaceIndex+1);
          String firstVal = justRates3.substring(0, firstSpaceIndex);
          String secondVal = justRates3.substring(firstSpaceIndex+1, secondSpaceIndex);
          String thirdVal = justRates3.substring(secondSpaceIndex);


          currRates = "";
        }
      }
Başlık: Ynt: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: rtszkrsn - 15 Mayıs 2016, 12:28:40
Merhaba gönderdiğiniz örneğin mantığı aslında benim aradıgım ama nedense bir türlü örnekteki mantıgı anliyamadım sizden rica etsem kodların yanındaki açıklamalara türkçe olarak bir açıklama yazabilirmisiniz.
Başlık: Ynt: Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak
Gönderen: rtszkrsn - 15 Mayıs 2016, 16:17:39


#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>

//LEDLER

int IRS = 24;


//ETHERNET AYARLARI
char gelen[0];
char offset;
byte mac[] = {  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server(192,168,1,100); // SIOC ip
EthernetClient client;

void setup() {

   
    pinMode(IRS, OUTPUT);   // var101*
   
Serial.begin(9600);
if (Ethernet.begin(mac) == 0) {
    Serial.println("baglanti hatasi");
   
    client.connect(server, 8092);
  }
   if (client.connect(server, 8092)) {
   
   
    client.println("Arn.Inicio:100:101:102:103:104:105:"); /// değişenleri talep ediyoruz var listesi yolluyoruz
  Serial.println("baglandı");
 
  }
   else {
   
    client.connect(server, 8092);
  }
}
String readString;
String eksi="-";


void loop()  // döngü rutin
{
     
if (client.available())
{
        char c = client.read();

        if (readString.length() < 15)
        {
          readString += c ;
     
        }

if (c == '\n') {
for(c == ':' ;c =':';c==offset )

{
 
  Serial.println(offset);
 
  }
   
}
         

 
     readString="";         
  }
  }
     
şuan ki hali bu şekilde fakat çalışmıyor değer c değişkenine alındıktan sonra for döngüsüyle asıl değeri alim dedim önce c nin : ya eşit olup olmadıgına bakıyor eşitse c ye gelen veriyi aktarıyor bidahaki : ya kadar böyle devam ediyor fakat şuanda hiçbir şekilde çalışmıyor.