#include "StdAfx.h" #include #include "DLL.h" #include "EF8000_Interface.h " CEF8000_Interface::CEF8000_Interface() { for (int j=0;j<15;j++) { for (int i=0;i<4;i++) { Set_Speed[j][i]=0; } } for (int i=0;i<15;i++) { slow_dis[i]=0.0; } for (int i=0;i<3;i++) { g_precision[i]=0.0; } } CEF8000_Interface::~CEF8000_Interface() { } //****************************************************************************** void CEF8000_Interface::GetAppPath(CString &Path) { Path=_T(""); // Speed optimization - noticed slow in GlowCode if (Path.IsEmpty()) { CString tmpPath; GetModuleFileName(NULL,tmpPath.GetBuffer(255),255); tmpPath.ReleaseBuffer(); tmpPath.TrimRight(); int nLastSlash = tmpPath.ReverseFind('\\'); if (nLastSlash >= 0) tmpPath = tmpPath.Left(nLastSlash); else tmpPath.Empty(); Path=tmpPath; } }; BOOL CEF8000_Interface::OpenMotorDat() { CString csAppPath; GetAppPath(csAppPath); CString csMotorDatFile =csAppPath+_T("\\motor.dat"); return OpenSpeedParameter(csMotorDatFile); } BOOL CEF8000_Interface::SaveSpeedParameter(CString _FileName) { FILE* iFileHandle=NULL; iFileHandle=FileOpen(_FileName,fmOpenWrite); if (iFileHandle) { FileSeek(iFileHandle,0,0); FileWrite(iFileHandle,&Set_Speed,sizeof(Set_Speed)); FileWrite(iFileHandle,&slow_dis,sizeof(slow_dis)); FileWrite(iFileHandle,&g_precision,sizeof(g_precision)); FileWrite(iFileHandle,&Image_Info.m_Motor_Dx,sizeof(Image_Info.m_Motor_Dx)); FileWrite(iFileHandle,&Image_Info.m_Motor_Dy,sizeof(Image_Info.m_Motor_Dy)); FileWrite(iFileHandle,&Image_Info.m_Motor_Dz,sizeof(Image_Info.m_Motor_Dz)); FileWrite(iFileHandle,&Image_Info.m_Motor_Plus_Num,sizeof(Image_Info.m_Motor_Plus_Num)); FileClose(iFileHandle); return TRUE; } else { return FALSE; } } BOOL CEF8000_Interface::OpenSpeedParameter(CString _FileName) { FILE* iFileHandle=NULL; iFileHandle=FileOpen(_FileName,fmOpenRead); if (iFileHandle) { FileSeek(iFileHandle,0,0); FileRead(iFileHandle,&Set_Speed,sizeof(Set_Speed)); FileRead(iFileHandle,&slow_dis,sizeof(slow_dis)); FileRead(iFileHandle,&g_precision,sizeof(g_precision)); FileRead(iFileHandle,&Image_Info.m_Motor_Dx,sizeof(Image_Info.m_Motor_Dx)); FileRead(iFileHandle,&Image_Info.m_Motor_Dy,sizeof(Image_Info.m_Motor_Dy)); FileRead(iFileHandle,&Image_Info.m_Motor_Dz,sizeof(Image_Info.m_Motor_Dz)); FileRead(iFileHandle,&Image_Info.m_Motor_Plus_Num,sizeof(Image_Info.m_Motor_Plus_Num)); FileClose(iFileHandle); return TRUE; } else { return FALSE; } } //============================================================= FILE* CEF8000_Interface::FileOpen(const CString filename,const int Mode) { CString fileMode(_T("rb")); switch (Mode) { case fmOpenRead: fileMode =_T("rb"); break; case fmOpenWrite: fileMode =_T("wb"); break; case fmOpenReadWrite:fileMode =_T("wb+"); break; } FILE *FileStream = NULL; _tfopen_s(&FileStream,filename, fileMode); return FileStream; }; //=========================================================== int CEF8000_Interface::FileSeek(FILE * _Handle, long _Offset, int _Origin) { return fseek(_Handle,_Offset,_Origin); }; //=========================================================== int CEF8000_Interface::FileRead(FILE * _Handle, void *_Buffer, int _Count) { size_t t(0); t= fread(_Buffer,_Count,1,_Handle); return _Count; }; //=========================================================== int CEF8000_Interface::FileWrite(FILE * _Handle, const void *_Buffer, int _Count) { fwrite(_Buffer,_Count,1,_Handle); return _Count; }; //=========================================================== int CEF8000_Interface::FileClose(FILE * _Handle) { return fclose(_Handle); };