话说 你这个是需要硬件支持的吧 不然人家飞信库就不要做了....
当然如果你有硬件的话 看他的头文件 里面有函数注释
/////////////////////////////////////////////////////////////////////////
/*@
文件名称: DllFunctionDef.h
文件描述: 定义DLL导出函数及一些常量定义
*/
/////////////////////////////////////////////////////////////////////////
//接收事件窗口消息ID定义
#define SMSDLL_EVENTWND WM_USER + 777
/*@ 窗口消息参数定义
WPARAM 端口序号
LPARAM 事件通知类型:1为异步连接短信猫返回结果通知;2为新短信通知;3、有来电通知;4、发送结果通知;5、SIM卡已满通知;6、SIM卡余额不足
事件参数,从注册表固定位置(HKEY_CURRENT_USER\Software\JinDiSoft)读取字符串键值SmsEventPara。
参数格式,如果是多个参数以!#分割,下面是针对每个事件的参数定义
事件1:参数只有1个返回连接设备的状态,0表示连接失败,1表示连接成功,连接成功后才能进行发送短信等操作
事件2:参数只有1个,是新短信在SIM卡中保存的序号,得到此序号后可以调用读取短信获取来信其它信息
事件3:参数只有1个,是来电号码,可以不处理
事件5:没有参数,收到此事件时,需要尽快读取短信后删除,否则无法接收新的短信
事件6:没有参数,收到此事件时,需要尽快给SIM卡充值,否则无法再继续发送短信
事件4:一共6个参数,第一个参数是发送短信的ID编号,第二个参数是发送的目标号码,第三个参数是发送的内容;第四个参数是发送时内容拆分的序号;第五个参数时发送的状态(0表示成功,1表示超时,2表示发送失败)
*/
/// ERetCode,所有的API返回码定义
typedef enum
{
RETCODE_OK = 0, //没有错误
RETCODE_UNREG = 1, //未注册
RETCODE_PARAINVALID = 2, //输入参数无效
RETCODE_UNINIT = 3, //未初始化
RETCODE_INITREPEAT = 4, //重复初始化
RETCODE_WAITEVENT = 5, //由于使用的异步工作方式,需要等待事件通知才能确定是否成功
RETCODE_BUSY = 6, //状态忙,通常前面的工作正在处理中,未完成前又发了新的命令才返回这个值
RETCODE_ERROR = 7, //发生错误
RETCODE_TIMEOUT = 8 //超时
} ERetCode;
///////////////////////////////// API函数定义 /////////////////////////////////
/**
* @brief 获取当前系统COMM串口个数,未初始化模块也可以调用
*
*
* @param pVal 返回个数
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetCommCount)(OUT short *pVal);
/**
* @brief 获取指定编号的COMM串口序号,先调用SmsApi_GetCommCount获得个数
*
*
* @param sIndex 编号,从0开始
* @param pVal 返回COM串口序号
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetComm)(IN short sIndex,OUT short *pVal);
/**
* @brief 设置工作模式,在初始化模块前设置对初始化模块有效,在发送短信前设置对发送短信有效
*
*
* @param bSync true表示同步方式,否则异步方式
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetWorkMode)(bool bSync);
/**
* @brief 获取当前工作模式,未初始化模块也可以调用
*
*
* @param pSync true表示同步方式,否则异步方式
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetWorkMode)(OUT bool *pSync);
/**
* @brief 设置发送短信的起始序号,未初始化模块也可以调用,为保证短信序号唯一,最好不断增加此序号大小
*
*
* @param ulMsgID 短信序号
* @return
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetMsgID)(IN ULONG ulMsgID);
/**
* @brief 获得当前提交发送短信的序号,未初始化模块也可以调用
*
*
* @param pMsgID 短信序号,提交发送短信后调用此方法可获得提交生成的ID,这个ID会在发送结果通知中作为唯一此短信的标识
* @return
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMsgID)(OUT ULONG *pMsgID);
/**
* @brief 初始化打开模块,必须初始化才能收发短信
*
*
* @param sCommPort 指定端口(COM1就是1,COM2就是2,以此类推),最大不超过256
* @param lCommPara 指定通信波特率(0表示自动判断波特率,一般是9600或115200)
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_OpenCom)(IN short sCommPort,IN long lCommPara);
/**
* @brief 获取通讯波特率,未初始化模块也可以调用
*
*
* @param pCommPara 返回通讯波特率
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetCommPara)(OUT long *pCommPara);
/**
* @brief 设置通讯波特率,未初始化模块也可以调用
*
*
* @param lCommPara 通讯波特率,一般是9600或115200
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetCommPara)(IN long lCommPara);
/**
* @brief 获得设备名称,必须初始化成功后才能调用
*
*
* @param szMobileName 输入参数,预先至少分配16长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMobileName)(OUT char *szMobileName);
/**
* @brief 获得模块型号,必须初始化成功后才能调用
*
*
* @param szMobileModel 输入参数,预先至少分配32长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMobileModel)(OUT char *szMobileModel);
/**
* @brief 获得模块版本,必须初始化成功后才能调用
*
*
* @param szMobileVersion 输入参数,预先至少分配32长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMobileVersion)(OUT char *szMobileVersion);
/**
* @brief 获得模块IMEI,必须初始化成功后才能调用
*
*
* @param szMobileIMEI 输入参数,预先至少分配32长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMobileIMEI)(OUT char *szMobileIMEI);
/**
* @brief 获得短信中心号码,CDMA无效,必须初始化成功后才能调用
*
*
* @param szSMCA 返回短信中心号码,是否加国际代码如86与发送短信规则一致
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSmsc)(OUT char *szSMCA);
/**
* @brief 设置短信中心号码,CDMA无效,必须初始化成功后才能调用,一般只需要设置一次
*
*
* @param szSMCA 短信中心号码,是否加国际代码如86与发送短信规则一致
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetSmsc)(IN char *szSMCA);
/**
* @brief 获取AT指令执行超时时间,未初始化模块也可以调用
*
*
* @param pTimeout 返回超时时间,以秒为单位
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetTimeout)(OUT short *pTimeout);
/**
* @brief 设置AT指令执行超时时间,未初始化模块也可以调用
*
*
* @param sTimeout 超时时间,以秒为单位,缺省15秒
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetTimeout)(IN short sTimeout);
/**
* @brief 设置接收事件通知消息的窗口句柄,未初始化模块也可以调用
*
*
* @param hWnd 窗口句柄,如果不设置,无法接收相应的事件通知
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetEventWnd)(IN HWND hWnd);
/**
* @brief 发送文字短信,必须初始化成功后才能调用
*
*
* @param szMobileNumber 目标号码,如果启用了国际代码标志,就不用加国籍代码如86,支持群发,以分号;间隔即可
* @param szMsgContent 发送内容,可超过70个汉字
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SendMsg)(IN char *szMobileNumber,\
IN char *szMsgContent);
/**
* @brief 发送WAP PUSH短信,必须初始化成功后才能调用
*
*
* @param szMobileNumber 目标号码,如果启用了国际代码标志,就不用加国籍代码如86,支持群发,以分号;间隔即可
* @param szMsgSubject 发送主题,尽量简短
* @param szMsgUrl 发送URL
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SendPushMsg)(IN char *szMobileNumber,\
IN char *szMsgSubject,IN char *szMsgUrl);
/**
* @brief 读取指定位置短信,必须初始化成功后才能调用
*
*
* @param sPosition 短信在SIM卡上的位置
* @param szMobileNumber 返回来信号码,最少分配32长度缓存
* @param szTime 返回对方发送时间,最少分配32长度缓存
* @param szMsgContent 返回发送内容,最少分配140长度缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_ReadMsg)(IN short sPosition,OUT char *szMobileNumber,\
OUT char *szTime,OUT char *szMsgContent);
/**
* @brief 删除指定范围位置短信,必须初始化成功后才能调用
*
*
* @param sStartPosition 短信在SIM卡上的开始位置
* @param sEndPosition 短信在SIM卡上的结束位置,如果开始位置和结束位置一样,表示只删除开始位置短信
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_DeleteMsg)(IN short sStartPosition,IN short sEndPosition);
/**
* @brief 获取读取短信后是否自动删除短信标志,未初始化模块也可以调用
*
*
* @param pAutoDelete 返回是否自动删除
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetAutoDelete)(OUT bool *pAutoDelete);
/**
* @brief 设置读取短信后是否自动删除短信,未初始化模块也可以调用
*
*
* @param bAutoDeleteFlag 是否自动删除
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetAutoDelete)(IN bool bAutoDeleteFlag);
/**
* @brief 清理SIM卡上所有短信,必须初始化成功后才能调用
*
*
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_ClearSim)();
/**
* @brief 获得SIM卡上短信数量,必须初始化成功后才能调用
*
*
* @param pUsed 返回已经有的短信数量
* @param pTotal 返回总计存储空间
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSimNum)(OUT short *pUsed,OUT short *pTotal);
/**
* @brief 执行AT命令,必须初始化成功后才能调用
*
*
* @param ATCmd AT命令
* @param pBuffLength 返回命令返回内容的长度,应用根据此长度分配对应的缓存再调用SmsApi_GetATCommandReturn获得返回字符串
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_ATCommand)(IN char *ATCmd,OUT short *pBuffLength);
/**
* @brief 获得AT命令执行结果,必须初始化成功后才能调用
*
*
* @param pRetBuff 返回预先根据执行结果返回的长度分配缓存内容
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetATCommandReturn)(OUT char *pRetBuff);
/**
* @brief 获取发送短信状态报告标记,未初始化模块也可以调用
*
*
* @param pStatusReport 返回是否请求状态报告
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetStatusReport)(OUT bool *pStatusReport);
/**
* @brief 设置读取短信后是否自动删除短信,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param bStatusReport 是否请求状态报告,缺省否
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetStatusReport)(IN bool bStatusReport);
/**
* @brief 获取是否发送闪烁文字短信,未初始化模块也可以调用
*
*
* @param pFlashSms 返回是否请求状态报告
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetFlashSms)(OUT bool *pFlashSms);
/**
* @brief 设置是否发送闪烁文字短信,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param bFlashSms 是否请求状态报告,缺省否
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetFlashSms)(IN bool bFlashSms);
/**
* @brief 获得发送短信时的签名,未初始化模块也可以调用
*
*
* @param szSignName 返回自动在发送内容前添加的签名,预先至少分配32长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSignName)(OUT char *szSignName);
/**
* @brief 设置发送短信时的签名,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param szSignName 自动在发送内容前添加签名
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetSignName)(IN char *szSignName);
/**
* @brief 获取发送短信的有效期,未初始化模块也可以调用
*
*
* @param pValidMinute 返回发送短信的有效期
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetMsgValidMinute)(OUT long *pValidMinute);
/**
* @brief 设置发送短信的有效期,未初始化模块也可以调用
*
*
* @param lValidMinute 发送短信的有效期
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetMsgValidMinute)(IN long lValidMinute);
/**
* @brief 获取发送开始的时间,未初始化模块也可以调用
*
*
* @param pSendStartTime 返回发送开始的时间
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSendStartTime)(OUT DATE *pSendStartTime);
/**
* @brief 设置发送开始的时间,未初始化模块也可以调用
*
*
* @param sSendStartTime 发送开始的时间,缺省是0.0或与发送结束时间相同表示不限时间发送
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetSendStartTime)(IN DATE sSendStartTime);
/**
* @brief 获取发送结束的时间,未初始化模块也可以调用
*
*
* @param pSendEndTime 返回发送结束的时间
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSendEndTime)(OUT DATE *pSendEndTime);
/**
* @brief 设置发送结束的时间,未初始化模块也可以调用
*
*
* @param sSendEndTime 发送结束的时间,缺省是0.0或与发送开始时间相同表示不限时间发送
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetSendEndTime)(IN DATE sSendEndTime);
/**
* @brief 获得SIM卡序号,未初始化模块也可以调用
*
*
* @param szSimCardID 返回SIM卡序号,不是手机号码,预先至少分配32长度的缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSimCardID)(OUT char *szSimCardID);
/**
* @brief 获取发送的短信是否自动拆分发送,未初始化模块也可以调用
*
*
* @param pAutoSplite 返回是否自动拆分发送
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetAutoSplite)(OUT bool *pAutoSplite);
/**
* @brief 设置发送的短信是否自动拆分发送,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param bAutoSplite 是否自动拆分发送
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetAutoSplite)(IN bool bAutoSplite);
/**
* @brief 获得国别代码,未初始化模块也可以调用
*
*
* @param szCountryCode 返回国别代码,是否加国际代码如86与发送短信规则一致
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetCountryCode)(OUT char *szCountryCode);
/**
* @brief 设置国别代码,未初始化模块也可以调用,一般只需要设置一次,此状态对后续短信都起作用
*
*
* @param szCountryCode 国别代码,缺省86代表中国
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetCountryCode)(IN char *szCountryCode);
/**
* @brief 获取当前将要提交发送短信的优先级,未初始化模块也可以调用
*
*
* @param pSendPriority 返回当前将要提交发送短信的优先级
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSendPriority)(OUT short *pSendPriority);
/**
* @brief 设置当前将要提交发送短信的优先级,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param sSendPriority 当前将要提交发送短信的优先级,1-32,数值越大,优先发送
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetSendPriority)(IN short sSendPriority);
/**
* @brief 获取将要发送英文短信,未初始化模块也可以调用
*
*
* @param pEnglishMsg 返回将要发送英文短信
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetEnglishMsg)(OUT bool *pEnglishMsg);
/**
* @brief 设置将要发送英文短信,未初始化模块也可以调用,此状态对后续短信都起作用
*
*
* @param bEnglishMsg 是否将要发送英文短信
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetEnglishMsg)(IN bool bEnglishMsg);
/**
* @brief 获取设备当前信号强度,必须初始化成功后才能调用
*
*
* @param pSignal 返回设备当前信号强度,小于15可能导致发送短信失败
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetSignal)(OUT short *pSignal);
/**
* @brief 获得呼叫转移号码,必须初始化成功后才能调用
*
*
* @param szCallTransfer 返回国别代码,是否加国际代码如86与发送短信规则一致
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetCallTransfer)(OUT char *szCallTransfer);
/**
* @brief 设置呼叫转移号码,必须初始化成功后才能调用,一般只需要设置一次,如果号码为空,表示取消当前所有转移号码
*
*
* @param szCallTransfer 呼叫转移号码,必须SIM卡支持才能设置
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_SetCallTransfer)(IN char *szCallTransfer);
/**
* @brief 获得Fireware版本,必须初始化成功后才能调用
*
*
* @param szFirewareVerion 返回Fireware版本,最少分配64长度缓存
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetFirewareVerion)(OUT char *szFirewareVerion);
/**
* @brief 获取当前排队等候发送的任务数量,必须初始化成功后才能调用
*
*
* @param pWaitSend 返回当前排队等候发送的任务数量
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetWaitSend)(OUT ULONG *pWaitSend);
/**
* @brief 退出模块,当程序退出或不再需要短信服务时调用以便及时释放资源
*
*
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_CloseCom)();
/**
* @brief 获得出错信息,当调用某个API出错时调用此方法获取出错信息
*
*
* @param pErrInfo 返回内部缓冲的最近一次操作出错信息
* @return 参照ERetCode定义
*/
typedef ERetCode ( WINAPIV lpSmsApi_GetErrInfo)(OUT char *pErrInfo); |