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

📄 fmaclien.c

📁 profibus-dp主站源代码
💻 C
📖 第 1 页 / 共 3 页
字号:




/**************************************************************************/
/**************************************************************************/
/*                                                                        */
/*                        EXPORTED FUNCTIONS                              */
/*                                                                        */
/**************************************************************************/
/**************************************************************************/



/**************************************************************************/
/*                                                                        */
/*  int get_life_list_local(HWND hWnd)                                           */
/*                                                                        */
/*                                                                        */
/**************************************************************************/
int FDL_life_list_local( int DriverHandle, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;


  build_head( rqb );
  rqb -> rb2_header.priority = pr;      // rqb - univerzalni pointer na Request Block
  rqb -> rb2_header.fill_length_1 = 0;
  rqb -> rb2_header.seg_length_1 = 127;
  rqb -> rb2_header.offset_1 = 80;

  // application block params
  rqb -> application_block.service.code = fdl_life_list_create_local;

  return fdl_write( DriverHandle, rqb );
}

//*************************************************************************

int FDL_life_list_remote( int DriverHandle, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_head( rqb );
  rqb -> rb2_header.priority = pr;
  rqb -> rb2_header.fill_length_1 = 0;
  rqb -> rb2_header.seg_length_1 = 127;
  rqb -> rb2_header.offset_1 = 80;

  // application block params
  rqb -> application_block.service.code = fdl_life_list_create_remote;

  return fdl_write( DriverHandle, rqb );
}

/**************************************************************************/
/*  int fdl_ident(HWND hWnd,BYTE address)                                           */
/**************************************************************************/
int FDL_ident( int DriverHandle, BYTE addr, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_head( rqb );

  rqb -> rb2_header.fill_length_1 = 0;
  rqb -> rb2_header.seg_length_1 = 260;
  rqb-> rb2_header.offset_1 = 80;
  rqb-> rb2_header.priority = pr;

  rqb -> rb2_header.fill_length_2 = 0;
  rqb -> rb2_header.seg_length_2 = 0;
  rqb -> rb2_header.offset_2 = 0;

  rqb -> application_block.service.code = fdl_ident;
  rqb -> application_block.receive_l_sdu.length = 255;
  rqb -> application_block.rem_add.station = addr;

  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int Send_FDL_await_indication( int DriverHandle, UBYTE sap_nr, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  if ( sap_nr == EVENT_SAP )
    build_rqb_event_sap( rqb, pr );    // EVENT_SAP=64
  else
    build_rqb_await_indication( rqb, sap_nr, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Set_FDL_value( int DriverHandle, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  FDL_set_val( rqb, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Read_FDL_value( int DriverHandle, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  FDL_read_val( rqb, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  SAP_activate( int DriverHandle,
                   UBYTE sap_nr,
                   UBYTE ACCSAP,
                   UBYTE ACCSTAT,
                   UBYTE SDA_R,
                   UBYTE SDN_R,
                   UBYTE SRD_R,
                   BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_sap_activate( rqb,
                          sap_nr,
                          ACCSAP,
                          ACCSTAT,
                          SDA_R,
                          SDN_R,
                          SRD_R,
                          pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  RSAP_activate( int DriverHandle,
                    UBYTE sap_nr,
                    UBYTE ACCSAP,
                    BYTE ACCSTAT,
                    BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_rsap_activate( rqb, sap_nr, ACCSAP, ACCSTAT, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************


int  SAP_deactivate( int DriverHandle, UBYTE sap_nr, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_sap_deactivate( rqb, sap_nr, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  LSAP_status_read( int DriverHandle, UBYTE addr, UBYTE sap_nr, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_lsap_status( rqb, addr, sap_nr, pr );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Read_Statistic_Ctr( int DriverHandle, BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_statistic_count( rqb, pr );
  return fdl_write( DriverHandle, rqb );
}


//*****************************************************************************
//*****************************************************************************
//*****************************************************************************


int  Send_Replay_Update_Single_Bin( int DriverHandle,
                                    UBYTE sap_nr,
                                    unsigned char *data,
                                    int length,
                                    BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_reply_update_single( rqb, sap_nr, pr, data, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_Replay_Update_Multiple_Bin( int DriverHandle,
                                      UBYTE sap_nr,
                                      unsigned char *data,
                                      int length,
                                      BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_reply_update_multiple( rqb, sap_nr, pr, data, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_SDN_Bin( int DriverHandle,
                   BYTE addr,
                   UBYTE ssap,
                   UBYTE dsap,
                   unsigned char *data,
                   int length,
                   BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_sdn( rqb, addr, dsap, ssap, pr, data, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_SRD_Bin( int DriverHandle,
                   BYTE addr,
                   UBYTE ssap,
                   UBYTE dsap,
                   unsigned char *data,
                   int length,
                   BYTE pr )
{
  fdl_rb rb, *rqb=&rb;

  build_rqb_srd( rqb, addr, dsap, ssap, pr, data, length );
  return fdl_write( DriverHandle, rqb );
}


//*****************************************************************************
//*****************************************************************************
//*****************************************************************************


int  Send_Replay_Update_Single_Hex( int DriverHandle,
                                    UBYTE sap_nr,
                                    unsigned char *data,
                                    BYTE pr )
{
  fdl_rb rb, *rqb=&rb;
  unsigned char data_bin[260];
  int           length = ( strlen( data ) + 1 ) / 3;
  HexStringToByteString( data, length, data_bin );

  build_rqb_reply_update_single( rqb, sap_nr, pr, data_bin, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_Replay_Update_Multiple_Hex( int DriverHandle,
                                      UBYTE sap_nr,
                                      unsigned char *data,
                                      BYTE pr )
{
  fdl_rb rb, *rqb=&rb;
  unsigned char data_bin[260];
  int           length = ( strlen( data ) + 1 ) / 3;
  HexStringToByteString( data, length, data_bin );

  build_rqb_reply_update_multiple( rqb, sap_nr, pr, data_bin, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_SDN_Hex( int DriverHandle,
                   BYTE addr,
                   UBYTE ssap,
                   UBYTE dsap,
                   unsigned char *data,
                   BYTE pr )
{
  fdl_rb rb, *rqb=&rb;
  unsigned char data_bin[260];
  int           length = ( strlen( data ) + 1 ) / 3;
  HexStringToByteString( data, length, data_bin );

  build_rqb_sdn( rqb, addr, dsap, ssap, pr, data_bin, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

int  Send_SRD_Hex( int DriverHandle,
                   BYTE addr,
                   UBYTE ssap,
                   UBYTE dsap,
                   unsigned char *data,
                   BYTE pr )
{
  fdl_rb rb, *rqb=&rb;
  unsigned char data_bin[260];
  int           length = ( strlen( data ) + 1 ) / 3;
  HexStringToByteString( data, length, data_bin );

  build_rqb_srd( rqb, addr, dsap, ssap, pr, data_bin, length );
  return fdl_write( DriverHandle, rqb );
}

//*****************************************************************************

⌨️ 快捷键说明

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