Pages: 1 2 [3] 4   Go Down
Author Topic: lire des valeurs sur Arduino en c / c++  (Read 4961 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je suis sur MAC OS X (10.6.4)

La j'a réussi a lire les infos du port com  smiley mais seulement quand je ne remet pas a zéro le tableau table dans la fonction read, si je remet a zéro le tableau je n'arrive pas a lire de valeur.

Quand j'arrive a lire au bout d'un certain temps le port COM plante complètement je ne peut plus l'utiliser,je dois redémarrer mon pc pour pouvoir réutiliser le port com de l'usb.
Peut être que je lis trop rapidement sur le port série dans mon programme.

J'ai bien enlevé le "ln" dans le code arduino.
Logged

Central Europe
Offline Offline
Edison Member
*
Karma: 6
Posts: 1220
Use the Source, Luke.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je ne comprend pas trop ce qu'il se passe en fait.

Romain,

en effet, ça parait être le cas. Je n'ai pas regarder ton programme en détail, mais j'ai eu l'impression que le problème fondamental est que le comportement de la fonction read n'est pas vraiment clair. Il vaut mieux revoir la documentation pour celle-ci en détail. Le troisième paramètre ne sont pas les lettres à lire mais que le maximum. Pour un fichier c'est plus où moins la même chose, mais pour des données transférées par l'interface sérielle (ou provenant du clavier) les valeurs lues sont souvent moins.

Pour toi ça veut dire, tu dois prendre en compte la valeur retourné par la fonction read et traiter tes infos que lorsque tout est arrivé.

Korman
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 10
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bon maintenant j'arrive a lire sur le port mais j'ai deux problème qui persiste:
-le 1er c'est que mon programme ne capte pas systématiquement toutes les messages du port com (j'ai fait un code sur l'arduino pour envoyer le message que quand j'appuis sur un bouton et la trame est lu au bout de n appui.
-Le 2eme est que quand je remet le tableau a 0 dans la fonction de lecture je n'arrive plus a lire le message entrant.

Code c de la fonction de lecture du port:
Code:
int readport()
{
        //in[5]=0; dès que j'exécute ces lignes je n'arrive plus a lire sur le port.
      //in[4]=0;  
      //in[3]=0;
      //in[2]=0;
      //in[1]=0;
      //in[0]=0;
      int i=1;
      int reade;
      int j;
    //{
      while(in[5]!='$')
      {
      reade=(read(fd,&in,6));
      if(reade<0)
      printf("erreur lecture\n code: %d\n",reade);
      else printf("read=%d\n",reade);
            printf("sizeof de table: %d\n",sizeof(in));
            }
            return &in;
//    }
}

Main():
Code:
int main(int argc, char *argv[])
{

      int c,j;
      
      /******************************************
       détection du port usb
       *******************************************/
      RecherchePort();
      if(!RecherchePort()) return 0;
    /*******************************************
       fin de détection
       ********************************************/
      
      
    printf("what USB port is your Arduino Board pluged into?");
    printf("Example:\n/dev/tty.usbserial-A70041zl\nor\n/dev/tty.usbserial-A1001N2Y\n");
      
    scanf("%s", &USBPort);
      
    Ouverture_port();
    if(!Ouverture_port()) return 0;
      
      
      while(1)
      {
            c=readport();
            printf("valeur recu =%c%c%c%c%c%c\n",in[0],in[1],in[2],in[3],in[4],in[5]);

            
      }
      
            
      return EXIT_SUCCESS;
}

Et le tableau dans lequel je range mes données venant du port série est déclaré comme ceci en variable globale:

char in[6]={0};


Si vous avez des idées elles sont le bienvenue car je stagne un peut la...
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

L'idéal serait de pouvoir ouvrir le port USB et le fermer seulement lors de l'arrêt du programme.
C'était un problème pour lequel je n'avais pas trouvé de solution.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Canada
Offline Offline
Full Member
***
Karma: 0
Posts: 138
Power Level is futile (if &lt; 9 000)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je cherchais un moyen de lire des valeurs sur l'Arduino avec mon Mac depuis quelques temps...
Les Mac ne peuvent pas créer des ports Serial virtuels?
Comment utilises-tu le IDE  dans ce cas?

Je suis très confus, j'ai sans doute mal compris  ;D
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Et bien pour ne pas paraitre embêtant, ce n'est pas le Mac (ou le Pc) qui fait le port série, mais la puce Ftdi qui fait une liaisons usb par le biais d'un driver.

Et ce qu'il fallait comprendre dans cette première phrase, c'est que je voulais afficher des valeur en dehors de l'IDE  smiley-wink
« Last Edit: October 27, 2010, 11:10:36 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Canada
Offline Offline
Full Member
***
Karma: 0
Posts: 138
Power Level is futile (if &lt; 9 000)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok merci  smiley-wink

(Pas nécessairement le FTDI. Il n'en a pas dans le Uno)
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Dans la Uno c'est un Atmega8 qui utilise le protocole usb et qui fait une communication série avec l'autre Atmega... toujours pas de port série sur le Mac  :smiley, mais plus besoins des drivers Ftdi.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

hello jean francois. si je puis me permettre, tu peux trouver des exemples d ouverture de port FTDI sous MAC/Linux en C++ avec OLA: http://opendmx.net/index.php/OpenDMX.net

la enttec pro utilise les memes drivers FTDI que arduino, et tu peux donc y accéder en t inspirant du code de discussion de la Pro .

Quote
mais plus besoins des drivers Ftdi.
est ce le cas sous windows ? plus de drivers ftdi necessaires pour la UNO ? ( j ai acheté une 2009 il y a deux mois et fais un gros boulot de portage)
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour ce lien.

Pour les drivers, c'est ce qui ressortait d'une discussion récente dans un sujet sur l'USB et la Uno.
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

hello jean francois as tu un lien de cette discussion ?
Logged

Geneva
Offline Offline
Faraday Member
**
Karma: 24
Posts: 3171
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset


http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1287034719
« Last Edit: October 28, 2010, 06:21:38 am by jfs » Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bien le merci !  ;D

donc si je comprends bien l UNO fonctionne avec les drivers FTDI ? ou bien la communication se fait désormais autrement ?
( j ai un joli travail sur mon api en C par FTDI, sur 2009, du coup je suis inquiet)
« Last Edit: October 29, 2010, 03:32:08 am by karistouf » Logged

France, Nice
Offline Offline
Full Member
***
Karma: 3
Posts: 194
www.Zartronic.fr
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
donc si je comprends bien l UNO fonctionne avec les drivers FTDI ?

Bien non, la Uno et mega 2560 n'utilisent plus le FTDI, à la place c'est un chip USB Atmega8 qui fait office de pont USB/série.
Ce chip n'a pas besoin de driver sous Windows juste un fichier ini , sous mac et linux pas besoin de driver.
Dans tous les cas ça se présente comme un port série COMx.
Pourquoi as tu attaqué le port au niveau du driver FTDI, tu fais du bit-bang ??

A+ Teiva,

www.Zartronic.fr votre source Arduino en France
Distributeur officiel Arduino et DFRobot
Logged


www.Zartronic.fr : Arduino & Robotique

FRANCE
Offline Offline
Sr. Member
****
Karma: 0
Posts: 338
Arduino rocks .... oulalalalala
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

hello teiva. non non j ai juste  acheté une carte et passé un mois à porter arduino et différentes fonctions + le dialogue FTDI

... et la uno sort sans FTDI.

du coup va falloir que je me procure une UNO.... et que je recode tout le dialogue avec les ports .... alors que je m appretais à livrer le upgrade de mon soft pour arduino cette semaine - ci.

je suppose qu il va falloir que je maintienne le dialogue FTDI + le portage Atmega ( cool en termes de bugs à venir) pour les ouvertures et fermeture de ports

il n y avait aucun signe d un quelconque changement il y a 3 mois sur le site arduino.... juste un truc du genre "on va vous faire une nouvelle surprise".... grrrrr.....

mais bon je comprends les besoins de liberté.....
c est juste que si j avais su j aurais attendu un peu.  smiley-sad
Logged

Pages: 1 2 [3] 4   Go Up
Jump to: