2009-12-11 13 views
0

La bibliothèque javax.comm de Java prend-elle en charge la communication série "9 bits"? (utilisation d'un bit de parité ou "bit d'adresse" comme mécanisme de signalisation hors bande pour l'information de trame)Prise en charge API/OS pour la communication série "9 bits"

L'API de communication win32 le prend-elle en charge?

Je suppose que la réponse est non sur les deux points, mais je suppose que quelqu'un a plus d'expérience avec cela que moi.

Répondre

1

L'API comm win32 ne supporte pas cela autant que je sache. Toutefois, vous pouvez le simuler en utilisant les différents modes de parité.

Réglage MARKPARITY définira le 9 bit à 1

Réglage SPACEPARITY définira le 9 bit à 0

Je ne peux pas dire au sujet de la version Java de la bibliothèque, mais je suis sûr qu'il soutient réglage des modes de parité afin que vous puissiez faire ce qui précède et obtenir votre 9e bit.

+0

C'est pour l'envoi - qu'en est-il de recevoir? –

+0

(et je devrais le faire sur une base par octet ... euh ... il semble qu'il serait plus facile d'utiliser simplement l'encodage base64 pour laisser de la place aux informations hors bande.) –

+0

ouais, ce n'est pas joli si vous devez le changer pour chaque octet. Cela devrait fonctionner pour envoyer et recevoir – karoberts

0

Je voudrais commenter karoberts réponse, mais je manque réputation. Donc je dois "répondre".

karoberts propose une bonne façon si nous avons besoin d'une solution logicielle à notre problème (citation JCS, presque, ne l'est pas?))

Mais il peut susciter une situation dans laquelle je dû faire face aujourd'hui avec Python (2.7) en essayant de faire exactement la même chose: mon PC a refusé d'accepter PARITY_MARK et PARITY_SPACE comme options pour configurer mon/dev/ttyS5. Donc, je cherchai dans Stack Overflow ce qui peut être fait - et rencontré ce sujet ...

Et j'ai trouvé une réponse dans cette (fermée) question, jeb nous dit dans la réponse suivante. Tincho pointe vers un article où il est proposé de définir la parité EVEN ou ODD avec chaque octet en fonction de 2 facteurs: s'il s'agit d'un octet d'adresse et quelle est la somme de parité de ses bits. J'ai vérifié la solution et cela fonctionne parfaitement.