#pragma once
//#pragma warning(disable:4251)


#include <mutex>
#include"CRS485.h"

#ifdef ELEFORCE_EXPORTS
#define ELEForce_DLL_API __declspec(dllexport)
#else
#define ELEForce_DLL_API //__declspec(dllimport)
#endif

#define FORCE_BASE_ERROR (MODBUS_BASE_ERROR+20000)

//�豸����
enum Force_Ctltype {XJC_5100MF = 1, Other };

class ELEForce_DLL_API CEleForce
{
private:
	CRS485* m_ComPort;
	Force_Ctltype m_iForceType;
	bool m_bIsInitSuccess = false;
	static CEleForce *m_EleForce;
	static std::mutex m_EleMutex;
	std::mutex m_mutexReadWrite;  //���ڶ�д��

	long Init(string sport, Force_Ctltype iTemperType); //��ʼ��
	void UnInit();//�ر�
public:
	// ��ȡ��ʵ������
	static long GetInstance(string strPort, Force_Ctltype iForceType, CEleForce **pForce);
	static string GetErrText(long errid);

	long GetEleForce(unsigned char  rtuAddr, double& dValue, unsigned char iMaxSendNum = 3);//��ȡ���ӳƵ�ǰѹ��
	long GetEleMaxForce(unsigned char  rtuAddr, double& dValue, unsigned char iMaxSendNum = 3);//��ȡ���ӳƷ�ֵѹ��
};