fast/Plugin/Driver/DriverMainDlg.h

154 lines
4.3 KiB
C
Raw Normal View History

2025-01-20 10:30:01 +08:00
#pragma once
#include "CEXVirtualListCtrl.h"
#include "ControlCAN.h"
// CCanDeviceDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
typedef struct ST_DRIVER_CONTROL {
int Drive_Speed; //<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
int Diversion_Position; //ת<><D7AA><EFBFBD>Ƕ<EFBFBD>
int Zero_Angle; //ת<><D7AA><EFBFBD><EFBFBD><EFBFBD>Ƚǣ<C8BD><C7A3><EFBFBD><EFBFBD>ݻ<EFBFBD>е<EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD>Ƕȣ<C7B6>
int MIX_Angle_R; //<2F>ֶ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>Ƕ<EFBFBD>
int MAN_Angle_L; //<2F>ֶ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Сת<D0A1><D7AA><EFBFBD>Ƕ<EFBFBD>
int AutoMAX_Angle; //<2F>Զ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>Ƕ<EFBFBD>
int AutoMIN_Angle; //<2F>Զ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>Ƕ<EFBFBD>
float SPEEDPAR; //<2F><><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>ϵ<EFBFBD><CFB5>
ST_DRIVER_CONTROL()
{
Drive_Speed = 0;
Zero_Angle = 1320000; //<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2108000 504000
MIX_Angle_R = 504000; // Zero_Angle + 850000;
MAN_Angle_L = 2108000; // Zero_Angle - 850000;
AutoMIN_Angle = Zero_Angle - 700000;
AutoMAX_Angle = Zero_Angle + 700000;
Diversion_Position = Zero_Angle;
SPEEDPAR = 1;
}
} ST_DRIVER_CONTROL;
typedef struct ST_SENSOR_DATA {
short FMagnetism_Offset; //ǰ<><C7B0><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t FMagnetism_Valid; //ǰ<><C7B0><EFBFBD><EFBFBD>1<EFBFBD><31>Ч 0<><30>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
uint8_t FMagnetism_ALLTrue; //16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2B5BD>
short BMagnetism_Offset; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t BMagnetism_Valid; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>Ч 0<><30>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>
uint8_t BMagnetism_ALLTrue; //16<31><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><E2B5BD><EFBFBD><EFBFBD>1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint8_t RFID_Point; //RFID<49><44>ǩλ<C7A9><CEBB>
uint8_t Battery_SOC; //<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>
ST_SENSOR_DATA() //Ĭ<>Ϲ<EFBFBD><CFB9><EFBFBD><ECBAAF>
{
FMagnetism_Offset = 0;
FMagnetism_Valid = 0;
FMagnetism_ALLTrue = 0;
BMagnetism_Offset = 0;
BMagnetism_Valid = 0;
BMagnetism_ALLTrue = 0;
RFID_Point = 0;
Battery_SOC = 0;
}
} ST_SENSOR_DATA;
class CDriverMainDlg : public CDialogEx
{
DECLARE_DYNAMIC(CDriverMainDlg)
public:
CDriverMainDlg(CWnd* pParent = NULL); // <20><>׼<EFBFBD><D7BC><EFBFBD><EFBFBD><ECBAAF>
virtual ~CDriverMainDlg();
// <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DEV_CAN_DLG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
afx_msg void OnCheckCanrxEn();
DECLARE_MESSAGE_MAP()
public:
int m_nSendFrameFormatIdx0;
int m_nSendFrameTypeIdx0;
int m_nSendFrameFormatIdx1;
int m_nSendFrameTypeIdx1;
int m_nSendCanIndex;
int m_nRecvCanIndex;
int m_nDevType;
public:
CString m_iniPath;
int m_DevType;
int m_DevIndex;
BOOL m_bOpenCan;
BOOL m_bCanRxEn;
BOOL m_bAutoRefresh;
BOOL m_bAutoSend;
BOOL m_bAutoSend2;
CString m_strSendID;
CStatic m_txFMagneticOffset;
CStatic m_txBMagneticOffset;
CStatic m_txRFIDID;
CString m_strSendData;
BOOL m_StopSendFlag;
BOOL m_StopSendFlag2;
void Drive_enable(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
void Drive_disable(); //ʧ<><CAA7>
int Auto_Stop();
int Auto_Forward(float speedpar);
int Auto_Backward(float speedpar);
int Auto_EStop();
void Control_Mode_Reset();
void ReadConfigFromIni();
void InitVirtualList();
BOOL OpenCanDevice();
void UpdateCanStatue(BOOL bStatue);
void ProcessPipeMsg(int lMsgId, char* pData, int lLen);
void SendCanData(int nDevIdx, int nCanIdx, int nFrameType, int nFrameFormat, UINT32 acFrameId, char acFrameData[8]);
int Str2Hex(CString str);
int HexChar(char c);
//CPluginMainDialog *m_pMainWnd;
virtual BOOL OnInitDialog();
static UINT ReceiveCanThread(LPVOID v);
static UINT SendCanThread(LPVOID v);
static UINT SendCanThread2(LPVOID v);
void WriteVirtualList(CString strFrameId, CString strFrameData, int nTxRx = 0, int nCanIdx = 0, int nFrameType = 0, int nFrameFormat = 0);
public:
CEXVirtualListCtrl *m_pstVirtualList;
afx_msg void OnBnClickedBtnSendMan();
afx_msg void OnBnClickedAutoSend();
CEXMemFileQueue* m_pQueue;
CString m_strDataDir;
volatile int m_nAgvAction;
int m_nAgvReturnState;
afx_msg void OnBnClickedCheckAutoRefreshShow();
afx_msg void OnBnClickedBtnSendMan2();
afx_msg void OnBnClickedAutoSend2();
ST_DRIVER_CONTROL m_stDrvierControl;
ST_SENSOR_DATA m_stSensorData;
void AnalysiseCanData(int nCanIndex, VCI_CAN_OBJ objCan);
void CalculateAutoCanParam();
void CalculateManualCanParam();
void SendCanData();
afx_msg void OnBnClickedButtonAgvstop();
afx_msg void OnBnClickedButtonAgvestop();
afx_msg void OnBnClickedButtonAgvforward();
afx_msg void OnBnClickedButtonAgvbackward();
};