FaxAPI.h
上传用户:glass0516
上传日期:2010-01-11
资源大小:104k
文件大小:7k
源码类别:

传真(Fax)编程

开发平台:

Visual C++

  1. /*****************************************************************************
  2. * RelayFax Open Source Project
  3. * Copyright 1996-2004 Alt-N Technologies, Ltd.
  4. * All rights reserved.
  5. *
  6. * Redistribution and use in source and binary forms, with or without
  7. * modification, are permitted only as authorized by the RelayFax Open 
  8. * Source License.  A copy of this license is available in file LICENSE 
  9. * in the top-level directory of the distribution.
  10. *
  11. * RelayFax is a registered trademark of Alt-N Technologies, Ltd.
  12. *
  13. * Individual files and/or contributed packages may be copyright by
  14. * other parties and subject to additional restrictions.
  15. *****************************************************************************/
  16. #ifndef FAXAPI_H
  17. #define FAXAPI_H
  18. #define FAXAPI_CALL WINAPI
  19. // For FaxApiCreateModem: Note that class 1.0 and class 2.1 are not functional.
  20. #define FAXAPI_DETECT 0
  21. #define FAXAPI_CLASS_1 1
  22. #define FAXAPI_CLASS_1_0 2
  23. #define FAXAPI_CLASS_2 3
  24. #define FAXAPI_CLASS_2_0 4
  25. #define FAXAPI_CLASS_2_1 5
  26. // Speaker volume parameter for FaxApiSetSpkrParams
  27. #define FAXAPI_SPKRVOL_LOW 0
  28. #define FAXAPI_SPKRVOL_MED 1
  29. #define FAXAPI_SPKRVOL_HIGH 2
  30. // Speaker mode parameter for FaxApiSetSpkrParams
  31. #define FAXAPI_SPKRMODE_OFF 0
  32. #define FAXAPI_SPKRMODE_DIAL 1
  33. #define FAXAPI_SPKRMODE_ON 2
  34. // For FaxApiSetSendEncoding -- don't use uncompressed!
  35. #define FAXAPI_ENC_CCITT_1D 0
  36. #define FAXAPI_ENC_CCITT_2D 1
  37. #define FAXAPI_ENC_CCITT_UNC 2
  38. #define FAXAPI_ENC_CCITT_T6 3
  39. // FaxApiSetSendBaud and FaxApiSetRecvBaud
  40. #define FAXAPI_BAUD_2400 1
  41. #define FAXAPI_BAUD_4800 2
  42. #define FAXAPI_BAUD_7200 3
  43. #define FAXAPI_BAUD_9600 4
  44. #define FAXAPI_BAUD_12000 5
  45. #define FAXAPI_BAUD_14400 6
  46. #define FAXAPI_BAUD_16800 7
  47. #define FAXAPI_BAUD_19200 8
  48. #define FAXAPI_BAUD_21600 9
  49. #define FAXAPI_BAUD_24000 10
  50. #define FAXAPI_BAUD_26400 11
  51. #define FAXAPI_BAUD_28800 12
  52. #define FAXAPI_BAUD_31200 13
  53. #define FAXAPI_BAUD_33600 14
  54. // Events - identified by lParam of FAXAPI_MESSAGE
  55. #define FAXAPI_EVENT_ERROR 0
  56. #define FAXAPI_EVENT_IDLE 1
  57. #define FAXAPI_EVENT_RING 2
  58. #define FAXAPI_EVENT_START_RECV 3
  59. #define FAXAPI_EVENT_START_SEND 4
  60. #define FAXAPI_EVENT_RECV_DIS 5
  61. #define FAXAPI_EVENT_SENT_DIS 6
  62. #define FAXAPI_EVENT_RECV_DCS 7
  63. #define FAXAPI_EVENT_SENT_DCS 8
  64. #define FAXAPI_EVENT_START_TRAINING 9
  65. #define FAXAPI_EVENT_START_PAGE 10
  66. #define FAXAPI_EVENT_PAGE_DATA 11
  67. #define FAXAPI_EVENT_GOT_REMOTEID 12
  68. #define FAXAPI_EVENT_TERMINATE 13
  69. #define FAXAPI_EVENT_DISCONNECT 14
  70. #define FAXAPI_EVENT_CALLERID 15
  71. #define FAXAPI_EVENT_INFO 16
  72. #define FAXAPI_EVENT_DETECT_FINISHED 17
  73. #define FAXAPI_SUCCESS 0
  74. #define FAXAPI_ERROR_BAD_MSG 1
  75. #define FAXAPI_ERROR_BAD_MODEM 2
  76. #define FAXAPI_ERROR_THREAD_STARTED 3
  77. #define FAXAPI_MESSAGE WM_USER+423
  78. // FAXAPI_MESSAGEs have lParam = FAXAPI_EVENT and wParam is *FaxApiModemMsg 
  79. // if lParam == FAXAPI_EVENT_DETECT_FINISHED then wParam is *FaxApiModemDetectMsg
  80. // Free either one by calling FaxApiDeleteMessage()
  81. #define FAXAPI_MAXPARAMVALUE 7
  82. #define FAXAPI_MAXPARAMETERS 8
  83. #define FAXAPI_MODEMMSG_IDLEN 32
  84. #define FAXAPI_MODEMMSG_INFOLEN 256
  85. #define FAXAPI_DETECTMSG_INFOLEN 256
  86. extern "C" {
  87. // See class 2/2.0 spec for definition of these parameters
  88. typedef struct 
  89. {
  90. int VertRes;
  91. int BitRate;
  92. int PageWidth;
  93. int PageLength;
  94. int DataFormat;
  95. int ECM;
  96. int BFT;
  97. int ScanTime;
  98. } FaxApiParameters;
  99. typedef struct
  100. {
  101. int nSuccessful; // 1 = true, 0 = false
  102. int nPages; // total pages sent/recvd
  103. } FaxApiTerminate;
  104. typedef struct _FaxApiModemMsg // for all events except FAXAPI_EVENT_DETECT_FINISHED
  105. {
  106. unsigned int m_cbSize;
  107. FaxApiParameters p; // for DIS/DCS events only
  108. FaxApiTerminate t; // for FAXAPI_EVENT_TERMINATE only
  109. char szID[FAXAPI_MODEMMSG_IDLEN]; // Modem port
  110. char sz[FAXAPI_MODEMMSG_INFOLEN]; // information string 
  111. } FaxApiModemMsg;
  112. typedef struct _FaxApiModemDetectMsg  // for FAXAPI_EVENT_DETECT_FINISHED only
  113. {
  114. unsigned int m_cbSize;
  115. bool m_bSuccessful;
  116. bool m_bClass1;
  117. bool m_bClass1_0;
  118. bool m_bClass2;
  119. bool m_bClass2_0;
  120. bool m_bClass2_1;
  121. bool m_Class2Matrix[FAXAPI_MAXPARAMETERS][FAXAPI_MAXPARAMVALUE];
  122. bool m_Class20Matrix[FAXAPI_MAXPARAMETERS][FAXAPI_MAXPARAMVALUE];
  123. int m_nSendBaudRate;
  124. int m_nRecvBaudRate;
  125. char m_szClasses[FAXAPI_DETECTMSG_INFOLEN];
  126. char m_szProductCode[FAXAPI_DETECTMSG_INFOLEN];
  127. char m_szIDCode[FAXAPI_DETECTMSG_INFOLEN];
  128. char m_szManufacturer[FAXAPI_DETECTMSG_INFOLEN];
  129. char m_szModel[FAXAPI_DETECTMSG_INFOLEN];
  130. char szID[FAXAPI_MODEMMSG_IDLEN];
  131. } FaxApiModemDetectMsg;
  132. typedef void* FaxApiModem;
  133. // call this first
  134. FaxApiModem FAXAPI_CALL FaxApiCreateModem( int nClass );
  135. //  called these FaxApiStartThread
  136. int FAXAPI_CALL FaxApiSetCommParam( FaxApiModem pModem, DWORD BaudRate, BYTE ByteSize, BYTE Parity, BYTE StopBits );
  137. int FAXAPI_CALL FaxApiSetFlowControl( FaxApiModem pModem, bool bDSRFlowControl, bool bCTSFlowControl, bool bSoftFlowControl );
  138. int FAXAPI_CALL FaxApiSetPort( FaxApiModem pModem, char* szPort );
  139. int FAXAPI_CALL FaxApiSetSpkrParams( FaxApiModem pModem, int nSpkrVol, int nSpkrMode );
  140. int FAXAPI_CALL FaxApiSetDistinctiveRing( FaxApiModem pModem, LPCSTR szRingCodes );
  141. int FAXAPI_CALL FaxApiSetInitString( FaxApiModem pModem, LPCSTR szString );
  142. int FAXAPI_CALL FaxApiSetSendEncoding( FaxApiModem pModem, int nEncoding ); 
  143. int FAXAPI_CALL FaxApiSetSendECM( FaxApiModem pModem, bool bECMSupported );
  144. int FAXAPI_CALL FaxApiSetSendFine( FaxApiModem pModem, bool bFineSupported );
  145. int FAXAPI_CALL FaxApiSetSendUnlimited( FaxApiModem pModem, bool bUnlimitedSupported );
  146. int FAXAPI_CALL FaxApiSetPulseDialing( FaxApiModem pModem, bool bPulseDialing );
  147. int FAXAPI_CALL FaxApiSetSendBaud( FaxApiModem pModem, int nBaud );
  148. int FAXAPI_CALL FaxApiSetRecvBaud( FaxApiModem pModem, int nBaud );
  149. int FAXAPI_CALL FaxApiEnableDebugLog( FaxApiModem pModem, bool bEnable, char* LogDirectory );
  150. int FAXAPI_CALL FaxApiSetMaxPageRetries( FaxApiModem pModem, int nRetries );
  151. // this can be called before or after FaxApiStartThread
  152. int FAXAPI_CALL FaxApiSetCSID( FaxApiModem pModem, LPCSTR szString );
  153. // start the modem thread
  154. int FAXAPI_CALL FaxApiStartThread( FaxApiModem pModem, HANDLE hStop, DWORD faxThreadID );
  155. // these can only be called after FaxApiStartThread
  156. void FAXAPI_CALL FaxApiReceiveFax( FaxApiModem pModem, char* szFaxFile );
  157. void FAXAPI_CALL FaxApiAbortFax( FaxApiModem pModem );
  158. void FAXAPI_CALL FaxApiDisconnect( FaxApiModem pModem );
  159. bool FAXAPI_CALL FaxApiSendFax( FaxApiModem pModem, char* szNumberToDial, char* szFaxFile );
  160. void FAXAPI_CALL FaxApiClearRingCount( FaxApiModem pModem );
  161. int FAXAPI_CALL FaxApiWaitForModemToExit( FaxApiModem pModem );
  162. // call this when processing modem messages
  163. int FAXAPI_CALL FaxApiDeleteMessage( MSG* pMsg );
  164. }
  165. #endif // FAXAPI_H