ShortMessageService.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /************************************************************************/
  2. /* 函数:[12/26/2017 Home];
  3. /* 描述:;
  4. /* 参数:;
  5. /* [IN] :;
  6. /* [OUT] :;
  7. /* [IN/OUT] :;
  8. /* 返回:void;
  9. /* 注意:;
  10. /* 示例:;
  11. /*
  12. /* 修改:;
  13. /* 日期:;
  14. /* 内容:;
  15. /************************************************************************/
  16. #ifndef __SMS_HEADER__
  17. #define __SMS_HEADER__
  18. #include "SynSerial.h"
  19. #pragma once
  20. // 用户信息编码方式;
  21. #define GSM_7BIT 0
  22. #define GSM_8BIT 4
  23. #define GSM_UCS2 8
  24. // 应答状态;
  25. #define GSM_WAIT 0 // 等待,不确定;
  26. #define GSM_OK 1 // ok;
  27. #define GSM_ERR -1 // ERROR
  28. // 编码常量;
  29. #define CONST91 "91"
  30. #define CONSTF "F"
  31. #define CONSTLEN 1024
  32. #define CONST0 0
  33. // 短信消息结构,编码/解码使用;
  34. typedef struct
  35. {
  36. // 短信消息服务中心号码(SMSC地址);
  37. BYTE SCA[16];
  38. // 目标号码或回复号码(TP-DA或TP-RA)
  39. BYTE TPA[16];
  40. // 用户信息协议标识(TP-PID);
  41. BYTE TP_PID;
  42. // 用户编码方式(TP-DCS);
  43. BYTE TP_DCS;
  44. // 服务时间戳字符串(TP-SCTS),接收时用到;
  45. BYTE TP_SCTS[16];
  46. // 原始用户信息(编码前或解码后的TP-UD);
  47. BYTE TP_UD[161];
  48. // 短信消息序号,在读取时用到;
  49. BYTE nIndex;
  50. }SM_PARAM;
  51. typedef struct {
  52. int len;
  53. char data[16384];
  54. }SM_BUFF;
  55. class CShortMessageService:public CSynSerial
  56. {
  57. public:
  58. CShortMessageService(void);
  59. virtual ~CShortMessageService(void);
  60. public:
  61. // 初始化pdu环境;
  62. BOOL InitGSM();
  63. // 发送短信;
  64. BOOL SendShortMessage(IN SM_PARAM *sm_param);
  65. int SendShortMessage(IN LPCTSTR lpSentPhone, IN LPCTSTR lpSendMsg);
  66. // 接收短信;
  67. int ReceiveMessage(SM_PARAM *sm_param, int nIndex);
  68. // 接收所有未读新短信;
  69. int ReceiveUnreadMessage(SM_PARAM *sm_param);
  70. // 接收所有未读新短信;
  71. int ReceiveAllMessage(SM_PARAM *sm_param);
  72. // 删除所有短信;
  73. bool DeleteAllMessage();
  74. // 删除指定序号短信;
  75. bool DeleteMessage(int nIndex);
  76. // 设置是否关回显,并缺省设置为PDU模式;
  77. bool SetSendModule(BOOL bLoopback);
  78. // 设置短信中心号码;
  79. BOOL SetCenterNumber(IN LPCTSTR lpCenterNumber);
  80. // 获取短信中心号码;
  81. BOOL GetCenterNumber(OUT LPTSTR lpCenterNumber);
  82. public:
  83. // 手机号码奇偶对换;
  84. int InvertNumbers(IN LPCTSTR lpSrcTelephone, OUT LPTSTR lpDstTelephone, IN int nTelephoneLen = 0);
  85. // 手机号码序列化;
  86. int SerializeNumbers(IN LPCTSTR lpSrcTelephone, OUT LPTSTR lpDstTelephone, IN int nTelephoneLen = 0);
  87. // 编码Ucs2;
  88. int EncodeUcs2(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  89. // 解码Ucs2;
  90. int DecodeUcs2(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  91. // 将字节转成16进制字符;
  92. int Byte2HexString(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  93. // 将16进制字符串转成字节;
  94. int HexString2Byte(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  95. // 编码7Bit
  96. int Encode7bit(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  97. int Decode7bit(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  98. int Encode8bit(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  99. int Decode8bit(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  100. int EncodePdu(IN const SM_PARAM *pSMParam, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  101. int DecodePdu(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT SM_PARAM *pSMParam);
  102. int EncodePdu(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  103. int DecodePdu(IN LPCTSTR lpSrcText, IN const int &nSrcTextLen, OUT LPBYTE lpDstText, IN const int& nDstTextLen);
  104. };
  105. #endif // __SMS_HEADER__