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
yardımcı olcak kimse yokmu
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)
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 = "";
}
}
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.
#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.