Show Posts
Pages: 1 [2] 3 4 5
16  International / Français / Re: adaptateur USB pour Arduino Pro Mini on: November 21, 2013, 07:01:03 am
Dans ce cas tu peux faire un reset manuel du pro mini lors de l’upload, j’ai le même cas…

Il faut faire plusieurs essais avant de trouver le bon moment, mais avec un peu d’habitude c’est très facile.
Personnellement, je clique sur le bouton “upload” de l’IDE, j’appuie sur reset de l’arduino et je le relâche 2 secondes après l’affichage de la mention “uploading” dans l’ide (1.0.5) et ça marche nickel.
17  International / Français / Re: passage en référence & on: November 21, 2013, 06:55:41 am
dans lipo.cpp:
Code:
void lipo::getLipoCellsCount(int *counter){
18  Using Arduino / Programming Questions / Re: Strange Serial Monitor results on: November 16, 2013, 04:56:26 am
Ah yes, you are right - after reading again very carefully the docs, I have to come to the conclusion that the pin mapping is way more complicated than I thought.
My mistake !
19  Using Arduino / Programming Questions / Re: Strange Serial Monitor results on: November 16, 2013, 03:56:56 am
Replace
Code:
pot=A4;
by
Code:
pot=4;

The values A1, A2 ... are there to use the analog input pins as digital input/output pins with pinMode, digitalRead, digitalWrite.
Just use the plain pin number with analogRead.
20  International / Français / Re: FTP : afficher fichier distant (NLST) on: October 17, 2013, 03:36:46 am
Les box des opérateurs sont toujours ouvertes en sortie, mais en entrée il faut généralement rediriger les ou les ports désirés vers un ordinateur du réseau local.
Ce qui ne devrait pas changer grand'chose entre http et FTP (sous réserve d'utiliser le FTP en mode passif, ce qui est le cas dans ton programme).
FTP over http ne sérail utile que si tu as absolument besoin du FTP et que ton seul point d'entrée ou de sortie de ton réseau serait le http (cas d'une entreprise par exemple où tu ne maîtrise pas ces réglages). Mais ça doit nécessiter un ordinateur intermédiaire qui décapsule le FTP du http et qui renvoie ensuite les requêtes FTP vers le serveur final. Plutôt lourd.
Le ftp est bien si tu veux uploader et/ou downloader des fichiers, mais On peut aussi le faire en http. Si tu veux de l'interactivité alors http avec Json est un bon choix - ça permettrait de faire un site web hébergé sur l'arduino et le browser irait communiquer en Json pour changer l'état d'un pin ou n'importe quoi d'autre.

En fait pour mieux architecturer ton projet, tu devrais voir qui sert des informations (l'arduino ou un autre ordinateur) et qui en a besoin (et pour quoi faire: juste uploader des fichiers de conf ? Interagir avec l'arduino ?). De là viendra le choix du protocle et d'implementer sur l'arduino le côté client ou le côté serveur.
21  International / Le bar / Re: Presentez vous on: October 15, 2013, 03:01:03 am
Tiens, je vais me présenter smiley

"Bonjour, je m'appelle Christian, 42 ans, sans emploi... Je vais passer parmi vous, une petite piece siouplait..."
Euh, non, ça c'est dans le métro smiley-grin

Bon je m'appelle réellement Christian, j'ai réellement 42 ans, mais j'ai du boulot, heureusement.
Mon projet arduino consiste en une installation domotique pour ma maison, qui, bien que non terminé, gère quand même l'éclairage.

Sinon au niveau connaissances ça va en informatique (c'est mon boulot), mais en électronique je suis une brèle... Mais grâce à internet en général et au forum en particulier, je me débrouille  smiley-lol

Édit: corrigé l'âge, je m'étais planté  smiley-confuse
22  International / Français / Re: FTP : afficher fichier distant (NLST) on: October 15, 2013, 02:47:34 am
Le FTP est un protocole très simple (beaucoup plus que le http) et permet justement d'éviter de mettre des serveurs http avec du php etc.

Pour voir si le fichier existe, tu peux utiliser la commande ´SIZE nom-du-fichier' qui devrait renvoyer une erreur si le fichier n'existe pas et sa taille s'il existe.

Comme le dit Barbudor, la rfc est ton amie smiley
23  International / Français / Re: FTP on: October 01, 2013, 08:08:30 pm
Y'a pas de quoi ! Et bon courage pour la suite !
24  International / Français / Re: FTP on: September 30, 2013, 08:19:26 pm
Oups smiley-eek
Il manquait le nom du paramètre:

Code:
byte connectData (EthernetClient *dClient)
{
bla bla bla
}

Essaie quand même de voir les bases du C parce que apprendre avec des copier-coller c'est pas top  smiley
25  International / Français / Re: FTP on: September 30, 2013, 12:02:24 am
oui, tu peux bien sûr mettre la partie en double dans un fonction, par exemple comme suit:

Code:
byte connectData (EthernetClient *)
{
    client.println(F("PASV"));
    if(!eRcv()) return 0;

    char *tStr = strtok(outBuf,"(,");
    int array_pasv[6];
    for ( int i = 0; i < 6; ++i) {
      tStr = strtok(NULL,"(,");
      array_pasv[i] = atoi(tStr);
      
      if(tStr == NULL)
      {
        Serial.println(F("Bad PASV Answer"));    
       return 0;
     }
    }

    unsigned int hiPort,loPort;

    hiPort = array_pasv[4] << 8;
    loPort = array_pasv[5] & 255;

    hiPort = hiPort | loPort; // FTP port

    if (!dclient.connect(server,hiPort))
  {
      Serial.println(F("Data connection failed"));
      return 0;
    }

    return 1;
}

et l'appeler depuis ftpdownload() et ftpupload () comme ça:

Code:
byte FTPupload(char fileName[13])
{

  Serial.println(F("Upload -------------------------"));

  fh = SD.open(fileName,FILE_READ);

  if(!fh) // test Open file
  {
    Serial.println(F("File open fail"));
  } else {


    EthernetClient dclient; // Open socket

if (!connectData (&dclient))
    {
      client.stop();
      fh.close();
return 0;
    }

    client.print(F("STOR ")); // SD opened for upload"
    client.println(repFTPinput+fileName);

bla bla bla…

Pour ce qui est des choses à optimiser, ce serait de nettoyer toutes les fonctions pour utiliser des variables locales et pas globales, gérer correctement les erreurs, etc. En gros transformer ce truc en librairie ftp présentable  smiley
26  International / Français / Re: FTP on: September 28, 2013, 01:18:25 am
@brakc

Autant pour moi, l'appel à ftp_readanswer () doit passer outbuf en paramètre plutôt que NULL - ce qui donnerait

Code:
return FTP_readAsnwer (&client, outbuf);

Puisque c'est la chaîne outbuf qui est analysée en retour de la commande PASV.

@refsmmat

To know everything about FTP, check the official documents: search for "rfc ftp" in Google.
As far as I know, there is no arduino FTP library.

27  International / Français / Re: FTP on: September 27, 2013, 02:55:45 am
Le problème de la fonction eRecv() est qu'elle lit tant qu'il y a quelque chose à lire, et après elle sort. Ça ne marche que si on a l'assurance que l'ensemble de la réponse du serveur arrive sans interruption notable. Sur un arduino qui est lent (comparativement à un ordi habituel), ça ne devrait pas poser de problème sauf si le lien réseau entre l'arduino et le serveur est mauvais - faible débit et/ou grande latence.

Le mieux serait de lire la réponse du serveur correctement. Un serveur ftp renvoie la réponse sous forme de chaînes de caractères terminées par \r\n (CR LF). Les trois premiers caractères de chaque sont composés de chiffres: le code retour. Le 4ème est soit un '-', soit un ' ': un '-' indique que ce n'est pas la dernière ligne de la réponse, un ' ' indique que c'est la dernière ligne.

Donc nous devons lire des lignes entières (c'est-à-dire lire jusqu'au caractères \r\n), tant que le 4ème caratère est différent de ' '.

Par exemple comme ceci (à adapter pour l'intégrer dans ton projet):

Code:
#define Fail(err,label)  if (err) {goto label;} else {;}

byte eRcv ()
{
return FTP_readAnswer (&client, NULL);
}



byte FTP_readAnswer (EthernetClient *controlSocket, char *buf)
{
    char buf2[81];
  

if (!buf)
buf = buf2;

    do
    {
        Fail (!FTP_readOneLine (controlSocket, buf, 80), stop);
Serial.print ("<--- ");  
Serial.println (buf);
    }
    while (buf[3] != ' ');
    
    return buf[0] - '0';

stop:
Serial.print ("read error\n");
return 5; // simulate server error
}

bool FTP_readOneLine (EthernetClient *controlSocket, char *line, short maxLength)
{
short i, j;
char cc, pc;


cc = 0;
i = 0;
line[0] = 0;

while (controlSocket->connected())
if (controlSocket->available())
{
pc = cc;
cc = controlSocket->read();

if (pc == '\r' && cc == '\n')
{
line[i-1] = 0; // ignore trailing CRLF
return true;
}

if (i < maxLength)
line[i++] = cc;
}

return false;
}

De plus un '1' en premier chiffre du code retour indique qu'il y aura une autre réponse plus tard; un '2' indique le succès, un '3' indique qu'il faut envoyer une autre commande, un '4' et '5' indiquent des erreurs. Il n'y a que quelques commandes ftp qui répondent avec '1' ou '3'.

Tout est là: http://www.ietf.org/rfc/rfc959.txt

Il y a d'ailleurs d'autres trucs qu'il faut adapter, par exemple eFail () dans ton cas pourrait être supprimé, et tu n'as aucune gestion d'erreur dans ton code - si la connexion au serveur échoue, tu appelles quand même ftpuload() etc.

EDIT: ilmanquait un petit bout dans le code
28  International / Français / Re: FTP on: September 26, 2013, 06:08:58 am
Bonjour refsmmat,

Essaie d'ajouter
Code:
client.println(F("TYPE I"));
  if(!eRcv())
  {
    dclient.stop();
    return 0;
  }

juste avant
Code:
client.print(F("STOR "));



Hi refsmmat,

Try adding

Code:
client.println(F("TYPE I"));
  if(!eRcv())
  {
    dclient.stop();
    return 0;
  }

just before
Code:
client.print(F("STOR "));
29  International / Français / Re: FTP on: September 26, 2013, 03:37:34 am
Simplfie FTPclose() comme suit et ça devrait aller:

Code:
byte FTPclose()
{
  Serial.println(F("Close FTP -----------------------"));

  client.stop();
  Serial.println(F("Command disconnected"));

  Serial.println(F("--------------------------------"));
}

d'ailleurs en regardant eRecv() je me dis que c'est un coup de bol que ça marche… le code d'exemple ftp qui t'a servi de base (et issu du site arduino) est bien crade…  smiley-cry
parce que le jour où le serveur répondra plus lentement (genre via une connexion gsm) ou de façon irrégulière, ça ira droit dans le mur…
il aurait fallu que l'auteur initial ait parsé correctement la réponse du serveur plutôt que de tout lire en vrac en espérant que ça arrive en continu sans à-coups…
30  International / Français / Re: [Automatisme] Portail et arduino on: September 25, 2013, 03:01:15 am
ce que j'ai fait pour mon portail Somfy:

achat d'une télécommande supplémentaire et soudage de quelques fils au niveau du bouton poussoir, relié à l'arduino via un optopcoupleur et je le commande via une pin digitale.

ça doit marcher pour à peu près toutes les marques je pense ?
Pages: 1 [2] 3 4 5