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

📄 smsrv.bss

📁 短信sms收发应用脚本短信网关动态库(支持各种红外手机、数据线连接的手机或无线猫
💻 BSS
字号:
// SmSrv.bss
// 短信收发服务模块
// 使用蓝星际短信外部动态模块 GsmModem.dll
// 硬件支持红外手机、数据线连接的手机或无线Modem
// bluesen@sina.com.cn
// 2003.10, 2005.3
// 数据结构:
// 1. 表TSys_SmsSendTB 发送队列
// 2. 表TSys_SmsReciTB 接收队列
// 基本功能: 循环处理下面两步:
// 1. 扫描发送队列, 取出未发送的记录, 逐条发送;
// 2. 询问设备, 取出已经到达的短信, 写入接收队列


// 在测试开发平台多次测试时要使用这条语句
DbCloseAll();
DllFreeAll();

#include "GsmModem.h"
#include "DataBase.cfg" // DataBase.cfg里面包含数据库连接的参数项

// 全局变量定义
smsCom = "";  // 连接设备的COM口, 如为""表示自动检测
smsBaund = "19200";  // 连接设备的波特率

// 函数定义
// 显示信号强度
function DispSq()
{
 iSq = 0;
 GsmSq(iSq);
 sSq = "信号: " + iSq + "%";
 DispInfo(1, sSq);
}


smsHd = -1;  // 初始化短信句柄
GsmOpen(smsCom, smsBaund, "", smsHd); // 打开
if( smsHd<0 )
{
   DispInfo(0, "打不开Sms短信设备");

   DllFreeAll();
   DbCloseAll();
   return(-2);
}


// 打开数据库
dbHd = -1;
InitDb(dbHd);
if(dbHd<0)
{
   DispInfo(0, "打开数据库不成功");

   GsmClose();
   DllFreeAll();
   return(-1);
}

while(true) // 主循环
{
  isBusy = false;

  sCmd = "select FSmsID, FReciPhone, FSmsContent from TSys_SmsSendTB where FSendStatus=0";
  DbExec(dbHd,sCmd);

  num = 0;
  DbRows(dbHd, num);
  if(num>0)
  {
     isBusy = true;

     cmdList = 0;   // 数组,用来存放更新标志的SQL
     for(i=1; i<=num; i++)
     {
        code = "";
        phone = "";
        info = ""

        DbGetField(dbHd, "FSmsID", i, code);
        Trim(code);
        DbGetField(dbHd, "FReciPhone", i, phone);
        Trim(phone);
        DbGetField(dbHd, "FSmsContent", i, info);
        Trim(info);

        DispInfo(0, "");
        DispInfo(1, phone);
        DispInfo(2, "发送...");

        ret = -1;
        SMSSend(phone, info, ret); // 发送
        if( ret>=0 )
        {
           flag = "1";  // OK
        }
        else
        {
           flag = "2";  // 不成功
        }
        sCmd = "update TSys_SmsSendTB set FSendTime=" + NowFun \
           + ", FSendStatus=" + flag + " where FSmsID=" + code;
        cmdList[i] = sCmd;
     }

     // 更新发送标志
     for(i=1; i<=num; i++)
     {
        sCmd = cmdList[i];
        DbExec(dbHd, sCmd);
     }
     cmdList = 0;

     Sleep(1.00);
  }

   n = 0;
   SMSTest(n);   // SMS测试, 1个参数
   for(i=0; i<n; i++)
   {
      isBusy = true;

      addr = "";
      info = "";
      time = "";
      ret = -1;

      // 注意: 接收信息缓冲区必须要有足够的空间!
      Repeatstr(addr, " ", 20);
      Repeatstr(info, " ", 200);
      Repeatstr(time, " ", 30);

      SMSRecv(addr, info, time, ret); // 接收
      if( ret>0 )
      {
         DispInfo(0, "");
         DispInfo(1, addr);
         DispInfo(2, "接收...");

         // pTime = "";
         // GetFmtTime(pTime);

         sCmd = "insert into TSys_SmsReciTB (FSendPhone, FSmsContent, FFlag, FReciTime) values ('" \
                + addr + "', '" + info + "', 0, " + NowFun + ")";
         DbExec(dbHd, sCmd);
      }
   }

   if( !isBusy )
   {
      DispSq();
   }
   Sleep(1.75);
}



// 系统退出
OnSysQuit();

GsmClose();
DllFreeAll();

DbCloseAll();
return(0);

⌨️ 快捷键说明

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