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

📄 wsmsdef.h

📁 用vc编写的GPRS Modem编程,希望对大家有用,欢迎大家下载
💻 H
字号:
/*****************************************************************************
 *    GSM SMS Routines
 *
 *    Writen by Menghongwen@<menghongwen@smmail.cn>
 *
 *   Dec., 2004 copyright YINHUA Technology, all right reserved
\****************************************************************************/

#ifndef __WSMSDEF_H
#define __WSMSDEF_H

#include <cbcomm.h>
#include <Contnrs.hpp>
#include <Classes.hpp>

#define  __GSMSMSNORECEIPT      888
#define  __GSMSMSESNDERROR      900

#define   GSMPHONETYPEINT       0x91
#define   GSMPHONETYPENAT       0xA1

typedef enum { GSMSendAsText = 0, GSMSendAsPDU } TSMSSendMode;
typedef enum {  GSMMTMessage = 0, GSMMTReceipt, GSMMTError } TGSMMessageType;
extern  const char * __GSMRESPOK;
extern  const char * __GSMRESPERR;

class TGSMCommand {
    TRS232Comm    hComm;
    short usSend, rc;
    char  szSend[1024],szRecv[__GSMCOMMINBUFFSIZE];
    char  szString[2048];
public:
    short  usRecv;

    TGSMCommand();

    bool  opencomm(char *pPort);
    bool  closecomm();

    char *sendAsString();
    char *recvAsString();

    void  atcommand(char *pname, bool bAssign = true);
    void  cleardata();
    void  appendstr(char *);
    void  append(BYTE *,BYTE);
    void  append(BYTE );
    void  appendcr();
    void  appendcz();
    void  toAscii();

    bool  send(short msSecond=0);
    bool  querychar(char );
    bool  querystring(const char *pv=__GSMRESPOK);
    short queryShortValue(char *pName);
};

typedef union {
    struct {
       unsigned  planid :4;
       unsigned  numtype:3;
       unsigned  msb    :1;
    } bitmap;
    BYTE  value;
} TADDRESSTYPE;

class TGSMAddress {
    BYTE uclen;
    BYTE ucoctets;
    TADDRESSTYPE type;
public:
    BYTE value[16];
    char ascii[16];

    TGSMAddress();
    TGSMAddress(char *psmsc);

    void  setvalue(char *psmsc);
    short loadstring(char *pstream, bool bdao=false);
    BYTE  valuelen()   { return uclen; }
    BYTE  packagelen() { return uclen+1;}
    BYTE  semioctets() { return ucoctets;}
    BYTE  typeOf() { return type.value; }
    void  settype(BYTE uc) { type.value = uc; }
    TGSMAddress & operator=  (TGSMAddress&);
};

typedef union {
    struct {
       unsigned  tpmti :2;
       unsigned  tprd  :1;
       unsigned  tpvpf :2;
       unsigned  tpspr :1;
       unsigned  tpudhi:1;
       unsigned  tprp  :1;
    } bitmap;
    BYTE  value;
} TFOCTET;

typedef union  {
    struct {
       unsigned  b40 :5;
       unsigned  b5  :1;
       unsigned  b76 :2;
    } bitmap;
    BYTE  value;
} TTPPID;

typedef union  {
    struct {
       unsigned  calss   : 2;
       unsigned  alphabet: 2;
       unsigned  hascalss: 1;
       unsigned  compress: 1;
       unsigned  gdatacode:2;
    } bitmap;
    BYTE  value;
} TTPDCS;

typedef struct {
    BYTE  years;
    BYTE  month;
    BYTE  day;
    BYTE  hour;
    BYTE  minute;
    BYTE  second;
    BYTE  timezone;
} TTPSCTS;

class TSMSPDUS  {
public:
    TSMSPDUS();

    TGSMAddress *sca;
    TFOCTET      foctet;
    BYTE         tpmr;
    TGSMAddress *tpda;
    TTPPID       tppid;
    TTPDCS       tpdcs;
    BYTE         tpvp;
    BYTE         tpudl;
    BYTE         tpud[180];

    BYTE  length();
};

class TSMSPDUR  {
public:
    TGSMAddress  sca;
    TFOCTET      foctet;
    TGSMAddress  tpoa;
    TTPPID       tppid;
    TTPDCS       tpdcs;
    TTPSCTS      tpscts;
    BYTE         tpudl;
    BYTE         tpud[180];

    BYTE  length();
};


typedef TSMSPDUS * PTSMSPDUS;

class TGSMMessage {
public:
    TGSMMessageType msgtype;
    AnsiString   traceno;
    TGSMAddress  address;
    AnsiString   asMessage;

    TGSMMessage(){ msgtype =GSMMTMessage; }
};

typedef TGSMMessage * PTGSMMessage;


typedef struct {
    char    szPort[8];
    // buand speed etc

    // parameter
    HANDLE     hevStopGSMService;
    HANDLE     hevThreadStoped;
    AnsiString asSmscString;
    short      msWaitingTime;
    DWORD      msPollingTime;       
    TQueue  *  hQueueIn, *hQueueOut;
} TSMSConfig;

void   trimspace(char *string );
char * bcd2asc(char *hexstr, char *ascstr,short length );
char * bcd2ascb(char *hexstr, char *ascstr,short length );
char * asc2bcd(char *ascstr, char *bcdstr,short bcdlen);
char * asc2bcdInv(char *ascstr, char *bcdstr,short bcdlen);
short  ascii2AddressString(char *asc, char *);
BYTE   encode2UCS2(AnsiString astr, BYTE *);
BYTE   decodeUcs2(BYTE * pSrc, BYTE * pDst, BYTE nSrcLength);
BYTE   decode7bit(BYTE * pSrc, char* pDst, BYTE nSrcLength);
BYTE   decode8bit(BYTE * pSrc, char* pDst, BYTE nSrcLength);
#endif

⌨️ 快捷键说明

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