Communication sur port série / inspection du détail du protocol

Bonjour à tous,
J'ai effectué des recherches tant sur le forum en français que sur celui en englais, mais je ne trouve pas mon bonheur.
Donc je soumets ma question espérant qu'elle ne fasse pas doublon.
Dans le cadre d'un projet perso, je construits un sniffer sur un port série.
Ce sniffer transmet d'un port entrant à un port sortant sans problème.
Je souhaiterais ajouter des reports d'activités et connaitre les temps interbyte et interframe, la fréquence (éventuellement), mais je n'arrive pas à trouver le point de départ du programme et structurer ma pensée.
J'utilise un carte arduino nano, la librairie serial marche très bien quand le traitement est simplement pour l'hex ou l'ascii.
Sauf que dans mon cas, les bits sont mellés....et je suis démuni.
Merci pour vos lumières.

beurk:
Dans le cadre d'un projet perso, je construits un sniffer sur un port série.
Ce sniffer transmet d'un port entrant à un port sortant sans problème.
Je souhaiterais ajouter des reports d'activités et connaitre les temps interbyte et interframe, la fréquence (éventuellement), mais je n'arrive pas à trouver le point de départ du programme et structurer ma pensée.
J'utilise un carte arduino nano, la librairie serial marche très bien quand le traitement est simplement pour l'hex ou l'ascii.
Sauf que dans mon cas, les bits sont mellés....et je suis démuni.
Merci pour vos lumières.

bonjour
ça depend de ce qu tu entend /comprend par "port" serie 8)
le RS232,l'I²C,le SPI, le 1-Wire ,l'USB, le SATA, etc ... sont des transmissions serie
Si tu veux sniffer du RS232 , il y a toujours un bit de start que tu peux utiliser pour effectuer tes calculs de temps inter-caracteres

beurk:
Je souhaiterais ajouter des reports d'activités et connaitre les temps interbyte et interframe, la fréquence (éventuellement), mais je n'arrive pas à trouver le point de départ du programme et structurer ma pensée.
J'utilise un carte arduino nano, la librairie serial marche très bien quand le traitement est simplement pour l'hex ou l'ascii.
Sauf que dans mon cas, les bits sont mellés....et je suis démuni.

Je pars du postulat que tu travailles sur une liaison série "RS232"

Interbyte, c'est le temps entre 2 caractères reçus par l'UART. serialEvent pourrait être utile. Il suffit de mémoriser micros() entre 2 appels à la fonction pour avoir le temps interbyte.
interframe, là c'est du protocole donc il faut d'abord que tu isoles le début de ta trame de message, que tu mémorises le temps (avec micros(), ou millis()) et puis refaire la même chose au début de la trame suivante.

hi !

sorry for asking simple question, but i just don't understand, can someone light up my lights ? .......

my problem is :

i have a very simple sketch that sends text over the serial port........ quite easy, but it works only when i use the usb tu serial adaptor (FT232RL, and the IDE serial monitor). when a I try to connect a standard db9 cable to a native db9 COM1, i recieve garbage on the terminal (RealTerm). why ?????????.

Serial Com1 is proven as good, along with the cable. settings are 19200, N, 8, 1, computer settings were set accordingly. i have tried another computer, exact same result.

as far as i know, the pro-mini rx and tx pins are simple rs232 serial port, no ???????

thanks for your reply, have a nice day

You've opened your topic in the wrong part of the forum. You 're actually on the french forum.

druid442:
when a I try to connect a standard db9 cable to a native db9 COM1, i recieve garbage on the terminal (RealTerm). why ?????????.

Computer's COM port are real RS232 port with RS232 electrical levels (-15V to +15V) the RX and TX terminals of the arduino board are TTL interface (0 to 5V) so you may burn your arduino connecting it to a computer's COM port. You should use a MAX232 or equivalent to adapt their electrical levels.

fdufnews:
Je pars du postulat que tu travailles sur une liaison série "RS232"

Interbyte, c'est le temps entre 2 caractères reçus par l'UART. serialEvent pourrait être utile. Il suffit de mémoriser micros() entre 2 appels à la fonction pour avoir le temps interbyte.
interframe, là c'est du protocole donc il faut d'abord que tu isoles le début de ta trame de message, que tu mémorises le temps (avec micros(), ou millis()) et puis refaire la même chose au début de la trame suivante.

Merci, c'est ce type de fonction et ce genre d'explication que je cherchais.
Maintenant je vois plus clair :wink: