begin process at 2012 05 25 11:51:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

c, c++ et asm

 > 

pb sur liaison rs232


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb sur liaison rs232

mercredi 21 avril 2004 à 20:34:27 | pb sur liaison rs232

6co

Bonjour à tous !
En quelques mots la situation :
je suis stagiaire, l'un de mes projets est d' "espionner" les échanges entre un automate et un pc(console graphique) sur port com. Je travaille sous dev-cpp mais j'ai dû utiliser des instructions assembleur (AT&T, désolé) afin d'aboutir à un résultat...
Tout semblait bien fonctionnait sauf que l'execution de mon programme est considérée par les machines comme une défaillance des échanges.

Quelqu'un aurait-il ne serait-ce qu'une vague idée du problème ???

Merci d'avance
jeudi 22 avril 2004 à 17:00:51 | Re : pb sur liaison rs232

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

c sur quel OS ?
peux-tu envoyer ton source ?
j'ai déjà travaillé sur un hooker de port com ( sous windows ) donc je pourrais peut etre t'aider.

@++
vendredi 23 avril 2004 à 14:45:34 | Re : pb sur liaison rs232

6co

salut et merci d'avoir répondu patatalo !

voici ma source, c'est pas grand chose, pour l'instant un simple essai.

#include <iostream>
#include <stdlib.h>
#include <conio.c>
#include <windows.h>

using namespace std;
unsigned int adr=0x3F8; // adresse du port com1
unsigned char ret_char; // caractère lu sur le port
unsigned char ctrl_char; // mémoire du caractère précédent
int main(void)
{
int touche; // touche pressée par l'utilisateur
while (touche!=27)
{
// instructions assembleur
#pragma inline
asm("movl _adr, %edx");
asm("in %dx, %al");
asm("movb %al, _ret_char");

// le caractère lu ne sera affiché que s'il est changé
if (ret_char!=ctrl_char)
{
printf("%2X\n", ret_char);
Sleep(10); // rafraichissement de la lecture
}
ctrl_char=ret_char; // passage du caractère lu en mémoire
}
return 0;
}

une précision, cependant, il m'a été impossible de capter la moindre info par une lecture plus classique en C++ du port com du type ... CreateFile("COM1",....)....
Je commence à avoir des doutes sur le port, ce pourrait être un RS485... je manque cruellement de doc sur l'installation

Encore merci...
vendredi 23 avril 2004 à 14:47:39 | Re : pb sur liaison rs232

6co

ouppps

en relisant ton message et le mien, je viens de m'appercevoir que j'avais oublié de préciser que le pc servant de console graphique tournait sous Windows98...

Voilà qui est fait ;-)

6co
vendredi 23 avril 2004 à 16:47:07 | Re : pb sur liaison rs232

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

le fonctionnement du port COM n'est pas aussi simple que ça
déjà, il faut que tu règle la vitesse, le nombre de bits de données, la parité, le nombre de bits d'arret.
ensuite, si le port com est réglé pour fonctionner en mode interruption, tu dois hooker l'interruption dans la IDT.

avant de lire les données directement, je pense que tu dois pouvoir interroger le port com sur la présence de caracteres mais je me rappelle plus comment on fait, je regarderai...

la deuxieme methode que je peux te proposer et qui a mon avis sera beaucoup + valable sera de hooker les fonctions d'entrée/sortie du driver VCOMM.VXD.
Je vais essayer de retrouver le source de mon prog ( que de l'assembleur ) afin de faire cela et le posterai en code source.

@++
vendredi 23 avril 2004 à 17:44:59 | Re : pb sur liaison rs232

6co


excuse moi, je manque de vocabulaire, qu'entend tu par hooker ???

concernant la vitesse, le nombre de bits, la parité, les bits d'arrêt, j'avais écrit un autre code reprenant la méthode CreateFile en C++. Je ne l'ai pas sous la main mais en gros, il testé toutes les combinaisons possibles de ces tableaux de paramètres

Vitesse : de env 1400 (je crois) à env 115000
(données reprises sur une doc)
Bits donnnées : de 5 à 8
Parité (aucune, paire ,impaire)
Bit stop : aucun, 1 ou 2

Le test se stopper à la lecture de la moindre donnée. Aucun résultat.
J'attends avec impatience ton code (ou une petite explication sur l'interruption dans la IDT)...

En tout cas, mille fois merci

6co
samedi 24 avril 2004 à 12:35:50 | Re : pb sur liaison rs232

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

3FD Registre d'état de la ligne (lsr)
Ce registre permet de donner des informations sur le transfert
des données,

Bit 0 DR (Data Ready)
Si ce bit est à 1 alors une donnée reçue est prête.
Remis à 0 par lecture des données ou forçage.

Bit 1 OE (Over run Error)
Un écrasement de données a eu lieu car la lecture n'a
pas été faite à temps.

Bit 2 PE (Parity Error)
Mauvaise parité à la réception.

Bit 3 FE (Framing Error)
Erreur avec les bits de stop.

Bit 4 BI (Break Interrupt)
Erreur de transmission.

Bit 5 THRE (Transmitter Holding Register Empty)
Le 8250 est prêt à accepter un nouveau caractère.

Bit 6 TSRE (Transmitter Shift Register Empty)
Ce bit ne peut être que lu.

Bit 7 Toujours à 0.

@++
samedi 24 avril 2004 à 15:55:03 | Re : pb sur liaison rs232

6co


salut,

plus concretement,
veux tu dire que je dois lire le registre 3FD, vérifier le bit DR et lire ma valeur comme avant...? parce qu'il faut bien que je la lise ma valeur sur le 3F8.

En fait, ce que j'aimerais lire, ce ne sont pas des mots définis, je voudrais juste obtenir qulques valeurs et faire l'analogie avec les mouvements de l'automate...

Ce que j'aimerais savoir, c'est si les instructions que j'utilisais risquait d'influencer les valeurs lues par un programme tierce (celui de la console)...
samedi 24 avril 2004 à 16:19:25 | Re : pb sur liaison rs232

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

effectivement, je pense que tu dois lire les valeures sur le port 3F8 seulement si une donnée est indiquée présente sur le port 3FD.

de plus, si tu lis le port 3F8 tu vide le tampon en meme temps et donc, ces données ne sont plus récupérable par le logiciel de l'automate.

hook signifie crochet.
autrement dit, toi tu accede au port com mais ton logiciel pour l'automate non, il n'accede qu'a tes fonctions hook.

avant:
COM<->LOG AUTOMATE
apres:
COM<->PROG HOOK(BUFFER)<->LOG AUTOMATE

j'essaierai de te poster le code source ce soir. Il fonctionnait très bien avec un modem donc je pense que ca devrait faire la balle aussi dans ton cas.

@++
lundi 26 avril 2004 à 11:58:16 | Re : pb sur liaison rs232

patatalo

Membre Club Administrateur CodeS-SourceS

salut,

je poste le source de suite

@++

1 2

Cette discussion est classée dans : pb, rs232, liaison, échanges


Répondre à ce message

Sujets en rapport avec ce message

liaison rs232 avec pic16f84a [ par Lastar ] Bonjour à tous, voila je voudrais allumer et éteindre une led à partir du clavier d'un PC. J'ai donc pour cela mis un MAX232CPE avec le pic. Le prob communication par liaison rs232 vers LCD graphic [ par lcoumar ] Bonjours!voilà je suis débutant en asembleur, j'envoie d'un pc des chaines de caractère vers un afficheur LCD graphic(type hitachi LMG6912)via la liai liaison rs232 pr beck sc12 [ par Adri_52 ] slt je cherche une source ki me permettré de géré une liaison rs232 entre un beck sc12 é un robot en c.merci d avance.. Communication entre PC et PIC18F4220 via la liaison RS232 [ par woudi2008 ] Bonjour à tous,Voilà je débute en assembleur et en ce moment je suis en stage et je dois programmer une communication entre PC et le PIC18F4220 via la USART PIC16F877 [ par SEB73460 ] Bonsoir à tous,je souhaite réaliser une liaison simple entre un pic16f877 et mon PC par le port serieafin de pouvoir utiliser USART de ce composantMai Interfacer un PIC avec une liaison cdrom IDE [ par Frudjp ] Bonjour, Je suis tout nouveau sur ce forum que j'ai découvert au hasard de mes recherches dans le but de m'informer sur le protocole de liaison ATAPI [BAR]projet fin d'études [ par nizarpfe1 ] bonjour ; bien je veux savoir comment je puisse faire une liaison d'un interface GSM( envoie des SMS avec le pic 16F877) , aussi comment faire la liai rs232+pic+tx2 433 radiometrix [ par pfeasma ] je veux envoyé des données a travers d'une liaison série RS232 vers un emmeteur TX2 433.je cherche le code du pic.aidez moi svp c urgent!!!!!!!! communication rs232 et pic 16F84A [ par mimogauss ] s'il vous plait j'ai besoin de votre aide concernant la communication rs232 et la pic 16F84A comme vous savez cette pic n'admet pas un UART donc j'ai


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales