2009-11-20 5 views
0

J'ai un programme qui utilise la communication de port série pour parler à un certain matériel. Aucun problème. Puis j'ai ajouté deux Modens GSM à l'image. En VB j'ai ouvert le port COM au modem avec un protocole (8 données, aucun, 1) et quand la communication entre les modems était ouverte et en cours je fermais le port et le rouvrais avec un nouveau protocole (7 données, même parité, 2 arrêter) à mon matériel. Le matériel est standardisé à cette vitesse il y a plusieurs années, donc je ne peux pas changer cela et la plupart des modems ne supportent pas le protocole 7, e, 2. Je veux étendre la prise en charge des modems et beaucoup d'entre eux rompent le contact lorsque le port est fermé. Je n'utilise pas d'établissement de liaison matériel.Communication série

Voici donc ma question. Comment puis-je changer au mieux entre les protocoles sans fermer le port série?

  • Est-ce que quelqu'un a une autre idée comment cela peut être fait sans changer les paramètres matériels?
  • Créer un port série virtuel? (comment?)
  • Des idées?
+0

La question n'est pas clair pour moi. Essayez-vous de connecter en quelque sorte un matériel différent au même port? – Henrik

+0

Non! C'est le même matériel. la connexion matérielle est PC -> Modem -> Modem -> PLC. La plupart des modems modernes ne supportent pas 7 données, même la parité et 2 bits d'arrêt. C'est ainsi que je dois me connecter aux modems avec un autre protocole, que j'utilise pour conekt à l'automate. – TAT

Répondre

1

Pour vraiment définir toutes les options de votre connexion série, vous devez utiliser le Win32 API communication functions. Autant que je sache, vous n'avez pas besoin de fermer et rouvrir un port pour activer ces paramètres. Le fonctionnera juste après les avoir réglés (comme dans this example).

Vous devez juste faire attention, si vous voulez changer juste un ou deux paramètres, que vous devez préfixer votre structure avec la fonction correspondante de GetX, faites vos changements et appelez la fonction SetX.

Peut-être contrairement à la phrase précédente, mais ne comptez pas sur les paramètres par défaut sur votre premier appel SetX. J'ai vu beaucoup de programmes modifiant simplement les paramètres populaires (par exemple, le débit en bauds, les bits d'arrêt, etc.) mais pas les rares (comme XoffChar, etc.). Si vous faites cela et qu'un autre programme va changer ces paramètres, vous vous demandez pourquoi votre programme n'est soudainement plus capable de communiquer avec votre périphérique série, car vous utilisez les paramètres qu'un autre programme définit pour le port série.

Et avant que je l'oublie, si vous souhaitez utiliser les fonctions API Win32 # C jeter un oeil à PInvoke.net

+0

Merci pour votre réaction. Ça pourrait être utile! Je vais y jeter un coup d'oeil le plus tôt possible. avoir d'autres choses à faire d'abord dans un autre projet. Mais merci pour votre aide !!! :-) – TAT

Questions connexes