Bonjour,
j'utilise un logiciel qui communique avec le port COM sur Linux en envoyant et recevoir un ensembles de messages.
Pour tracer les messages, j'utilise un sniffer qui me donne les messages envoyés et reçus au port en HEXA.
Ce que je cherche, c'est renvoyer la même séquence de messages mais sous Linux, à l'aide d'un petit programme en C qui ouvre le port série /dev/ttyUSB0 et écrit sur lui.
Mon problème c'est comment écrire sur le port les messages en HEXA, en utilisant la fonction write?
ou si c'est possible avec un echo sur le périphérique directement?
NB: un message peut être comme ceci: 020400FFFF010000004
Merci
# pas en hexa mais repris d'un code pour lire dans un GPS en serie ou USB
Posté par NeoX . Évalué à 3.
voici le code extrait d'un programme pour gerer certains gps via port serie ou convertisseur usb/serie
#include <fcntl.h>
#include <sys/select.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <termios.h>
#include <unistd.h>
#ifndef DEVICE
#define DEVICE "/dev/ttyS0"
#endif
// ouverture
device = DEVICE;
fd = open(device, O_NOCTTY | O_NONBLOCK | O_RDWR);
if (fd == -1)
error("open: %s: %s", device, strerror(errno));
if (tcflush(fd, TCIOFLUSH) == -1)
error("tcflush: %s: %s", device, strerror(errno));
[...]
// lecture
int n;
do {
n = read(fd, buf, sizeof(buf));
} while (n == -1 && errno == EINTR);
if (n == -1)
DIE("read", errno);
else if (n == 0)
DIE("read", 0);
[...]
// ecriture
int rc;
do {
rc = write(fd, buf, len);
} while (rc == -1 && errno == EINTR);
if (rc == -1)
DIE("write", errno);
// fermeture
if (close(fd) == -1)
DIE("close", errno);
# Serial programming howto
Posté par teoB . Évalué à 2.
Ex en français : http://www.ibiblio.org/pub/linux/docs/HOWTO/translations/fr/(...)
# En bash
Posté par Benoît Monin . Évalué à 2.
echo -ne "\x02\x04\x00\xFF\xFF\x01\x00\x00\x00..." > /dev/ttyUSB0
Pour configurer un port série, la commande c'est stty, voir le man pour les détails.
[^] # moserial
Posté par Tonton Benoit . Évalué à 2.
http://gentoouser.free.fr/moserial.jpg
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.