MS Communication control 6.0
-
Hallo Zusammen!
Ich möchte mit Hilfe der ActiveX-Komponente MS Communication Control 6.0 über den COM-Port Daten senden & empfangen
Hier der Code für den Fall, dass der Button fürs Senden gedrückt wurde:
void CVarioControlDlg::OnOK() { // was im Edit-Fenster Edit2 steht, soll gesendet werden // im Edit3 sollen die empfangenen Daten angezeigt werden // MS Communication control brauch VARIANT für Input & Output COleVariant senden(m_Edit2); // Inhalt von Edit2 in VARIANT senden speichern COleVariant empfang(m_Edit3); // m_Com.SetOutput(senden); // Inhalt von "senden" als Output festlegen empfang = m_Com.GetInput(); // Inhalt des Input-Puffers in "empfang" speichern m_Edit3 = empfang; // Fehler // empfangene Daten im Edit3-Fenster anzeigen UpdateData(FALSE); }
Das Problem liegt beim Input-Puffer, ich kann mir die eingelesenen Daten nicht anzeigen lassen, das liegt irgendwie daran, dass dort mit VARIANT gearbeitet wird und ich krieg es nicht hin, das Zeug in nen String umzuwandeln...
Wenn jemand ein ähnliches Beispiel gelöst hat, wäre ich sehr dankbar für Anregungen!
Auch andere Tips nehm ich dankbar an.
P.S.: Hab die Infos auf der MSDN-Seite auch schon durchgeforstet, aber mal ehrlich: die Seite ist SHIT
-
Ich persönlich würde nicht via ActiveX eine Schnittstelle ansprechen, die man auch direkt über die WinAPI erreichen kann...
Nimm doch folgendes:
http://www.codeproject.com/system/serial.asp
-
Jochen Kalmbach schrieb:
Ich persönlich würde nicht via ActiveX eine Schnittstelle ansprechen, die man auch direkt über die WinAPI erreichen kann...
Nimm doch folgendes:
http://www.codeproject.com/system/serial.aspDanke für den Tip!
Ich war eigentlich nicht ganz unzufrieden mit der ActiveX-Komponente, es hat z.B. wunderbar geklappt, abzufragen wie die Schniistellen-Eigenschaften sind.
Nur das mit dem Output & Input will nicht so recht gelingen..Ich probier mal beide Wege, vielen Dank!!!
-
Jochen Kalmbach schrieb:
Ich persönlich würde nicht via ActiveX eine Schnittstelle ansprechen, die man auch direkt über die WinAPI erreichen kann...
Nimm doch folgendes:
http://www.codeproject.com/system/serial.aspGrüss Dich!
Hab mich auf der Seite, die Du mir geraten hast n bissl umgesehen, da sind ja etliche Beispiele für COM-Port-ansteuerung.
Aber jetzt mal ne andere Frage:
Ich will einen Sensor über COM ansteuern, mittels eines Terminals "TTerm-Pro" geht das z.B. wie folgt.
rstatD664<CR><LF>
die ersten 5 Zeichen sind der zu sendende Befehl, in diesem Fall die Abfrage des Gerätestatus.
die nächsten 4 Zeichen sind eine Checksumme nach CRC-Standrad in hex,
das Ganze wird gefolgt von den beiden ASCII-Zeichen für CR und LF, welche Anzeigen, dass der Befehl zu Ende ist.
Bei TTerm-Pro kann man einstellen, dass automatisch beim Senden & Empfangen automatisch das <CR><LF> angehängt wird, also ist der Befehl im Endeffekt nur 9 Zeichen lang: "rstatD664"Die Frage ist jetzt, wie ich am elegantesten diese Zeichen miteinander verknüpfe, wenn ich das in C++ programmieren will.
Das rstat ist ja n String, den man einfach senden kann.
Aber die Checksumme?
Das sind ja hex-Zahlen, wie auch die 2 ASCII-Zeichen, kann ich die nach dem Strickmuster:
"rstat + 0x44 + 0x36 + 0x36 + 0x34 + 0x0D + 0x0A" zusammensetzen und dann erst senden?
Oder muss ich das andersweitig verknüpfen und etvl. auch konvertieren?P.S.: das alles soll in Visual C++ programmiert werden...
Vielen Dank für deine Mühen
-
Am einfachsten ist ein array von "unsigend char"...
Entweder nimmst Du dazu ein std::vector<unsigned char> oder ein festes Array...