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

📄 samplesource.c

📁 基于J1939的汽车CAN通讯测试,简单上位机软件源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength 
                                                  );
/*PROCEDURE*/ void SendJ1939PeriodicMessages     ( 
                                                  short          nClientID,
                                                  FILE          *fp1,
                                                  FILE          *fp2
                                                  );
/*PROCEDURE*/ void RequestPGN                    ( 
                                                  short          nClientID, 
                                                  int            iRequestedPGN, 
                                                  FILE          *fp1,
                                                  FILE          *fp2,
                                                  unsigned char  ucSourceAddress, 
                                                  unsigned char  AddressRequestedFrom 
                                                  );
/*FUNCTION*/  char *EngineStarterMode            ( 
                                                  unsigned char  Mode 
                                                  );
/*FUNCTION*/  char *EngineRetarderAndTorqueModes ( 
                                                  unsigned char  Mode 
                                                  );
/*PROCEDURE*/ void ClaimMyJ1939Address           ( 
                                                  FILE          *fp1,
                                                  FILE          *fp2
                                                  );

//-----------------------------------------------------------------------------------------------------
// CAN-related functions
//-----------------------------------------------------------------------------------------------------

/*PROCEDURE*/ void Process_CAN_Message           ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_CAN_Message             ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_Sent_CAN_Message        ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength 
                                                  );
/*PROCEDURE*/ void SendCANMessage                ( 
                                                  short          nClientID, 
                                                  short          nExtendedCAN, 
                                                  int            iCANID, 
                                                  FILE          *fp1,
                                                  FILE          *fp2,
                                                  unsigned char *ucMessage, 
                                                  short          nDataLen 
                                                  );
/*PROCEDURE*/ void SendCANPeriodicMessages       ( 
                                                  short          nClientID ,
                                                  FILE          *fp1,
                                                  FILE          *fp2
                                                  );
/*PROCEDURE*/ void SendIESCANPeriodicMessages    ( 
                                                  short          nClientID ,
                                                  FILE          *fp1,
                                                  FILE          *fp2
                                                  );

//-----------------------------------------------------------------------------------------------------
// J1708/J1587-related functions
//-----------------------------------------------------------------------------------------------------

/*PROCEDURE*/ void Process_J1708_Message         ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nJ1708RawMode, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_J1708_Message           ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nJ1708RawMode, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_Sent_J1708_Message      ( 
                                                  short          nClientID, 
                                                  FILE          *fp, 
                                                  FILE          *fp1, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nJ1708RawMode 
                                                  );
/*PROCEDURE*/ void RequestPID                    ( 
                                                  short          nClientID, 
                                                  unsigned char  ucRequestedPID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char  ucSourceAddress 
                                                  );
/*PROCEDURE*/ void SendJ1708PeriodicMessages     ( 
                                                  short          nClientID,
                                                  FILE          *fp1,
                                                  FILE          *fp2 
                                                  );


//-----------------------------------------------------------------------------------------------------
// J1850-related functions
//-----------------------------------------------------------------------------------------------------

/*PROCEDURE*/ void Process_J1850_Message         ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_J1850_Message           ( 
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength, 
                                                  short          nEchoTXMsgs 
                                                  );
/*PROCEDURE*/ void Print_Sent_J1850_Message      (
                                                  short          nClientID, 
                                                  FILE          *fp1, 
                                                  FILE          *fp2, 
                                                  unsigned char *ucMessage, 
                                                  short          nLength 
                                                  );
/*PROCEDURE*/ void SendJ1850PeriodicMessages     ( 
                                                  short          nClientID,
                                                  FILE          *fp1,
                                                  FILE          *fp2
                                                  );
/*PROCEDURE*/ void SendJ1850Message              (    
                                                  short          nClientID,
                                                  FILE          *fp1,
                                                  FILE          *fp2,
                                                  unsigned char *ucMessage, 
                                                  short          nLength 
                                                  );
//-----------------------------------------------------------------------------------------------------
// Function:      main
// 
// Purpose:       Main program entry point.
//
//-----------------------------------------------------------------------------------------------------

/*FUNCTION*/ int main( void )
{
  //
  // Initialize all function variables to a known state.
  //

  short           nRetVal                                 = -1;
  char            szTemp[1000]                            = ""; 

  time_t          tLastTimeRequestsSent                   = -1;
  time_t          tCurrentTime                            = -1;
  time_t          Timer                                   = 0;
  struct tm      *TimeRecord                              = NULL;

  short           bFirst                                  = TRUE;
  FILE           *fpDiskFile                              = NULL;

  //
  // Initialize all array variables to a known state of NULL.
  //

  memset( szTemp,         0x00, sizeof( szTemp         ));
  memset( ucTxRxBuffer,   0x00, sizeof( ucTxRxBuffer   ));
  memset( szDLLName,      0x00, sizeof( szDLLName      ));
  memset( szProtocolName, 0x00, sizeof( szProtocolName ));

  //
  // Print program information.
  //

  printf("-------------------------------------------------------------------------------------\n");
  printf("%s\n", PROGRAM_ID                                                                       );
  printf("-------------------------------------------------------------------------------------\n");

  //
  // Have the user select the adapter they want to use and set szDLLName.
  //

  do 
    {
      printf("                                                                     \n");
      printf("---------------------------------------------------------------------\n");
      printf(" Select Adapter To Use                                               \n");
      printf("---------------------------------------------------------------------\n");
      printf("                                                                     \n");
      printf(" 1 = DG DPA 4+ And Prior DPAs (DLL Name = DG121032.DLL)              \n");
      printf(" 2 = DG DPA 5                 (DLL Name = DG1210B.DLL)               \n");
      printf("                                                                     \n");
      printf("->  ");

      iAdapter = atoi( gets( szTemp ) );

      if ( iAdapter == 1 ) 
        {
          strcpy( szDLLName, "dg121032.dll" );
        }
      else if ( iAdapter == 2 ) 
        {
          strcpy( szDLLName, "dg1210b.dll"  );
        }
      else
        {
        }
      
    } while( iAdapter < 1 || iAdapter > 2 );
  
  //
  // Have the user select the protocol they want to use and set szProtocolName.
  //

  do 
    {
      printf("                                                                     \n");
      printf("---------------------------------------------------------------------\n");
      printf(" Selection Protocol To Use                                           \n");
      printf("---------------------------------------------------------------------\n");
      printf("                                                                     \n");
      printf(" 1 = J1708                                                           \n");
      printf(" 2 = J1939                                                           \n");
      printf(" 3 = CAN                                                             \n");
      printf(" 4 = IESCAN (GMLAN/CAN@500k/J2284)                                   \n");
      printf(" 5 = J1850  (J1850 VPW @10.4k)                                       \n");
      printf("                                                                     \n");
      printf("->  ");

      iProtocol = atoi( gets( szTemp ) );

      if ( iProtocol == 1 )  
        {
          strcpy( szProtocolName, "J1708" );
        }
      else if( iProtocol == 2 )  
        {
          strcpy( szProtocolName, "J1939" );
        }
      else if( iProtocol == 3 )  
        {
          strcpy( szProtocolName, "CAN" );

⌨️ 快捷键说明

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