test connexion serveur arduino

bonjour, je suis en train de galèrer un peu avec mon test de connexion.


J'aimerai qu'en appuyant sur un bouton, on puisse tester si le serveur arduino est disponible.


 


J'ai stocké mon adresse du texfield dans le NString : myString



myString = [[NSString alloc] initWithFormat:@%@" , contenue.text];
[contenue setText:myString];


et je m'en sers dans mon NSURL 



- (IBAction)testconnect:(id)sender {


NSURL *testurl = [NSURL URLWithString: myString];

NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:testurl] delegate:self];
[connection start];
}



#pragma delegate NSURLConnection

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[_recoisDonnee setLength:0];
NSLog(@%@",[(NSHTTPURLResponse*)response allHeaderFields]);

}

- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data{
[ _recoisDonnee appendData:data];
}


-(void) connectionDidFinishLoading:(NSURLConnection*)connection {
[webView loadData:_recoisDonnee MIMEType:@testarduino textEncodingName:@test baseURL:nil];

if (_recoisDonnee ) {
etaconnect.text = @connecté;
} else
etaconnect.text = @déconnectée;
}


_recoieDonnee étant la variable qui doit stocké les paqués de donnéées reçus.


Dans mon fichier .h



@property (nonatomic, retain) NSMutableData * _recoisDonnee;

Cependant, je voulais voir dans la console s'il se passe quelque chose et malheureusement, je n'obtiens rien.


J'aimerai, si je reçois quelquechose, modifier mon label : etatconnect


 


Pouvez vous svp m'aider 


 


merci  :'(


Réponses

  • Joanna CarterJoanna Carter Membre, Modérateur
    Tu n'as pas "connecté" le delegate de la connexion ?
  • Merci, tu as raison, jai oublié de créer le delegate, mais le problème est que j'ai deja un delegate pour un texfield, et je ne sais pas comment faire pour creer le deuxième 



    @interface troisieViewController : UIViewController <UITextFieldDelegate> {

    NSString *myString;


    IBOutlet UITextField * _contenue;

    }


    Et il faut pourtant que je rajoute le <NSURLConnectionDataDelegate>


     


    Comment faire ?


  • CéroceCéroce Membre, Modérateur

    <UITextFieldDelegate, NSURLConnectionDataDelegate>


  • Merci
  • Cependant, je n'arrive tj pas à  recevoir une réponse du serveur arduino


     


    voici mon code arduino : 



    // loop Start
    void loop() {

    EthernetClient client = server.available();
    if (client) {

    boolean currentLineIsBlank = true;
    stringInput = "";

    if (client.connected()) {
    while (client.available()) {

    char c = client.read();

    if(stringInput.length() < sizeString) {
    stringInput.concat(c);

    }

    if (c == '\n' && currentLineIsBlank) {

    client.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");

    client.println("<estadoDomotica>");

    // You can configure all pins (digitals or analog) here, copy and paste the block, and configure the pin
    // // P2
    client.print("<Pin>");
    client.print("<namePin>Pin 2</namePin>");
    client.print("<digitalPin>");
    // Digital pin to control
    client.print(Pin2);
    client.print("</digitalPin>");
    client.print("<Estado>");
    client.print(digitalRead(Pin2));
    client.print("</Estado>");
    client.print("</Pin>");


    à  la connexion au serveur avec safari sur mon mac, j'obtiens bien une réponse de la carte qui m'indique l'état (1 ou 0) de mes pins.


    Mais je n'arrive pas à  obtenir cette réponse via mon code objective c



    #import "troisieViewController.h"

    @interface troisieViewController ()

    @end

    @implementation troisieViewController
    @synthesize contenue,webView,monSwitch,imageeteint,imageallum,_recoisDonnee,etaconnect;

    // action permettant de conserver la valeur du texfield au changement de la vue

    - (IBAction)save:(id)sender {

    myString = [[NSString alloc] initWithFormat:@%@" , contenue.text];
    [contenue setText:myString];
    NSUserDefaults *strinDefault = [NSUserDefaults standardUserDefaults];
    [strinDefault setObject:myString forKey:@strigKey];
    [contenue resignFirstResponder];
    }


    - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
    // Custom initialization
    }
    return self;
    }

    - (void)viewDidLoad

    {
    _recoisDonnee = [[NSMutableData alloc]initWithLength:0];

    // enregistrer le contenue du texfield au chargement de la vue
    [contenue setText:[[NSUserDefaults standardUserDefaults]objectForKey:@strigKey]];

    [super viewDidLoad];

    // enregistrer l'etat du switch

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if ([defaults objectForKey:@SwitchState0])
    self.monSwitch.on = [defaults boolForKey:@SwitchState0];

    // changer image bulle en fonction position du switch

    if (monSwitch.isOn)
    { imageeteint.hidden=NO;
    imageallum.hidden=YES;
    }
    else

    imageeteint.hidden=YES;
    imageallum.hidden=NO;



    // Do any additional setup after loading the view.

    }

    - (void)didReceiveMemoryWarning
    {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
    }

    /*
    #pragma mark - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
    }

    */

    // allumer ou eteindre la cloture

    - (IBAction)buttonPressed:(id)sender

    {
    UISwitch *theSwitch = (UISwitch *) sender;

    if (theSwitch.isOn)
    {imageeteint.hidden=NO;
    imageallum.hidden=YES;
    // mettre cloture electrique sur ON
    NSString * myURLString = [NSString stringWithFormat:@http:;//%@/PIN8=ON", contenue.text];
    NSURL *url = [NSURL URLWithString:myURLString];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    [webView loadRequest:req];
    }
    else

    {imageeteint.hidden=YES;
    imageallum.hidden=NO;
    // mettre cloture electrique sur OFF

    NSString * myURLString = [NSString stringWithFormat:@http:;//%@/PIN8=OFF", contenue.text];
    NSURL *url = [NSURL URLWithString:myURLString];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];
    [webView loadRequest:req];
    }
    }

    // enregistrer l'etat du switch
    - (IBAction)saveSwitchState:(id)sender {NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if ([self.monSwitch isOn])
    [defaults setBool:YES forKey:@SwitchState0];

    else
    [defaults setBool:NO forKey:@SwitchState0];
    }


    #pragma delegate NSURLConnection

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

    NSLog(@%@",[(NSHTTPURLResponse*)response allHeaderFields]);

    }

    - (void)connection:(NSURLConnection*)connection didReceiveData:(NSData *)data{
    [ _recoisDonnee appendData:data];
    }


    -(void) connectionDidFinishLoading:(NSURLConnection*)connection {
    [webView loadData:_recoisDonnee MIMEType:@<?xml textEncodingName:@utf-8 baseURL:nil];

    if (_recoisDonnee != nil ){
    etaconnect.text = @connecté;
    } else
    etaconnect.text = @déconnectée;}





    # pragma mark - IBaction

    - (IBAction)testconnect:(id)sender {


    NSURL *testurl = [NSURL URLWithString: myString];

    NSURLConnection *connection = [NSURLConnection connectionWithRequest:[NSURLRequest requestWithURL:testurl] delegate:self];
    [connection start];
    NSLog(@%@",myString);
    }



    @end


    je suis un peu perdu là  !


  • Bonjour, je suis tj sur mon problème de connexion au serveur.


     


    quand je rentre l'adresse de mon serveur arduino, voici ce qu'il me répond: 


     


    Pin 20Pin 30Pin 40Pin 50Pin 60Pin 70Pin 80Pin 90Analog 0196Analog 1207Analog 2177Analog 3179Analog 4207Analog 5153


     


    j'aimerai récupérer cette réponse ainsi que la valeur d'une pin ( exemple pin8 , ici à  0) 


     


    pouvez vous svp m'aider un peu ?


     


    merci beaucoup

Connectez-vous ou Inscrivez-vous pour répondre.