📄 can.h
字号:
#if !defined(__CAN_H__)
#define __CAN_H__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <afxtempl.h>//支持模板
#include <afxdisp.h>
#define WM_MY_MESSAGECAN (WM_USER+100) // CAN数据帧消息
#define WM_MY_MESSAGEIMAGE (WM_USER+101) // 图像帧消息
#define WINTIME 1000
#define ParametersFRAMELEN 10 //参数帧长度
#define ImageFRAMELEN 16 //图像帧长度
#define HostDevtype 7 //主机Can接口类型
#define HostDevind 0 //主机Can接口类型
#define HostCannum 0 //主机Can接口类型
#define HostAccCode 0x00000000 //can的验证码,屏蔽码和波特率以及滤波方式
#define HostAccMask 0xFFFFFFFF
#define HostFilter 0
#define HostMode 0
#define HostTiming0 0x00
#define HostTiming1 0x14
#define MAXNODE 1000 //最大节点
#define MAXWINDOWS 4 //最多窗口
#define ResendCount 3 //重传次数
//**********************通信数据帧***********************//
const BYTE ParametersDataFrame [8] = { //参数数据帧命令
0x023,
0x023,
0x010,
0x054,
0x055,
0x055,
0x055,
0x055
};
const BYTE ImageDataFrame [8] = { //图像数据帧命令
0x023,
0x023,
0x011,
0x054,
0x055,
0x055,
0x055,
0x055
};
const BYTE SwitchesDataFrame [4] = { //开关继电器数据帧命令
0x023,
0x023,
0x020,
0x076
};
const BYTE InsectNumDataFrame [4] = { //虫子数量数据帧
0x023,
0x023,
0x030,
0x087
};
const BYTE ReSendDataFrame [8] = { //请求重发数据帧
0x023,
0x023,
0x040,
0x098,
0x056,
0x056,
0x056,
0x056
};
const BYTE ResponseDataFrame [8] = { //应答数据帧
0x023,
0x023,
0x041,
0x098,
0x053,
0x053,
0x053,
0x053
};
const BYTE EndDataFrame [8] = { //结束数据帧
0x023,
0x023,
0x042,
0x098,
0x057,
0x057,
0x057,
0x057
};
//**********************全局数据结构***********************//
typedef struct{
BOOL OnLine; //是否在线上
BOOL IfImage; //是否有图像传感器
UINT ID ; //ID号
FLOAT CO2concentra ; //二氧化碳浓度
FLOAT IndoorTemperature; //室内温度
FLOAT IndoorHumidity; //室内湿度
FLOAT OutdoorTemperature; //室外温度
FLOAT OutdoorHumidity; //室外湿度
FLOAT Temperature[32]; //温度传感器,最多32个
}SensorParameters; //传感器参数
//**********************窗口数据结构***********************//
typedef struct{
SensorParameters SensorParameter; //传感器参数
BOOL OnWork; //是否显示
BOOL IfWork; //能否工作
}WindowParameters;
typedef struct{
long ID;
CHAR STATE; //=1 ;=2 ;=3;=4;=5;
BOOL m_bConnected;
}CANSTATE; //CAN状态,包括ID号,发送状态,连接没
//extern BYTE ParametersRECBUFF[80]; //参数帧缓存区
//extern BYTE ImageRECBUFF[30000]; //图像缓存区
//extern BOOL bReadFrame;
//extern BOOL bReadCOM;
//extern volatile BOOL m_bConnected;
extern volatile CANSTATE CANSTATENOW; //当前CAN的状态
extern volatile CANSTATE CANSTATELAST; //上次CAN的状态
extern volatile HANDLE m_hPostMsgEvent; // 用于CAN消息的事件对象
extern volatile HWND m_hTermWnd;
extern volatile UINT ImageBlockCount;
//**********************公共函数***********************//
UINT CANProc(LPVOID pParam); //检测CAN,通返回0,否-1,参数无用(补)
BOOL SENDCAN(INT ID,CHAR pParam,BYTE *wParam);//向下位机发送通信帧,ID表示号,
//pParam表示发送类型,wParam表示相关参数,成功返回true、
BOOL SENDCANBroadcasting();
BOOL ConfigConnection(); //配置CAN端口(补)
BOOL OpenConnection(); //打开端口,参数为当前窗体
void CloseConnection();
void CANERR();
//VOID AlarmSignal(BYTE *RECBUFF,UINT LEN); //报警处理,级别最高
//VOID ParameterSignal(BYTE *RECBUFF,UINT LEN);//参数处理
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -