Gelen Veriyi En Hızlı Şekilde Almak ve Ayırmak

Başlatan rtszkrsn, 08 Mayıs 2016, 22:23:19

rtszkrsn

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

rtszkrsn


mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

cripple

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 = "";
        }
      }

rtszkrsn

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.

rtszkrsn

#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.