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