|
通过支持AT指令集的手机发送短消息(源代码)(1)
本文章的版权声明: 1)任何的编程爱好者、网友可以以非商业目的下载并使用下面的源代码。 2)使用了下面全部或部分代码的朋友请注明出处:CSdn.net/dfman">http://blog.csdn.net/dfman 3)保留对商业用途的版权
具体做法是这样的:1)买一款支持AT指令集的手机,我买的是西门子;2)买与手机配套的数据线,使手机可以与计算机串口相链接;3)当然你要有SIM/UIM卡;4)按下面的算法编写程序;5)剩下的就是收发短信了。
这个class是整个工程的一部分,不敢保证代码完整,但是可以保证算法和思路完整。整个工程可能还包括SMPP/SGIP/CMPP的源代码,如有需要,请来信相我索要:t1p2@sina.com。我没有其他的邮箱。
typedef strUCt _SMS_Recv //收到信息的通知结构 { long lMsgType; //短信类型:MSGTYPE_SMS 或 MSGTYPE_REPORT char szSmsc[32]; //短信中心 char szSender[32]; //发送者号码,如果lMsgType==MSGTYPE_REPORT,则是状态报告的目标手机号码 char szTime[32]; //发送时间 char szMsg[512]; //信息内容 }SMS_Recv; // 短消息队列缓冲池 struct ShortMsgPool { HANDLE hSMPHaveData; HANDLE hSMPIDLE; DWord dwSize; char *pData; }; // 发送短消息缓冲池 struct SubmitPool { HANDLE hSPDeliver; HANDLE hSPIDLE; DWORD dwSize; char *pData; }; // 接收短消息缓冲池 struct DeliverPool { HANDLE hDPDeliver; // 投递请求的事件句柄 HANDLE hDPIDLE; // 表示缓冲池空的事件句柄 DWORD dwSize; // 请求数据的大小,以字节为单位 char *pData; // 请求数据存放的缓冲区 };
class CGSMPhone { public: long GetRecvNum(){ return( m_dwSMNumberInPool ); } long GetMobileName( char* pName ); long GetSMContent( void ){ return( m_dwSMContent == 0 ? -1 : m_dwSMContent ); } long GetShortMsg( SMS_Recv * pSms ); long GetShortMsg2( char *pNo, char *pMsg, char *pTime ); long Send( char *pNo, char *pMsg, BOOL bReport, BOOL bHandFree, BOOL bAsyn );
|