002
17.09.2003, 17:19 Uhr
Martin
|
Das Projekt ist ziemlich groß. Ich stelle Euch mal die wichtigsten Stellen heraus:
Der Originale Header-------------------------------------------------------
C++: |
// USBTestDlg.h : header file // ....... #include "DynamicLED.h" #include "3DMeterCtrl.h"
#include "Userdatei.h" class CUser;
// //Diese "struct" brauche ich in der neuen Klasse. // struct USB_iobuf { unsigned char AD1_LO, AD1_HI; unsigned char AD2_LO, AD2_HI; unsigned char AD3_LO, AD3_HI; unsigned char AD4_LO, AD4_HI; unsigned char AD_TEMP; unsigned char PWM1, PWM2, SERVO, PWM_CONTR; unsigned char PORT_IN, PORT_OUT1, PORT_OUT2; unsigned char not_used[8]; unsigned char number_of_interrupts[4]; };
///////////////////////////////////////////////////////////////////////////// // CUSBTestDlg dialog (Original Klasse)
class CUSBTestDlg : public CDialog { public: CUSBTestDlg(CWnd* pParent = NULL); // standard constructor friend class CUser; //meine friend-Deklaration
enum { IDD = IDD_USBTEST_DIALOG }; C3DMeterCtrl m_Analog_Meter5; CSliderCtrl m_SLIDER_SERVO; CSliderCtrl m_SLIDER_PWM2; CSliderCtrl m_SLIDER_PWM1; C3DMeterCtrl m_Analog_Meter4; C3DMeterCtrl m_Analog_Meter3; C3DMeterCtrl m_Analog_Meter1; C3DMeterCtrl m_Analog_Meter2; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL
protected: HICON m_hIcon; HANDLE hUSBRead; HANDLE hUSBWrite;
BOOL m_bReadError, m_bWriteError;
// USB data buffer USB_iobuf io_buffer;
// USB I/F class CUsbIF UsbIF; void CloseConnection();
virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); virtual void OnOKExit(); virtual void OnCancel(); afx_msg void OnTimer(UINT nIDEvent); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #endif // !defined(AFX_USBTESTDLG_H__A6A66517_BBBE_4B75_BA11_67CFC720468B__INCLUDED_)
// ENDE Original Header
|
-----------------------------------------------------------------------
C++: |
// Original-Klasse #include "stdafx.h" #include "USBTest.h" #include "USBIF.h" #include "USBTestDlg.h"
#include "Userdatei.h"
CUser User;
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
// Init Dialoge und so weiter ........... void CUSBTestDlg::OnTimer(UINT nIDEvent) { if ( (m_bReadError == TRUE) || (m_bWriteError == TRUE) ) { CDialog::OnTimer(nIDEvent); return; } unsigned long ulBytesSucceed; ........
//********************************************************* //**************CUser************************************** //*********************************************************
User.Userfunktion();
//Dieser auskommentierte Teil soll in eine eigene Klasse exportiert werden /* // Analog - Meter--------------------------------------------------------- CString sUnitA1 = "Poti"; m_Analog_Meter1.SetUnits(sUnitA1); m_Analog_Meter1.UpdateNeedle (io_buffer.AD1_LO);
m_Analog_Meter2.UpdateNeedle (io_buffer.PORT_IN); m_Analog_Meter5.UpdateNeedle (io_buffer.AD_TEMP); */
//********************************************************* //********************************************************* //********************************************************* CDialog::OnTimer(nIDEvent); }
// ENDE Original Klasse
|
------------------------------------------------------------------------
C++: |
// Neue Header // Userdatei.h : Header-Datei //
#include "3DMeterCtrl.h" #include "DynamicLED.h"
// Dialogfeld CUser class CUser : public CDialog { // Konstruktion public: CUser(CWnd* pParent = NULL); // Standardkonstruktor
void Userfunktion(void);
enum { IDD = IDD_USBTEST_DIALOG }; C3DMeterCtrl m_Analog_Meter5; C3DMeterCtrl m_Analog_Meter4; C3DMeterCtrl m_Analog_Meter3; C3DMeterCtrl m_Analog_Meter2; C3DMeterCtrl m_Analog_Meter1; //}}AFX_DATA protected: virtual void DoDataExchange(CDataExchange* pDX);
protected: DECLARE_MESSAGE_MAP() };
#endif // AFX_USERDATEI_H__59CC76BC_0403_4D5B_A488_E1DD09DE66E7__INCLUDED_ //ENDE Neuer Header
|
-----------------------------------------------------------------------
C++: |
// Neue Klasse // Userdatei.cpp: Implementierungsdatei //
#include "stdafx.h" #include "usbtest.h" #include "Userdatei.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
///////////////////////////////////////////////////////////////////////////// // Dialogfeld CUser
CUser::CUser(CWnd* pParent /*=NULL*/) : CDialog(CUser::IDD, pParent) { }
void CUser::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CUser) DDX_Control(pDX, IDC_AN5_METER, m_Analog_Meter5); DDX_Control(pDX, IDC_AN4_METER, m_Analog_Meter4); DDX_Control(pDX, IDC_AN3_METER, m_Analog_Meter3); DDX_Control(pDX, IDC_AN2_METER, m_Analog_Meter2); DDX_Control(pDX, IDC_AN1_METER, m_Analog_Meter1); //}}AFX_DATA_MAP }
BEGIN_MESSAGE_MAP(CUser, CDialog) //{{AFX_MSG_MAP(CUser) // HINWEIS: Der Klassen-Assistent fügt hier Zuordnungsmakros für Nachrichten ein //}}AFX_MSG_MAP END_MESSAGE_MAP()
void CUser::Userfunktion(void) { // Analog - Meter---------------------------------------------------------------------- CString sUnitA1 = "Poti"; m_Analog_Meter1.SetUnits(sUnitA1); m_Analog_Meter1.UpdateNeedle (io_buffer.AD1_LO);
m_Analog_Meter2.UpdateNeedle (io_buffer.PORT_IN); m_Analog_Meter5.UpdateNeedle (io_buffer.AD_TEMP); } // ENDE Neue Klasse
|
In der neuen Klassenfunktion CUser::Userfunktion(void) kennt er die Variablen "io_buffer", "PORT_IN" und "AD_TEMP" nicht und meckert.
Fehlermeldung
Code: |
:\Userdatei.cpp(58) : error C2065: 'io_buffer' : nichtdeklarierter Bezeichner D:\Userdatei.cpp(58) : error C2228: Der linke Teil von '.AD1_LO' muss eine Klasse/Struktur/Union sein D:\Userdatei.cpp(60) : error C2228: Der linke Teil von '.PORT_IN' muss eine Klasse/Struktur/Union sein D:\Userdatei.cpp(61) : error C2228: Der linke Teil von '.AD_TEMP' muss eine Klasse/Struktur/Union sein Generieren von Code... Ueberspringen... (keine relevanten Aenderungen gefunden) USBTest.cpp Fehler beim Ausführen von cl.exe. Browse-Informationsdatei wird erstellt...
USBTest.exe - 4 Fehler, 0 Warnung(en)
|
Danke Martin
--edit: Kannst du nächstes mal selber dran denken, cpp- und code-tags zu setzen? Danke. Dieser Post wurde am 17.09.2003 um 17:39 Uhr von 0xdeadbeef editiert. |