⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.h

📁 参考周立功的basic模式的CAN通讯
💻 H
字号:
//--------------------------------------------------------------------------
// FileName   : main.H
// Description: main function
// DateTime   : CopyRight2005-07-06 Create
// Author     : jztx-liuweiming
// Version    : TxCmsPrj Ver1.0
//--------------------------------------------------------------------------
#ifndef __MAIN_H__
#define __MAIN_H__

/////////////////////////////////////////////////////////////////////

unsigned char xdata *p7132;      //Point of 7132 (Double Ram Device)
#define ADDR_7132_ZERO   0x9000  //7132 Point Zero Address

/////////////////////////////////////////////////////////////////////

#define FLAG_ERR_CRC_ORDER  0x77 //Flag => error: Psd Recv Order Data Crc
#define FLAG_ERR_CRC_RTU    0x88 //Flag => error: Psd Recv RTU   Data Crc
#define FLAG_ERR_TIMEOUT    0x99 //Flag => error: Psd Waiting for 185 ack Timeout
#define FLAG_OK_DATA        0x55 //Flag => OK :  104/PSD Write Data To 7132
#define FLAG_OK_ACK         0xAA //Flag => OK :  104/PSD Already Get Data form 7132


/////////////////////////////////////////////////////////////////////

#define POS_ADDR    0            //MODBUS Head_Addr
#define POS_FUNC    1            //MODBUS Head_Func
#define POS_TDH     2            //MODBUS Head_TongDaoID
#define POS_NULL    3            //MODBUS Head_NotUse
#define POS_LEN_H   4            //MODBUS Head_Len_Hi
#define POS_LEN_L   5            //MODBUS Head_Len_Lo
//      POS_DATA                 //MODBUS Data   
//      POS_CRC_H                //MODBUS Head_CRC_Hi
//      POS_CRC_l                //MODBUS Head_CRC_Lo
#define HEAD_LEN    8            //MODBUS Len = HEAD_LEN + DataLen

/////////////////////////////////////////////////////////////////////

#define COMM1_RECV_DATA  0x000F  //7132 Comm1RecvFromPc104 Data Addr
#define COMM1_RECV_CTRL  0x0000  //7132 Comm1RecvFromPc104 Ctrl Addr
#define COMM1_SEND_DATA  0x010F  //7132 Comm1SendToPc104   Data Addr
#define COMM1_SEND_CTRL  0x0100  //7132 Comm1SendToPc104   Ctrl Addr

#define COMM2_RECV_DATA  0x040F  //7132 Comm2RecvFromPc104 Data Addr
#define COMM2_RECV_CTRL  0x0400  //7132 Comm2RecvFromPc104 Ctrl Addr
#define COMM2_SEND_DATA  0x050F  //7132 Comm2SendToPc104   Data Addr
#define COMM2_SEND_CTRL  0x0500  //7132 Comm2SendToPc104   Ctrl Addr

/////////////////////////////////////////////////////////////////////

#define MAX_RECV_CNT     5       //Max Recv TimeOut  = 5ms
#define MAX_STAT_CNT     2000    //Max Stat TimeOut  = 2s
#define MAX_RECV_SUIT    10      //Max Recv Recycle Array Size
#define MAX_RECV_BUFF    767     //Max Recv Buffer  Size
#define MAX_SEND_BUFF    256     //Max Send Buffer  Size

xdata  struct tagSendBuff
{
    unsigned int  Len;                //SendBuffer Lengtn
    unsigned char Buff[MAX_SEND_BUFF];//SendBuffer

}Comm1Send, Comm2Send;

unsigned int  nComm1Send_Idx  = 0;    //Comm1Send Index
unsigned int  nComm2Send_Idx  = 0;    //Comm2Send Index

xdata  struct tagRecvBuff
{
    unsigned int  Len;                //RecvBuffer Lengtn
    unsigned char Buff[MAX_RECV_BUFF];//RecvBuffer

}Comm1Recv[MAX_RECV_SUIT], Comm2Recv[MAX_RECV_SUIT];

enum   FLAG {   RECV_READY = 0,       //0 (Modbus) Recv Free
                RECV_ONEBYTE,         //1 (Modbus) Recv OneByte
                RECV_COUNT,           //2 (Modbus) Recv Timer0 begin Count
                RECV_TIMEOUT };       //3 (Modbus) Recv Over (MAX_RECV_CNT) ms

enum FLAG Comm1Recv_Flag = RECV_READY;//(Modbus) Comm1Recv Control Flag
enum FLAG Comm2Recv_Flag = RECV_READY;//(Modbus) Comm2Recv Control Flag

unsigned int  nComm1Recv_Bgn  = 0;    //Comm1 Recv Recycle Array Begin Pos
unsigned int  nComm1Recv_End  = 0;    //Comm1 Recv Recycle Array End   Pos

unsigned int  nComm2Recv_Bgn  = 0;    //Comm2 Recv Recycle Array Begin Pos
unsigned int  nComm2Recv_End  = 0;    //Comm2 Recv Recycle Array End   Pos

unsigned int  nComm1Recv_Cnt  = 0;    //(Modbus) Comm1 Recv Timer0 Cnt
unsigned int  nComm2Recv_Cnt  = 0;    //(Modbus) Comm2 Recv Timer0 Cnt

unsigned int  nComm1Stat_Cnt  = 0;    //Comm1 (485) Ack Timer0 Cnt
unsigned int  nComm2Stat_Cnt  = 0;    //Comm2 (485) Ack Timer0 Cnt

struct tagRecvCtrl
{
  unsigned char Flag0;         //0  Write/Read Control 0
  unsigned char Flag1;         //1  Write/Read Control 1
  unsigned char Len_H;         //2  Length High
  unsigned char Len_L;         //3  Length Low
  unsigned char TDH;           //4  ID of TongDao
  unsigned char Kin_Bgn;       //5  Kin   Bgn Address
  unsigned char Kin_End;       //6  Kin   End Address  
  unsigned char Kout_Bgn;      //7  Kout  Bgn Address
  unsigned char Kout_End;      //8  Kout  End Address
  unsigned char Kshow_Bgn;     //9  Kshow Bgn Address
  unsigned char Kshow_End;     //10 Kshow End Address
  unsigned char Kong[4];       //11~14 NotUse 
}*pComm1RecvCtrl, *pComm2RecvCtrl;

struct tagSendCtrl
{
  unsigned char Flag0;         //0  Write/Read Control 0
  unsigned char Flag1;         //1  Write/Read Control 1
  unsigned char Len_H;         //2  Length High
  unsigned char Len_L;         //3  Length Low
  unsigned char TDH;           //4  ID of TongDao
  unsigned char Kong[10];      //5~14 NotUse 
}*pComm1SendCtrl, *pComm2SendCtrl;

/////////////////////////////////////////////////////////////////////

enum STATE { READY = 0,        //0 comm device is free 
             WAITING,          //1 comm device is waiting for 485 ack
             TIMEOUT,          //2 comm device wait  timeout
             SUCCESS };        //3 comm communication success


enum STATE Comm1State = READY; //Comm1 State Control 
enum STATE Comm2State = READY; //Comm2 State Control

/////////////////////////////////////////////////////////////////////

#endif /*__MAIN_H__*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -