20. april 2010 - 16:45Der er
29 kommentarer og 1 løsning
serialport i en class (visual c++)
jeg har indtil videre lavet flg:
void eyeR::connect(void) { SerialPort^ eyeR_sp = gcnew SerialPort(); if(eyeR_sp->IsOpen == true) { eyeR_sp->Close(); } // tjekker om porten allerede er åben og lukker den hvis det er tilfældet eyeR_sp->PortName = "COM6"; eyeR_sp->BaudRate = 57600; eyeR_sp->DataBits = 8; eyeR_sp->Open(); } void eyeR::disconnect() { } void eyeR::write_servo_new_def(int servo_number, int min_raw_value, int max_raw_value, int index_num, int initial_index ) { }
men hvordan får jeg kaldt eyeR_sp i den andre funktioner i classen så jeg kan skrive til porten osv...?
void eyeR::connect(void) { SerialPort^ eyeR_sp = gcnew SerialPort(); if(eyeR_sp->IsOpen == true) { eyeR_sp->Close(); } // tjekker om porten allerede er åben og lukker den hvis det er tilfældet eyeR_sp->PortName = "COM6"; eyeR_sp->BaudRate = 57600; eyeR_sp->DataBits = 8; eyeR_sp->Open(); } void eyeR::disconnect() { } void eyeR::write_servo_new_def(int servo_number, int min_raw_value, int max_raw_value, int index_num, int initial_index ) { }
void eyeR::connect(void) { eyeR_sp = gcnew SerialPort(); if(eyeR_sp->IsOpen == true) { eyeR_sp->Close(); } // tjekker om porten allerede er åben og lukker den hvis det er tilfældet eyeR_sp->PortName = "COM6"; eyeR_sp->BaudRate = 57600; eyeR_sp->DataBits = 8; eyeR_sp->Open(); } void eyeR::disconnect() { } void eyeR::write_servo_new_def(int servo_number, int min_raw_value, int max_raw_value, int index_num, int initial_index ) { }
det giver en masse fejl hvis jeg så tilføjer namespace't i headerfilen: using namespace System::IO::Ports;
så kommer der bare nogle andre fejl: 1>.\classes.cpp(8) : error C2597: illegal reference to non-static member 'eyeR::eyeR_sp' 1>.\classes.cpp(9) : error C2227: left of '->IsOpen' must point to class/struct/union/generic type 1>.\classes.cpp(9) : error C2227: left of '->Close' must point to class/struct/union/generic type 1>.\classes.cpp(10) : error C2227: left of '->PortName' must point to class/struct/union/generic type 1>.\classes.cpp(11) : error C2227: left of '->BaudRate' must point to class/struct/union/generic type 1>.\classes.cpp(12) : error C2227: left of '->DataBits' must point to class/struct/union/generic type 1>.\classes.cpp(13) : error C2227: left of '->Open' must point to class/struct/union/generic type
void eyeR::connect(void) { eyeR_sp = gcnew SerialPort(); if(eyeR_sp->IsOpen == true) { eyeR_sp->Close(); } // tjekker om porten allerede er åben og lukker den hvis det er tilfældet eyeR_sp->PortName = "COM6"; eyeR_sp->BaudRate = 57600; eyeR_sp->DataBits = 8; eyeR_sp->Open(); }
void eyeR::disconnect() { }
void eyeR::write_servo_new_def(int servo_number, int min_raw_value, int max_raw_value, int index_num, int initial_index ) { }
den siger: 1>c:\users\bjarne\documents\visual studio 2008\projects\eyer windows\eyer windows\Form1.h(390) : error C2352: 'eyeR::connect' : illegal call of non-static member function 1> c:\users\bjarne\documents\visual studio 2008\projects\eyer windows\eyer windows\classes.h(10) : see declaration of 'eyeR::connect'
og det er lige meget om jeg har using af de 2 dll filer med, det giver samme fejl med og uden de usings
i form1.h står der: private: System::Void connectToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { eyeR::connect(); //connect til eyeR
skriver den bare: 1>c:\users\bjarne\documents\visual studio 2008\projects\eyer windows\eyer windows\Form1.h(392) : error C2228: left of '.connect' must have class/struct/union
jeg har en include i toppen af form1.h så det skulle være i orden men det melder stadig fejl hvis jeg bruger gcnew... så sker der bare dette:
1>c:\users\bjarne\documents\visual studio 2008\projects\eyer windows\eyer windows\Form1.h(17) : error C2072: 'eyeRwindows::hej' : initialization of a function 1>c:\users\bjarne\documents\visual studio 2008\projects\eyer windows\eyer windows\Form1.h(17) : error C2440: 'initializing' : cannot convert from 'eyeR ^' to 'eyeR ^(void)'
Hej Jeg tror du skal læne dig tilbage og overveje hvad det er din funktion skal gør. Hvis der kun skal være en instance af classen så kan du bruge den samme instance over det hele hvis den er defineret det rigtige sted, hvis der er noget der skal gælde for alle instances af classen kan du lave noget static function. Sandsynligvis skal du bare oprette en instance mm. du bruger forskellige methoder med forskellige parameter, hvilket din origanale post ikke antyder.
er ikke sikker på jeg forstår hvad du mener men har prøvet på ldit forskellige måder... lige nu står det sådan her: public: Form1(void) { InitializeComponent(); // //TODO: Add the constructor code here eyeR^ hej = gcnew eyeR(); //
}
det giver ingen fejl men kan heller ikke bruge den... de andre ting jeg har prøvet meldt alt sammen fejl
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.