mbport.h
上传用户:kongshuqi
上传日期:2013-10-09
资源大小:59k
文件大小:4k
源码类别:

通讯编程

开发平台:

Visual C++

  1.  /*
  2.   * FreeModbus Libary: A portable Modbus implementation for Modbus ASCII/RTU.
  3.   * Copyright (C) 2006 Christian Walter <wolti@sil.at>
  4.   *
  5.   * This library is free software; you can redistribute it and/or
  6.   * modify it under the terms of the GNU Lesser General Public
  7.   * License as published by the Free Software Foundation; either
  8.   * version 2.1 of the License, or (at your option) any later version.
  9.   *
  10.   * This library is distributed in the hope that it will be useful,
  11.   * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.   * Lesser General Public License for more details.
  14.   *
  15.   * You should have received a copy of the GNU Lesser General Public
  16.   * License along with this library; if not, write to the Free Software
  17.   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  18.   *
  19.   * File: $Id: mbport.h,v 1.14 2006/06/26 19:26:50 wolti Exp $
  20.   */
  21. #ifndef _MB_PORT_H
  22. #define _MB_PORT_H
  23. #ifdef __cplusplus
  24. PR_BEGIN_EXTERN_C
  25. #endif
  26. /* ----------------------- Type definitions ---------------------------------*/
  27. typedef enum
  28. {
  29.     EV_READY,                   /*!< Startup finished. */
  30.     EV_FRAME_RECEIVED,          /*!< Frame received. */
  31.     EV_EXECUTE,                 /*!< Execute function. */
  32.     EV_FRAME_SENT,              /*!< Frame sent. */
  33. } eMBEventType;
  34. /*! ingroup modbus
  35.  * brief Parity used for characters in serial mode.
  36.  *
  37.  * The parity which should be applied to the characters sent over the serial
  38.  * link. Please note that this values are actually passed to the porting
  39.  * layer and therefore not all parity modes might be available.
  40.  */
  41. typedef enum
  42. {
  43.     MB_PAR_NONE,                /*!< No parity. */
  44.     MB_PAR_ODD,                 /*!< Odd parity. */
  45.     MB_PAR_EVEN                 /*!< Even parity. */
  46. } eMBParity;
  47. /* ----------------------- Supporting functions -----------------------------*/
  48. BOOL            xMBPortEventInit( void );
  49. BOOL            xMBPortEventPost( eMBEventType eEvent );
  50. BOOL            xMBPortEventGet(  /*@out@ */ eMBEventType * eEvent );
  51. /* ----------------------- Serial port functions ----------------------------*/
  52. BOOL            xMBPortSerialInit( UCHAR ucPort, ULONG ulBaudRate,
  53.                                    UCHAR ucDataBits, eMBParity eParity );
  54. void            vMBPortClose( void );
  55. void            xMBPortSerialClose( void );
  56. void            vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable );
  57. INLINE BOOL     xMBPortSerialGetByte( CHAR * pucByte );
  58. INLINE BOOL     xMBPortSerialPutByte( CHAR ucByte );
  59. /* ----------------------- Timers functions ---------------------------------*/
  60. BOOL            xMBPortTimersInit( USHORT usTim1Timerout100us );
  61. void            xMBPortTimersClose( void );
  62. INLINE void     vMBPortTimersEnable( void );
  63. INLINE void     vMBPortTimersDisable( void );
  64. /* ----------------------- Callback for the protocol stack ------------------*/
  65. /*!
  66.  * brief Callback function for the porting layer when a new byte is
  67.  *   available.
  68.  *
  69.  * Depending upon the mode this callback function is used by the RTU or
  70.  * ASCII transmission layers. In any case a call to xMBPortSerialGetByte()
  71.  * must immediately return a new character.
  72.  *
  73.  * return <code>TRUE</code> if a event was posted to the queue because
  74.  *   a new byte was received. The port implementation should wake up the
  75.  *   tasks which are currently blocked on the eventqueue.
  76.  */
  77. extern          BOOL( *pxMBFrameCBByteReceived ) ( void );
  78. extern          BOOL( *pxMBFrameCBTransmitterEmpty ) ( void );
  79. extern          BOOL( *pxMBPortCBTimerExpired ) ( void );
  80. /* ----------------------- TCP port functions -------------------------------*/
  81. BOOL            xMBTCPPortInit( USHORT usTCPPort );
  82. void            vMBTCPPortClose( void );
  83. void            vMBTCPPortDisable( void );
  84. BOOL            xMBTCPPortGetRequest( UCHAR **ppucMBTCPFrame, USHORT * usTCPLength );
  85. BOOL            xMBTCPPortSendResponse( const UCHAR *pucMBTCPFrame, USHORT usTCPLength );
  86. #ifdef __cplusplus
  87. PR_END_EXTERN_C
  88. #endif
  89. #endif