00001
00002
00003
00004
00005 #ifndef SPR_DRUsb20Sh4_H
00006 #define SPR_DRUsb20Sh4_H
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include "DRUsb20Simple.h"
00013 #include "DVAdBase.h"
00014
00015 namespace Spr {
00016
00017
00018 class SPR_DLL DRUsb20Sh4 : public DRUsb20Simple{
00019
00020 protected:
00021 float adVoltPerDigit;
00022 public:
00023
00024 class VirtualDeviceAd:public DVAdBase{
00025 protected:
00026 int ch;
00027 DRUsb20Sh4* realDevice;
00028 char name[100];
00029 public:
00030 VirtualDeviceAd(DRUsb20Sh4* r, int c);
00031 virtual DRRealDevice* RealDevice() { return realDevice; }
00032 virtual float Voltage(){ return realDevice->AdVoltage(ch); }
00033 virtual int Digit(){ return realDevice->AdDigit(ch); }
00034 virtual const char* Name() const{ return name; }
00035 };
00036
00037
00038 DRUsb20Sh4(int ch);
00039
00040 virtual void Reset();
00041
00042 virtual void Register(DVVirtualDevicePool& vpool);
00043
00044 float AdVoltage(int ch){ return adIn[ch] * adVoltPerDigit; }
00045 int AdDigit(int ch){ return adIn[ch]; }
00046
00047
00048 virtual void Update();
00049
00050
00051 virtual void UsbSend(unsigned char* outBuffer);
00052
00053 virtual void UsbRecv(unsigned char* inBuffer);
00054 protected:
00055 virtual void UsbUpdate();
00056 virtual bool FindDevice(int ch);
00057
00058 };
00059
00060 }
00061
00062 #endif // SPR_DRUsb20Sh4_H