2009-06-05 11 views
0

Ich möchte das Datenhexformat (0x01) oder (0xff) an den Port senden, an dem das RS232-Kabel angeschlossen ist. Ich verwende das MSCOMM-Steuerelement in VC++ 6.0. Ist das der richtige Weg, um die Hex-Daten zu senden? Das ist der Code, den ich habe.Serielle Schnittstelle Kommunikation

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)); 

Wenn es nicht korrekt ist, bitte sagen Sie mir, wie Sie Hex-Format-Daten an den Port senden.

Vielen Dank im Voraus

Antwort

0

Ich bin nicht vertraut mit MSKOM aber es scheint, wie es nicht funktionieren. Format kann die Daten stattdessen in eine ASCII-Zeichenfolgendarstellung umformatieren.

Alternativ können Sie einfach eine beliebige serielle Schnittstelle als 'Datei' in Windows verwenden. Sehen Sie sich die Windows API an, um Dateien zu öffnen, und Sie werden sehen, dass Sie bestimmte Geräte als Dateien adressieren können, indem Sie stattdessen einen Dateinamen wie "COM1:" verwenden.

Dann können Sie lesen/schreiben von ihm wie eine Datei.

1

Wenn Ihre Daten einfach ein hexadezimaler Wert sind, den Sie senden möchten (im Gegensatz zu einer hexadezimalen Zeichenfolge), möchten Sie wahrscheinlich "% c" anstelle von "% x". Bei einem gegebenen Datenwert von (z. B.) 0x65 erzeugt "% x" zwei Bytes an der seriellen Schnittstelle: "6" (ASCII-Wert 54) und "5" (ASCII-Wert 53). "% c" erzeugt ein einzelnes Byte an der seriellen Schnittstelle: 'e' (ASCII-Wert 100 oder 0x65).

So weit wie das Senden von Daten auf einer seriellen Schnittstelle in C, schauen Sie sich CSerial oder CSerialPort: sie können Dinge für Sie ein wenig vereinfachen (beachten Sie, dass ich sie nicht verwendet habe, tendiere ich in Apps zu tun Python mit dem pyserial Modul oder in wxWidgets mit der ctb Bibliothek).

Edit: Die andere, die ziemlich gut ist (Ich habe es zuvor verwendet, aber konnte nicht den Link finden, wenn ich den ursprünglichen Beitrag schrieb) ist CSerialFile, Teil der Bibliotheken. Wie gesagt, tendiere ich dazu, wxWidgets jetzt zu verwenden, aber wenn Sie die Microsoft-Foundation-Klassen verwenden, macht CSerialFile den seriellen Zugriff sehr einfach.

+0

Was ist wxWidgets? Wie ist es nützlich? –

+0

wxWidgets ist eine GUI-Bibliothek (hauptsächlich für C++), die frei und Open Source ist. Ich finde sein Design besser als die Microsoft Foundation Classes (die zu sehr auf der C-API basieren und nicht als C++ - Bibliothek konzipiert sind). Die wxWidgets-Bibliotheken haben den zusätzlichen Vorteil, dass der Quellcode ohne Änderungen für Windows, Linux und Mac kompiliert wird, sodass Ihre Anwendung plattformübergreifend kostenlos wird! – DrAl

Verwandte Themen