|
AllgemeinesC++ 2005 ist etwas für Fans :
LiteraturDie Literatur zum Thema zum Thema ist sehr übersichtlich :
Hier nun ein paar Hinweise, wie man mit C++ 2005 die ROBO und die Intelligent Interfaces programmieren kann. C++ 2005 Win32 Console - umFish40.DLL#include<iostream> using namespace std; #include "umFish40C2005.h" int main() { int ft; cout << "Hello umFish40" << endl; ft = rbOpenInterfaceUSB(0, 0); rbSetMotor(ft, 3, 1); cout << "Motor laeuft bis I1 == true" << endl; while(!rbGetInput(ft, 1)) {} rbSetMotor(ft, 3, 0); rbCloseInterface(ft); cout << "--- FINITO ---" << endl; return 0; } Erstes ROBO Interface an USB : Motor an M3 läuft bis Taster an I1 == true; * Genaueres in der C++ 2005 Hilfe unter der Überschrift : "Verwenden von Visual C++ Express Edition mit dem Microsoft Platform SDK". Anlegen des Projekts
C++ 2005 CLR Console - FishFace2005.DLL#include "stdafx.h" using namespace System; using namespace FishFace40; int main(array<System::String ^> ^args) { FishFace ft; Console::WriteLine("Hello FishFace"); try{ ft.OpenInterface(IFTypen::ftROBO_first_USB, 0); Console::WriteLine("Ende : ESC-Taste"); while(!ft.Finish()) { ft.SetLamp(Out::O1, Dir::On); ft.Pause(444); ft.SetLamp(Out::O1, Dir::Off); ft.Pause(333); } } catch(FishFaceException^ e) { Console::WriteLine(e->Message); } ft.CloseInterface(); Console::WriteLine("--- FINITO ---"); return 0; } Erstes ROBO Interface an USB : Lampe an O1 blinkt, bis ESC-Taste gedrückt wird. Anlegen des Projektes
C++ 2005 CLR Windows Forms - FishFace2005.DLLnamespace FishFaceForms { using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; using namespace FishFace40; public ref class Form1 : public System::Windows::Forms::Form { public: ...... private: FishFace^ ft; Button^ cmdAction; Button^ cmdEnde; Label^ lblStatus; System::ComponentModel::Container ^components; ...... Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) { if(!cmdAction->Enabled) e->Cancel = true; } Void cmdEnde_Click(System::Object^ sender, System::EventArgs^ e) { if(cmdAction->Enabled) this->Close(); else ft->NotHalt = true; } Void cmdAction_Click(System::Object^ sender, System::EventArgs^ e) { try { ft = gcnew FishFace; ft->OpenInterface(IFTypen::ftROBO_first_USB, 0); cmdAction->Enabled = false; lblStatus->Text = "Bei der Arbeit"; cmdEnde->Text = "HALT"; Action(); ft->ClearMotors(); lblStatus->Text = "Auf ein Neues"; } catch (FishFaceException^ e) { lblStatus->Text = e->Message; } ft->CloseInterface(); cmdAction->Enabled = true; cmdEnde->Text = "ENDE"; } Void Action() { while(!ft->Finish()) { ft->SetLamp(Out::O1, Dir::On); ft->Pause(333); ft->SetLamp(Out::O1, Dir::Off); ft->Pause(333); } }};} Erstes ROBO Interface an USB : Lampe an O1 blinkt bis ESC-Taste oder HALT-Button (cmdEnde) gedrückt wird. Hier wurden - im Gegensatz zur CLR Console Lösung - Referenzen auf FishFace verwendet : paßt besser in den Kontext und ist bei komplexeren Programmen auch interessanter. Ansonsten noch einiges DrumRum um ein "Abwürgen" des Programmes über ENDE Button (und x) während der while Schleife zu unterbinden. Das Programm würde dann "im Dunklen" weiterlaufen. Anlegen des Projekts
Das Programm wurde hier komplett in der standardmäßig angelegten Form1.h geschrieben. Der Übersichtlichkeit wegen (und faulheitshalber) DownloadsDie vollständigen Sources zu den Programmen finden sich in VC2005.ZIP Für das Win32 Console Beispiel ist noch umFish40.DLL erforderlich. Eine Dokumentation dazu ist im ZIP enthalten. Für die weiteren Programme wird FishFace2005.DLL benötigt. Die DLL ist in C# 2005 geschrieben und ist von C++ 2005 natürlich nutzbar. Die Dokumentation wurde für C# erstellt, ist aber genauso von C++ 2005 nutzbar. Stand : 04.09.2007 |