Je dois programmer une liaison RS232 entre un pc et un µControleur 912h60A.
Mais lorsque je lis le port avec le pc, tout se bloque.
Voici mon code
int ReceiveSerie(void)
{
char recept ;
int res = -1;
printf("\n Reception ...... %d\n");
read(fd0, &recept,sizeof(char));
res = atoi(&recept);
printf("\n--->recu : %d",res);
return res;
}
Mon programme se bloque apres cette ligne " Reception ...... -XXXXXXX" avec X le chiffre.
Pouvez vous m'aider à me débloquer? Et a me dire à quoi corresponde les chiffres apres le message "Reception....."
merci
# erf...
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
Il manque l'entier suivant à afficher. Il doit t'afficher n'importe quoi qui suit dans la pile.
Normalement, gcc doit copieusement t'insulter de faire un truc pareil...
"La première sécurité est la liberté"
[^] # Re: erf...
Posté par masmeta . Évalué à 1.
Mais bon apres la correction, le probleme reste :(
[^] # Re: erf...
Posté par Nicolas Boulay (site web personnel) . Évalué à 2.
A prioris, il attend de pouvoir lire un truc sur fd0.
"La première sécurité est la liberté"
[^] # Re: erf...
Posté par masmeta . Évalué à 1.
En faite j'ai suivie le how to serial programming ,et j'ai pris exemple dessus
# Plus d'infos sont nécessaires
Posté par netsurfeur . Évalué à 1.
A ma connaissance, les problèmes à résoudre sont de 3 ordres :
1. Valider le câblage:
La norme RS232 définit 25 signaux mais, suivant les périphériques, le nombre à utiliser est variable. Les plus simples se contentent de 3 fils (ReceiveData, TransmitData, Ground) mais d'autres ont besoin de signaux supplémentaires. En plus, même lorsque seuls les 3 fils suffisent, il faut parfois croiser RD et TD (mais pas toujours, ça rajoute du piquant aux tests ;)
Tant que tu n'es pas sûr d'avoir le bon cable, ça ne sert à rien d'aller plus loin.
2. Paramétrage de la ligne série
Une fois que tu as le bon cable, tu dois régler les paramètres du port série de ton PC pour qu'il correspondent à ceux de ton micro-controleur.
Les paramètres à définir sont au minimum:
vitesse : 1200, 2400, .... ,38400 b/s
bits par caractère : 7 ou 8 bits
parité : paire, impaire, aucune
stop bits : 1 ou 2 bits
A nouveau, si ton réglage n'est pas correct, tu n'arriveras pas à dialoguer avec ton périphérique. Sous Linux, les commandes pour régler ces paramètres sont stty et setserial.
3. Protocole de dialogue avec ton périphérique
Certains périphériques émettent en permanence sur la ligne RS232; il suffit donc de lire sur la liaison série comme tu le fais. D'autres restent muets tant que tu ne leur as pas envoyé une commande d'émission.
J'espère que ton micro-controleur a bonne documentation, sinon tu vas avoir quelques soucis....
# Man select()
Posté par BiBite . Évalué à 1.
# Groumphhhh!!!!!!!
Posté par masmeta . Évalué à 1.
Je pense que cela valide mon programme; La configuration est bonne
Je pense que cela vient d'une procédure de validation.
Malheureusement la doc du µControleur n'est pas terrible. Il parle de d'attente du caractére '*' pour le transfere du protocol.
Merci pour votre aide
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.