begin process at 2012 05 29 02:14:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Périphériques

 > 

[C++]problemes generes par une classe-errerus incomprehensibles


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[C++]problemes generes par une classe-errerus incomprehensibles

mercredi 7 décembre 2005 à 07:12:21 | [C++]problemes generes par une classe-errerus incomprehensibles

lolobardon

Bonjour,
je suis eleve ingenieur en electronique et j'effectue mon dernier semestre a Pekin en bossant sur un projet en C++ d'ou beaucoup de difficultes pour moi. Bref.
Je dois controller une camera a partir d'un pc en utilisant un protocole particulier. J'ai trouve une classe en c# qui correspond mais elle genere 3 types d'erreurs.

1. par exemple je declare plusieurs variables comme ci dessous

private :

  const byte STX = 0xA0;

Voici les 2 erreurs generees:
error C2258: illegal pure syntax, must be '= 0'
d:\program files\microsoft visual studio\myprojects\tcp error C2252: 'STX' : pure specifier can only be specified for functions

2.
public :
//definition de types
 enum Pan {Left = PanLeft,Right = PanRight};

Erreur:

error C2065: 'PanLeft' : undeclared identifier

3.

Les fonctions de control de la camera renvoie un message de compose de 8 bits
Par exemple :
byte[] CameraZoom(uint deviceAddress,Zoom action);

Erreurs:

error C2238: unexpected token(s) preceding ';'
error C2059: syntax error : '['

Avec ces 3 types d'erreurs j'ai finalement des 100 d'erreurs car toujours les memes.
Si vous avez besoin de precisions pour me repondre ou si vous souhaitez jeter un coup d'oeil a mon code, n'hesitez pas a me demander.

Merci d'avance

Lolo

mercredi 7 décembre 2005 à 13:04:34 | Re : [C++]problemes generes par une classe-errerus incomprehensibles

luhtor

"private :   const byte STX = 0xA0;"

Pourquoi pas "const unsigned char STX = 0xA0; ?"
Mais bon, le pb vient du fait que tu ne peux pas donner de valeur par défaut a des champs d'une classe. Pour donner des valeurs par défaut, c'est le role du constructeur.

Pour caa:
//definition de types
 enum Pan {Left = PanLeft,Right = PanRight};

Erreur:

error C2065: 'PanLeft' : undeclared identifier

L'erreur est explicite, c'est quoi "PanLeft" ? ca doit pas etre visible par ta classe.

Pour cette erreur: "byte[] CameraZoom(uint deviceAddress,Zoom action)"

essai: byte* CameraZoom(uint deviceAddress,Zoom action)
si byte est un type défini. Mais "byte" doit etre équivalent a "unsigned char". (cad un octet).


mercredi 7 décembre 2005 à 13:10:17 | Re : [C++]problemes generes par une classe-errerus incomprehensibles

luhtor

J'ajoute une chose, pour ton problème de const byte STX = 0xA0.
En fait, tu peux donner une valeur par défaut a des champs du classe seulement si ces champs sont déclarés "static". C'est à dire que tout les objets de ta classe ont en commun ce champ. Donc si un objet le modifie, il est modifié pour tous les autres. Mais comme tu le déclares "const" il n'y a pas de problème.
Pour donner une valeur par défaut à un champ static, c'est comme ca:

Dans ton .h:
class A
{
...

static const byte STX = 0xA0; // soit directement, soit tu le définies dans ton .c si elle n'est pas private
}

Ou dans ton .c:
const byte A::STX = 0xA0;
jeudi 8 décembre 2005 à 09:30:31 | Re : [C++]problemes generes par une classe-errerus incomprehensibles

lolobardon

Salut,

merci beaucoup pour tes reponses. J'ai essaye ce que tu m'as dit mais j'ai toujours les memes problemes.
Si tu as le courage, j'ai mis ci dessous la classe d'ou vient le probleme.
Pour les variables const, je veux les laisser en private donc j'ai fait ce que tu as dit mais ca a pas change.
J'ai aussi tente des les mettre dans mon constructeur mais aucune difference.

Au niveau des erreurs avec enum, les variables qui sont declarees inconnues sont en fait declarees juste au dessus. Par exemple pour Pan Left,
Data2 Byte4, deuxieme ligne, c'est defini. Donc, d'ou vient le probleme?

Autre question, a la fin de mon .h, j'ai defini une structure. Est-ce autorise? Est-ce  la bonne maniere? Doit-on plutot la mettre dans le constructeur?

J'ai aussi remplace le type byte par le type unsigned char comme tu me l'a conseille. Ensuite, au lieu que les fonctions renvoient unsigned char[], j'ai tente unsigned char* mais pas de difference.

Je sais c'est beaucoup de question, desole.

class P

{

 private :
 
//////////Pan and Tilt Commands/////////////

  static const unsigned char STX = 0xA0;
  static const unsigned char ETX = 0xAF;

  //Data1 Byte 3
  static const unsigned char FocusFar = 0x01;
  static const unsigned char FocusNear = 0x02;
  static const unsigned char IrisOpen = 0x04;
  static const unsigned char IrisClose = 0x08;
  static const unsigned char CameraOnOff = 0x10;
  static const unsigned char AutoscanOn = 0x20;
  static const unsigned char CameraOn = 0x40;
  

  //Data2 Byte 4
  static const unsigned char PanRight = 0x02;
  static const unsigned char PanLeft = 0x04;
  static const unsigned char TiltUp =  0x08;
  static const unsigned char TiltDown = 0x10;
  static const unsigned char ZoomTele = 0x20;
  static const unsigned char ZoomWide = 0x40;
  

  //Data3 Byte 5
  static const unsigned char PanSpeedMin = 0x00;
  static const unsigned char PanSpeedMax = 0x40;
  
  //Data4 Byte 6
  static const unsigned char TiltSpeedMin = 0x00;
  static const unsigned char TiltSpeedMax = 0x3F;

 //////////Enums//////////////////////////////////
 public :
//definition de types
  enum PresetAction {Set,Clear,Goto};
  enum PatternAction {Start1,Stop1,Run};
  enum Action {Start,Stop};
  enum LensSpeed {Low=0x00,Medium=0x01,High=0x02,Turbo=0x03};
  enum Pan {Left = PanLeft,Right = PanRight};
  enum Tilt {Up = TiltUp,Down = TiltDown};
  enum Iris {Open = IrisOpen,Close = IrisClose};
  enum Zoom {Wide = ZoomWide,Tele = ZoomTele};
  enum Switch {On,Off};
  enum Focus {Near = FocusNear,Far = FocusFar};

//////////Extended Command Set///////////////////
  unsigned char[] Preset(unsigned int deviceAddress, unsigned char preset, PresetAction action);
  unsigned char[] Flip(unsigned int deviceAddress);
  unsigned char[] ZeroPanPosition(unsigned int deviceAddress);
  unsigned char[] AutoScan(unsigned int deviceAddress, Action action);
  unsigned char[] RemoteReset(unsigned int deviceAddress);
  unsigned char[] Zone(unsigned int deviceAddress,byte zone, Action action);
  
  unsigned char[] ClearScreen(unsigned int deviceAddress);
 
  unsigned char[] ZoneScan(unsigned int deviceAddress,Action action);
  unsigned char[] Pattern(unsigned int deviceAddress,PatternAction action);
  unsigned char[] SetZoomLensSpeed(unsigned int deviceAddress, LensSpeed speed);
  unsigned char[] SetFocusLensSpeed(unsigned int deviceAddress, LensSpeed speed);

////////Base Command Set///////////////////////////////////////////

  unsigned char[] CameraSwitch(unsigned int deviceAddress,Switch action);
  unsigned char[] CameraIrisSwitch(unsigned int deviceAddress,Iris action);
  unsigned char[] CameraFocus(unsigned int deviceAddress,Focus action);
  unsigned char[] CameraZoom(unsigned int deviceAddress,Zoom action);
  unsigned char[] CameraTilt(unsigned int deviceAddress,Tilt action, unsigned int speed);
  unsigned char[] CameraPan(unsigned int deviceAddress,Pan action, unsigned int speed);
  unsigned char[] CameraPanTilt(unsigned int deviceAddress,Pan panAction, unsigned int panSpeed, Tilt tiltAction, unsigned int tiltSpeed);
  unsigned char[] CameraStop(unsigned int deviceAddress);
////////////////////////////////////////////////////////////////////

//constructeur par defaut
  P();

//destructeur par defaut
     virtual ~P();
  
  public : struct Message
  {
  
   static unsigned char Address;
   static unsigned char CheckSum;
   static unsigned char Data1,Data2,Data3,Data4;
   static unsigned char[] GetMessage(unsigned int address,  unsigned char data1, unsigned char data2, unsigned char data3, unsigned char data4)
   {
    if (address<0 & address>32)
     throw new Exception("Protocol Pelco P support 32 devices only");

    Address = unsigned char.Parse((address-1).ToString());//conversion d'un string en byte
    Data1 = data1;
    Data2 = data2;
    Data3 = data3;
    Data4 = data4;

    CheckSum = (unsigned char)(STX ^ Address ^ Data1 ^ Data2 ^ Data3 ^ Data4 ^ ETX);

    return new unsigned char[]{STX,Address,Data1,Data2,Data3,Data4,ETX,CheckSum};
   }
   
  }


};


Loic



Cette discussion est classée dans : erreurs, classe, error, types, problemes


Répondre à ce message

Sujets en rapport avec ce message

Problème erreurs lors de compilation en console win 32 [ par champista ] Bonjour,Voilà j'ai trouvé une source sur le site donnant la taille des disques durs et la taille d'un dossier (c'est ce qui m'interesse surtout). Je c Encapsuler des types Windows ? [ par tintin72 ] Bonjour, Je voudrais savoir comment faire pour encapsuler dans une classe C++ des variable de type Windows comme HWND  HDC etc.. En effet, j'essaie de ereur à la compilation apres copier/copier d'une classe pour affichage webcam [ par sofbboy ] Bonjour,Je désire utiliser les images issues d'une webcam. J'ai récupéré il y a quelque temps un source qui fait ca. Je souhaite faire ca avec une app Problème de d'utilisation d'une Dll avec un exe [ par pca06 ] Bonsoir, Je dois utiliser les fonctionnalités d'une Dll dans un application écrite en C. La Dll est constituée d'un classe C++ exportée. J'ai déclaré remplacer un malloc... [ par anthonycosson ] je fais une dll en c++ .net a partir d'une classe dans cette classe j'utilisais un malloc , ce qui n'est pas correct dans une dll donc j'aimmerai bien Erreurs sockets sous Linux ... [ par Ange44 ] Salut !    Je dois faire du code portable utilisant les sockets, et j'ai un petit problème face au test de la perte de connexion ...    Sous Windows, Pb avec le vUpdate et les messages d'erreurs sous devC++ [ par younesup ] lorsque je mets en route le vUpdate il se lance et s'arrette brusquement au bout de quelques secondes en m'affichant ces deux messages d'erreurs:__err error: incompatible types in assignment [ par l0st3d ] Salut à tous, j'essaie de copier un array de char vers une autre et je recois l'erreur "error: incompatible types in assignment"dans cette fonctionint Erreurs sous visual C++ [ par tomtom3141 ] Bonjour, Je débute en C++ dans l'environnement visual C++. J'ai créé une fenêtre Form1 avec un bouton Connexion. J'ai un tas d'erreurs à cause de ce Les types [ par emmanuel9 ] Bonjour à tous, J'ai un objet TextBox par exemple et je voudrais savoir si il hérite de la classe Object ? (c'est un cas d'école), comment faire cela


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales