154 lines
4.3 KiB
C++
154 lines
4.3 KiB
C++
#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();
|
||
};
|