• Merhaba Arkadaşlar.

    while (client.connected()) {
    // read this packet
    while (client.available()) {
    char c = client.read();
    Serial.print(c);
    }
    elimde böyle bir kod parcası var ve sürekli olarak web servisimden aşağıdaki gibi kod parçası geliyor.
    HTTP/1.1 200 OK
    Cache-Control: private, max-age=0
    Content-Type: text/xml; charset=utf-8
    Server: Microsoft-IIS/8.5
    X-AspNet-Version: 4.0.30319
    Date: Fri, 02 Dec 2016 21:09:41 GMT
    Content-Length: 90

    < ?xml version="1.0" encoding="utf-8"? >
    < string xmlns="http://tempuri.org/">xxx< /string >

    Eğer veri varsa xxx yazıyor yoksa son satır olarak bunu yazıyor.
    Benim istediğim gelen bu verilerin sadece beni ilgilendiren kısmını almak yani 'den sonra başlayacak var ise 'e kadar verileri okuyacak. Gelen bu veriyi bu kadar string ifadeden nasıl ayırabilirim ? Şimdiden teşekkürler.
  • substring metodunu araıştırın ya da indexOf metodu
  • O metotları biliyorum da şimdi onun için ayrı bir işlem yapmak gerecek. Şöyle ki client.read() ile karakter karakter okuma yapıyorum onları tek bir string ifade de toplayacağım sonra indexOf la içinde aradığım kelime var mı diye bakacağım. Buda arduinomu yavaşlatacak. Ben direk veri okurken bi filtreleme yapabilir miyim diye sormuştum. Çünkü istediğim ifade sayısal bir ifade. 1 , 2 veya 3 gelebilir. 1 , 2 veya 3 de zaten client.read() metodunda var.
  • Yapabilirsin,
    gelen datanın yanın senin deyişinle xxx in önüne ifade belirteci koy (sallıyorum 1010) sonra datanı yaz,mesela xxx gelecek olsun, senin toplam datan 1010xxx diye göndermiş olacaksın.
    Alıcı kısmında da zaten tek tek okuduğun için okuma sırasında şart koy
    örneğin
    gelenkarakter = cliend.read();
    gelendata[i]=gelenkarakter;
    if(gelendata[0]==1)
    {
    if(gelendata[1]==0)
    {
    if(gelendata[2]==1)
    {
    if(gelendata[3]==1)
    {
    işte buraya kadar girmiş ise şartların demekkki ilk yolladığın ifade belirtecin doğru alınmış buradan sonraki gelen datalar senin okumak istediğin datalardır.
    burada datanı okuyabilirsin.
    i++;
    }
    else i=0;
    }
    else i=0;
    }
    else i=0;
    }
    else i=0;


    gibi.......
  • Sağolun hocam cevaplarınız için. Görünen o ki her türlü gelen her karakter için sorgu yapıcam
  • while (client.connected()) {
    // read this packet
    while (client.available()) {
    char c = client.read();
    Serial.print(c);
    x += c;
    delay(3);
    if (x.indexOf("xxx 1") != -1)
    {
    delay(3);
    digitalWrite(5, HIGH);
    delay(500);
    digitalWrite(5, LOW);
    x = "";
    }
    if ( x.indexOf("xxx 2") != -1)
    {
    delay(3);
    digitalWrite(6, HIGH);
    delay(500);
    digitalWrite(6, LOW);
    x = "";
    }
    }

    }
    hocam böyle bir şey yazdım istediğim veri gelirse 2li röleden birindeki lamba yanıp sönecek. ama benim rölelerim sürekli çalışıyor. veri geldiğinde sönüp yanıyor.sorun neyden kaynaklı ? kendim başka bir projede röleyi yakıp söndürebiliyorum
  • //protokol oluşturmalısın diye düşünüyorum

    String ClientReceiveText="";

    // fonsiyon oluşturalım..

    String buff_analis(String protocol_message)
    {
    String str_command=protocol_message.substring(0,2);
    String str_response="";


    if (str_command=="AA")
    {
    str_response=">AA";
    //işlemler
    }
    if (str_command=="AB")
    {
    str_response=">AB";
    //işlemler
    }

    .
    .
    .
    .
    .
    .
    .
    .


    return str_response;
    }




    // ana döngü içerisine...
    while (client.connected())
    {
    // read this packet
    while (client.available())
    {
    char c = client.read();

    ClientReceiveText+=c;

    if (c == '\r')
    {
    Serial.println(buff_analis(ClientReceiveText));
    ClientReceiveText="";
    }


    }
    }


    //birde böyle dene
    Saygılarımla..

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.