Arduino et lecteur code barre RS232

Justement j'ai essayé avec ce code mais rien ne se passe.... :~
du coup j'ai trouvé ce code ci aussi et avec celui ci j'arrive à avoir une valeur 255...

#define ARDUINO_RX_PIN  0 // pin a connecter au barcode (pin8 , fil marron) 
#define ARDUINO_TX_PIN  1  // pour memoire - non utilise (not used)

int (barcode) = 0;

void setup()  {
  // define pin modes for tx, rx:
  pinMode(ARDUINO_RX_PIN, INPUT);
  pinMode(ARDUINO_TX_PIN, OUTPUT);
  

  
  // set the data rate for the Serial port
  Serial.begin(9600);
}

void loop()   {
  // envoie des données seulement quand vous recevez des données :
        if (Serial.available() > 0) { // si des données entrantes sont présentes
                // lit le 1er octet arrivé
                int barcode = Serial.read();
        }
        byte(barcode)=Serial.read();
       
          Serial.println(barcode);
      }

clem0609:
Justement j'ai essayé avec ce code mais rien ne se passe.... :~
du coup j'ai trouvé ce code ci aussi et avec celui ci j'arrive à avoir une valeur 255...

bonjour
Je pense que tu te melange les connections
ton dernier programme n'utilise qu'un port serie
ta valeur 255 est surement un artefact

si ta douchette est bien cablée , avec un tax de baud bien configuré , il n'y a aucune raison que le multi serialmega ne fonctionne pas.
Ne pas oublier d'alimenter la douchette et pas par le mega
ne pas oublier de relier les GND (alim douchette, douchette,mega)

Et encore faut il que tu soit sur de tes connections sur le serial1 (le serial0 etant lui reservé à la liaison mega/PC par usb)
ne pas confondre les TX avec RX

sens des infos à bien verifier pin 5/6 de ta douchette
douchette en sortie ----> RS232 ---->TTL----> RX1 mega pin 19
douchette en entrée <--- RS232 <----TTL<---- TX1 mega pin 18

et dans la mesure où tu ne cherche pas pour l'instant à envoyer des infos à la douchette, tu peux pour l'instant faire l'impasse de la 2eme ligne (pin 18).
Le handshaking de ta douchette est configuré comment ?

Le handshaking de ma douchette est configuré en RTS

clem0609:
Le handshaking de ma douchette est configuré en RTS

bonjour
en theorie tu devrais pouvoir lire la ligne TX de ton lecteur sans autres problemes.
C'est dans ce genre de situation qu'un oscillo est bienvenu, tu en a un sous la main ?

Actuellement non je n'en ai pas mais j'ai déjà essayer d’observer les signaux et ils étaient bien là...

clem0609:
Actuellement non je n'en ai pas mais j'ai déjà essayer d’observer les signaux et ils étaient bien là...

si j'en crois le schema de ton shield rs232 , et si elle est bien alimentée par ton arduino tu devrais au moins voir "bouger" la led rxd lorsque tu lis un code, c'est le cas ?

Bonjour,

Essaye voir de raccorder RTS à CTS coté douchette, pour être sur que ce ne soit pas un problème de controle de flux.

PhilAin:
raccorder RTS à CTS coté douchette

Comment faut-il faire??

Artouste:
tu devrais au moins voir "bouger" la led rxd lorsque tu lis un code, c'est le cas ?

Non en réalité, la led txd est fixe et la led rxd est eteinte

D'après le schéma de ton interface RS, celle-ci ne gère pas le contrôle de flux matériel. Tu dois donc lui faire croire que la liaison existe. Tu raccorde le prêt à transmettre (CTS) à la demande de transmission (RTS) soit les pins 6 et 7 du cordon RS232.
Sinon, si cela est possible, la programmer sans contrôle de flux. Tu dois pouvoir valider le fonctionnement avec Hyper Terminal, en validant "contrôle de flux = materiel".

PhilAin:
Hyper Terminal

??? Je ne connais pas le logiciel

Fourni avec toutes versions de windows, jusqu'à XP. Ensuite tu peux utiliser Terminal V1.9b, http://terminals.codeplex.com/releases/view/40592

clem0609:

Artouste:
tu devrais au moins voir "bouger" la led rxd lorsque tu lis un code, c'est le cas ?

Non en réalité, la led txd est fixe et la led rxd est eteinte

bonjour
je ne sais pas si la reponse a été donnée (posée) mais ta douchette est alimentée comment/par quoi ?
si la led TXD est toujours eteinte c'est que la sortie du RS232 shield renvoi un etat bas sur le TTL, cela indique un etat haut sur le rs232.
ça donne quoi la connection sur un vrai port rs232 sur PC ?

PhilAin:
Fourni avec toutes versions de windows, jusqu'à XP. Ensuite tu peux utiliser Terminal V1.9b, http://terminals.codeplex.com/releases/view/40592

Et il s'utilise comment ce logiciel? j'ai un peu de mal là :roll_eyes: :roll_eyes:

Artouste:
je ne sais pas si la reponse a été donnée (posée) mais ta douchette est alimentée comment/par quoi ?
ça donne quoi la connection sur un vrai port rs232 sur PC ?

1°)La douchette est alimenté par une alim externe en 5v
2°)Sur un vrai port rs232 la connection marche nickel, je reçois le code barre.

clem0609:

PhilAin:
Fourni avec toutes versions de windows, jusqu'à XP. Ensuite tu peux utiliser Terminal V1.9b, http://terminals.codeplex.com/releases/view/40592

Et il s'utilise comment ce logiciel? j'ai un peu de mal là :roll_eyes: :roll_eyes:

Artouste:
je ne sais pas si la reponse a été donnée (posée) mais ta douchette est alimentée comment/par quoi ?
ça donne quoi la connection sur un vrai port rs232 sur PC ?

1°)La douchette est alimenté par une alim externe en 5v
2°)Sur un vrai port rs232 la connection marche nickel, je reçois le code barre.

Bonjour
il faut peut etre aussi envisager que ce soit ton shield rs232 qui soit deficient
si tu dispose d'un PC avec un vrai port RS232 tu peux essayer d'injecter la sortie PC RS232 (COMx) sur l'entrée RS232 de ton shield et de voir si le transit se fait bien sur le port COMy (le port COM affecté à l'arduino)
Perso je (re)ferais une verif à l'oscillo des signaux dispo , ta douchette simplement connecté au PC en RS232 (OK) des signaux transitant pas la prise serie (c'est une DB9 ? )

Oui c'est bien une db9 , du coup j'avais envisagé de faire fonctionner le lecteur par le pc et ensuite d'envoyer les infos à la carte arduino... Certes on perd en praticité mais si cela fonctionne mieux

clem0609:
Oui c'est bien une db9 , du coup j'avais envisagé de faire fonctionner le lecteur par le pc et ensuite d'envoyer les infos à la carte arduino... Certes on perd en praticité mais si cela fonctionne mieux

Avez vous une idée de comment on récupere la donnée code barre du pc afin de l'envoyer sur la carte arduino??

int H;

void setup() {
Serial.print(9600);
}

void loop() {
H=Serial.read;
if(H==807229850009){
Serial.print("ok");}
if(H!=807229850009){
Serial.println("pas ok");}
}

Voila un programme que j'ai fait mais il me met en message d'erreur :

sketch_may12a:9: error: integer constant is too large for 'long' type
sketch_may12a:11: error: integer constant is too large for 'long' type
sketch_may12a.ino: In function 'void loop()':
sketch_may12a:8: error: argument of type 'int (HardwareSerial::)()' does not match 'int'

bonjour
quelle bibliothèque on doit intégrer pour faire la relation entre la carte arduino (uno) et un lecteur code a barre (lauz electronic)