fast/Plugin/Driver/DriverMainDlg.h
2025-01-20 10:30:01 +08:00

154 lines
4.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "CEXVirtualListCtrl.h"
#include "ControlCAN.h"
// CCanDeviceDlg 对话框
typedef struct ST_DRIVER_CONTROL {
int Drive_Speed; //行走速度
int Diversion_Position; //转向角度
int Zero_Angle; //转向零度角(根据机械结构自定义的归零角度)
int MIX_Angle_R; //手动状态下最大转向角度
int MAN_Angle_L; //手动状态下最小转向角度
int AutoMAX_Angle; //自动状态下最大转向角度
int AutoMIN_Angle; //自动状态下最大转向角度
float SPEEDPAR; //行走速度系数
ST_DRIVER_CONTROL()
{
Drive_Speed = 0;
Zero_Angle = 1320000; //零点 左极限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; //前磁条偏移量(左负右正)
uint8_t FMagnetism_Valid; //前磁条1有效 0无效出轨
uint8_t FMagnetism_ALLTrue; //16个霍尔开关都检测到输出1 用于装车点停车加装横向磁条16个霍尔开关可以全部检测到
short BMagnetism_Offset; //后磁条偏移量(左负右正)
uint8_t BMagnetism_Valid; //后磁条1有效 0无效出轨
uint8_t BMagnetism_ALLTrue; //16个霍尔开关都检测到输出1 ,用于卸车点停车(加装横向磁条)
uint8_t RFID_Point; //RFID标签位置
uint8_t Battery_SOC; //电池电量
ST_SENSOR_DATA() //默认构造函数
{
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); // 标准构造函数
virtual ~CDriverMainDlg();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DEV_CAN_DLG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
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(); //驱动电机使能
void Drive_disable(); //失能
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();
};