commCPU_SUPV/code/general/inc/general_can.h

90 lines
2.0 KiB
C
Raw Normal View History

2025-04-30 16:24:29 +08:00
#ifndef GENERAL_CAN_123_INCLUDED
#define GENERAL_CAN_123_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
/************************************************************************/
#include "glbtypes.h"
//<2F><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CAN_RECVBUF_LEN (256+8)
//ÿ<><C3BF><EFBFBD>򿪵<EFBFBD>CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>12<31><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CAN_ATTRIB_LINK_MAX 16
/****<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խṹ<D4BD><E1B9B9>****/
typedef struct
{
//֪ͨ<CDA8>ⲿ<EFBFBD><E2B2BF><EFBFBD>򿪳ɹ<F2BFAAB3>
ST_INT flagOpenSuccess;
ST_INT canHandle; /***<2A><><EFBFBD><EFBFBD>**/
ST_UINT localCanID; /* <20><><EFBFBD><EFBFBD>CAN id */
ST_UINT sendCanID;
ST_UINT recvCanID;
ST_INT status; /**<2A><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><30>д򿪣<D0B4>1<EFBFBD>򿪳ɹ<F2BFAAB3><C9B9><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>**/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
ST_VOID *canLinkAttrib[CAN_ATTRIB_LINK_MAX];
//<2F><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>,<2C><><EFBFBD>´򿪵ļ<F2BFAAB5><C4BC><EFBFBD>
ST_DOUBLE record_time_reopen;
ST_DOUBLE space_reopen;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int canNo;
int baudrate;
} CAN_ATTRIB;
typedef struct
{
ST_UINT canID; //Ŀ<><C4BF>ID<49><44><EFBFBD><EFBFBD><EFBFBD>Է<EFBFBD><D4B7><EFBFBD>ID
ST_UINT recvCount; /**<2A><><EFBFBD>յ<EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>*/
/***<2A><><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD>Ƚϴ<C8BD><CFB4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD><D3B9>û<EFBFBD><C3BB><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>?? ***/
ST_INT recvDataLen; /***<2A><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>**/
ST_UCHAR recvDataBuf[CAN_RECVBUF_LEN]; /**<2A><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD>**/
CAN_ATTRIB *can_attrib;
} CAN_LINK_ATTRIB;
ST_RET can_attrib_init( CAN_ATTRIB *can_attrib );
ST_RET can_attrib_release( CAN_ATTRIB *can_attrib );
ST_RET can_attrib_set( CAN_ATTRIB *can_attrib, int canNo,int baudrate, unsigned int localCanID );
ST_RET can_link_attrib_set( CAN_LINK_ATTRIB *can_link_attrib, int canID, CAN_ATTRIB *can_attrib );
/**** ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> ****/
ST_RET can_attrib_check( CAN_ATTRIB *can_attrib );
ST_RET can_send(CAN_ATTRIB *can_attrib, ST_UCHAR *sendBuf, ST_INT sendLen, ST_INT sendCanId );
ST_RET can_link_send(CAN_LINK_ATTRIB *can_link, ST_UCHAR *sendBuf, ST_INT sendLen );
ST_RET can_bus_reset( CAN_LINK_ATTRIB *can_link_attrib );
ST_RET can_bus_check_error( CAN_LINK_ATTRIB *can_link_attrib );
ST_RET can_bus_reset_attrib( CAN_ATTRIB *can_attrib );
/************************************************************************/
#ifdef __cplusplus
}
#endif
#endif