2009-06-05 15 views
0

Je souhaite envoyer le format de données hexadécimal (0x01) ou (0xff) au port sur lequel le câble rs232 est connecté. J'utilise le contrôle MSCOMM dans VC++ 6.0. Est-ce la bonne façon d'envoyer les données hexadécimales. C'est le code que j'ai.Communication par port série

CString output; 
UCHAR data1,data2; 
data1=0x01; 
output.Format("%x",data1); 
m_mscom.SetOutput(COleVariant(output)); 
data2=0xff; 
output.Format("%x",data2); 
m_mscom.SetOutput(COleVariant(output)); 

Si ce n'est pas correct, veuillez me dire comment envoyer des données au format hexadécimal au port.

Merci à l'avance

Répondre

0

Je ne suis pas familier avec MSCOM mais il semble que cela ne fonctionnera pas. Format peut reformater les données en une représentation de chaîne ASCII à la place.

Vous pouvez également utiliser n'importe quel port série comme un «fichier» dans Windows. Regardez l'API de Windows pour ouvrir les fichiers et vous verrez que vous pouvez adresser certains périphériques en tant que fichiers en utilisant un nom de fichier comme 'COM1:' à la place.

Ensuite, vous pouvez en lire/écrire comme un fichier.

1

Si vos données sont simplement une valeur hexadécimale que vous voulez envoyer (par opposition à une chaîne au format hexadécimal), vous voulez probablement "% c" plutôt que "% x". Étant donné une valeur de données de (par exemple) 0x65, "% x" produira deux octets sur le port série: "6" (valeur ascii 54) et "5" (valeur ascii 53). "% c" produira un seul octet sur le port série: 'e' (valeur ascii 100 ou 0x65). En ce qui concerne l'envoi de données sur un port série en C, jetez un oeil à CSerial ou CSerialPort: ils peuvent simplifier les choses pour vous un peu (notez que je ne les ai pas utilisés, j'ai tendance à faire des applications de port série dans python avec le module pyserial ou en wxWidgets avec la bibliothèque ctb).

Modifier: L'autre qui est assez bon (je l'ai déjà utilisé, mais je n'ai pas trouvé le lien quand j'ai écrit le message original) est CSerialFile, une partie des bibliothèques WFC. Comme je l'ai dit, j'ai tendance à utiliser wxWidgets maintenant, mais si vous utilisez les classes de base de Microsoft, CSerialFile rend l'accès série très facile.

+0

Qu'est-ce que wxWidgets? Comment c'est utile? –

+0

wxWidgets est une bibliothèque GUI (principalement pour C++) qui est libre et open source. Je trouve sa conception meilleure que les Microsoft Foundation Classes (qui semblent être trop basées sur l'API C plutôt que comme une bibliothèque C++). Les bibliothèques wxWidgets ont l'avantage supplémentaire que le code source se compilera sans modifications pour Windows, Linux et Mac, de sorte que votre application devient multi-plateforme gratuitement! – DrAl