短信猫信息记录读取程序

  有二年多时间没有写程序了写起程序太陌生了要求写一个短信猫信息记录的读取程序买了个短信猫下载了一个动态链接库sms.dll依据所给案例写了一个运行比较稳定。

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;
using System.Data.SqlClient;
using System.Text;

namespace WinTQY
{
    public partial class MainForm : Form
    {
        public struct StructTQY {
            public string C01;
            public DateTime C02;
            public string C03;
            public decimal C04;
            public decimal C05;
            public decimal C06;
            public decimal C07;
            public decimal C08;
            public decimal C09;
            public decimal C10;
            public decimal C11;
            public decimal C12;
            public decimal C13;
            public string C14;
            public string C15;
            public string C16;
            public string C17;
            public string C18;
        }

public MainForm()
        {
            InitializeComponent();
        }

/// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        ///
        [STAThread]

[DllImport("sms.dll", EntryPoint = "Sms_Connection")]
        public static extern uint Sms_Connection(string CopyRight, uint Com_Port, uint Com_BaudRate, out string Mobile_Type, out string CopyRightToCOM);

[DllImport("sms.dll", EntryPoint = "Sms_Disconnection")]
        public static extern uint Sms_Disconnection();

[DllImport("sms.dll", EntryPoint = "Sms_Send")]
        public static extern uint Sms_Send(string Sms_TelNum, string Sms_Text);

[DllImport("sms.dll", EntryPoint = "Sms_Receive")]
        public static extern uint Sms_Receive(string Sms_Type, out string Sms_Text);

[DllImport("sms.dll", EntryPoint = "Sms_Delete")]
        public static extern uint Sms_Delete(string Sms_Index);

[DllImport("sms.dll", EntryPoint = "Sms_AutoFlag")]
        public static extern uint Sms_AutoFlag();

[DllImport("sms.dll", EntryPoint = "Sms_NewFlag")]
        public static extern uint Sms_NewFlag();

private void button_DisConnect_DXM_Click(object sender, EventArgs e)
        {
            Sms_Disconnection();
            toolStripStatusLabel2.Text = "已经断开与短信猫的连接";

label2.Text = " ";
            label2.ForeColor = System.Drawing.Color.FromArgb(0, 0, 0);

button_AUTOReceive.Enabled = false;
            button_Exit.Enabled = true;
            textBox_Port.Enabled = true;
            button_Connect_DXM.Enabled = true;

}

private void button_Connect_DXM_Click(object sender, EventArgs e)
        {
            button_Connect_DXM.Enabled = false;
            //this.Enabled = false;
            button_DisConnect_DXM.Enabled = false;
            button_AUTOReceive.Enabled = false;
            button_Exit.Enabled = false;
            textBox_Port.Enabled = false;
            //连接短信猫
            String TypeStr = "";
            String CopyRightToCOM = "";
            String CopyRightStr = "//上海迅赛信息技术有限公司,网址www.xunsai.com//";
            //连接短信猫串口号0为红外接口1,2,3,...为串口
            if (Sms_Connection(CopyRightStr, uint.Parse(textBox_Port.Text), 9600, out TypeStr, out CopyRightToCOM) == 1) {
                //连接成功后开始处理短信             
                DealWithDX();
                toolStripStatusLabel2.Text = "完成短信的处理";
                button_DisConnect_DXM.Enabled = true;
                button_AUTOReceive.Enabled = true;
                button_Exit.Enabled = true;
                label2.Text = "●";
                label2.ForeColor = System.Drawing.Color.FromArgb(0, 255, 0);
            }
            else
            {
                toolStripStatusLabel2.Text = "连接失败";
            }
        }

private void button_Exit_Click(object sender, EventArgs e)
        {
            //Sms_Disconnection();
            Application.Exit();
        }

private void timer1_Tick(object sender, EventArgs e)
        {
            if (Sms_NewFlag() == 1)
            {
                toolStripStatusLabel2.Text = "收到新短信,请查收!";
                //读取新短信,0未读短信1已读短信2待发短信3已发短信4全部短信
                DealWithDX();
            }
        }

private void button_AUTOReceive_Click(object sender, EventArgs e)
        {
            if (Sms_AutoFlag() == 1)
            {
                toolStripStatusLabel2.Text = "未收到新短信";
                timer1.Enabled = true;
                button_AUTOReceive.Enabled = false;

}
            else
            {
                toolStripStatusLabel2.Text = "该短信猫不支持自动接收短信功能";
            }
        }

//处理短信的函数
        public void DealWithDX()
        {
            textBox1.Text = "";
            //得到计算机的名称
            string JSJName = System.Net.Dns.GetHostName();
            //得到计算机的IP地址
            string JSJIP = "";
            System.Net.IPAddress[] JSJIPaddr = System.Net.Dns.GetHostByName(JSJName).AddressList;
            for (int i = 0; i < JSJIPaddr.Length; i++) { JSJIP += JSJIPaddr[i].ToString() + "\n"; }
            //定义接收的字符串
            string ReceiveSmsStr = "";
            //初始化读取全部短信记录并与数据库中的记录进行对比没有则添加到数据库中完成后清空短信猫中的全部短信记录
            if (Sms_Receive("4", out ReceiveSmsStr) == 1 )
            {
                //解析每条短信
                if (ReceiveSmsStr != null)
                {
                    string[] SMSDatas = ReceiveSmsStr.Split(new char[1] { ‘|‘ });
                    //如果记录数大于1则进行比对操作
                    if (SMSDatas.Length >= 1)
                    {
                        foreach (var SMSData in SMSDatas)
                        {
                            //解析每一条短信
                            if (string.IsNullOrEmpty(SMSData) == false)
                            {
                                string[] SMSRecs = SMSData.Split(new char[1] { ‘#‘ });
                                string DX_XH = SMSRecs[0].ToString();//短信序号
                                string DX_SJH = SMSRecs[2].ToString();//手机号码
                                string DX_NR = SMSRecs[3].ToString();//短信内容
                                string DX_SJ = SMSRecs[4].ToString();//记录时间
                                textBox1.Text = textBox1.Text + "\r\n短信序号" + DX_XH + "\r\n手机号码" + DX_SJH + "\r\n短信内容" + DX_NR + "\r\n接收时间" + DX_SJ + "\n\r";
                                //通过数据库比对查看是否已经存储不存在则需要写入数据库
                                using (SqlConnection Conn = new SqlConnection(SLinkToDB))
                                {
                                    Conn.Open();
                                    SqlCommand SqlCMD = new SqlCommand();
                                    SqlCMD.Connection = Conn;
                                    SqlCMD.CommandText = "select count(*) from YQCYTQY where c01=CONVERT(varchar(100),‘" + DX_SJ + "‘,13)";
                                    int Rows = (int)SqlCMD.ExecuteScalar();
                                    if (Rows != 1)
                                    {
                                        //需要将该记录插入到数据库的YQCYTQY表中
                                        string SInsert = "insert into YQCYTQY values(@c01,@c02,@c03,@c04,@c05,@c06,getdate())";
                                        SqlCommand SQLInsert = new SqlCommand(SInsert, Conn);
                                        SqlParameter C01 = new SqlParameter("@c01", SqlDbType.DateTime);
                                        C01.Value = DateTime.Parse(DX_SJ);
                                        SQLInsert.Parameters.Add(C01);
                                        SqlParameter C02 = new SqlParameter("@c02", SqlDbType.VarChar);
                                        C02.Value = DX_SJH;
                                        SQLInsert.Parameters.Add(C02);
                                        SqlParameter C03 = new SqlParameter("@c03", SqlDbType.VarChar);
                                        C03.Value = DX_NR;
                                        SQLInsert.Parameters.Add(C03);
                                        SqlParameter C04 = new SqlParameter("@c04", SqlDbType.VarChar);
                                        C04.Value = JSJIP;
                                        SQLInsert.Parameters.Add(C04);
                                        SqlParameter C05 = new SqlParameter("@c05", SqlDbType.VarChar);
                                        C05.Value = JSJName;
                                        SQLInsert.Parameters.Add(C05);
                                        SqlParameter C06 = new SqlParameter("@c06", SqlDbType.VarChar);
                                        C06.Value = "";
                                        SQLInsert.Parameters.Add(C06);
                                        SQLInsert.ExecuteNonQuery();

if (DX_NR.IndexOf("BOOM") >= 1 || DX_NR.IndexOf("OK") >= 1)
                                        {
                                            //将短信内容分解后插入到数据库的TQYINFO表中
                                            textBox1.Text = textBox1.Text + "\r\n准备存入数据库......";

StructTQY SaveTQY = new StructTQY();
                                            SaveTQY.C03 = "";
                                            SaveTQY.C04 = 0.0m;
                                            SaveTQY.C05 = 0.0m;
                                            SaveTQY.C06 = 0.0m;
                                            SaveTQY.C07 = 0.0m;
                                            SaveTQY.C08 = 0.0m;
                                            SaveTQY.C09 = 0.0m;
                                            SaveTQY.C10 = 0.0m;
                                            SaveTQY.C11 = 0.0m;
                                            SaveTQY.C12 = 0.0m;
                                            SaveTQY.C13 = 0.0m;
                                            SaveTQY = GetTQTInfo(DX_NR);
                                            SaveTQY.C01 = DX_SJH;
                                            SaveTQY.C02 = Convert.ToDateTime(DX_SJ);

textBox1.Text = textBox1.Text + "\r\n分解字符串......" ;
                                            string STQYINFO = "insert into TQYINFO values(@C01,@C02,@C03,@C04,@C05,@C06,@C07,@C08,@C09,@C10,@C11,@C12,@C13,@C14,@C15,@C16,@C17,@C18)";
                                            SqlCommand SQLTQYINFO = new SqlCommand(STQYINFO, Conn);

SqlParameter TQYINFO_C01 = new SqlParameter("@C01", SqlDbType.VarChar);
                                            TQYINFO_C01.Value = SaveTQY.C01;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C01);

SqlParameter TQYINFO_C02 = new SqlParameter("@C02", SqlDbType.DateTime);
                                            TQYINFO_C02.Value = SaveTQY.C02;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C02);

SqlParameter TQYINFO_C03 = new SqlParameter("@C03", SqlDbType.VarChar);
                                            TQYINFO_C03.Value = SaveTQY.C03;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C03);

SqlParameter TQYINFO_C04 = new SqlParameter("@C04", SqlDbType.Decimal);
                                            TQYINFO_C04.Value = SaveTQY.C04;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C04);

SqlParameter TQYINFO_C05 = new SqlParameter("@C05", SqlDbType.Decimal);
                                            TQYINFO_C05.Value = SaveTQY.C05;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C05);

SqlParameter TQYINFO_C06 = new SqlParameter("@C06", SqlDbType.Decimal);
                                            TQYINFO_C06.Value = SaveTQY.C06;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C06);

SqlParameter TQYINFO_C07 = new SqlParameter("@C07", SqlDbType.Decimal);
                                            TQYINFO_C07.Value = SaveTQY.C07;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C07);

SqlParameter TQYINFO_C08 = new SqlParameter("@C08", SqlDbType.Decimal);
                                            TQYINFO_C08.Value = SaveTQY.C08;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C08);

SqlParameter TQYINFO_C09 = new SqlParameter("@C09", SqlDbType.Decimal);
                                            TQYINFO_C09.Value = SaveTQY.C09;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C09);

SqlParameter TQYINFO_C10 = new SqlParameter("@C10", SqlDbType.Decimal);
                                            TQYINFO_C10.Value = SaveTQY.C10;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C10);

SqlParameter TQYINFO_C11 = new SqlParameter("@C11", SqlDbType.Decimal);
                                            TQYINFO_C11.Value = SaveTQY.C11;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C11);

SqlParameter TQYINFO_C12 = new SqlParameter("@C12", SqlDbType.Decimal);
                                            TQYINFO_C12.Value = SaveTQY.C12;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C12);

SqlParameter TQYINFO_C13 = new SqlParameter("@C13", SqlDbType.Decimal);
                                            TQYINFO_C13.Value = SaveTQY.C13;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C13);

SqlParameter TQYINFO_C14 = new SqlParameter("@C14", SqlDbType.VarChar);
                                            TQYINFO_C14.Value = SaveTQY.C14;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C14);

SqlParameter TQYINFO_C15 = new SqlParameter("@C15", SqlDbType.VarChar);
                                            TQYINFO_C15.Value = SaveTQY.C15;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C15);

SqlParameter TQYINFO_C16 = new SqlParameter("@C16", SqlDbType.VarChar);
                                            TQYINFO_C16.Value = SaveTQY.C16;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C16);

SqlParameter TQYINFO_C17 = new SqlParameter("@C17", SqlDbType.VarChar);
                                            TQYINFO_C17.Value = SaveTQY.C17;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C17);

SqlParameter TQYINFO_C18 = new SqlParameter("@C18", SqlDbType.VarChar);
                                            TQYINFO_C18.Value = SaveTQY.C18;
                                            SQLTQYINFO.Parameters.Add(TQYINFO_C18);

SQLTQYINFO.ExecuteNonQuery();
                                            textBox1.Text = textBox1.Text + "\r\n完成!";

}

}
                                    //删除短信
                                    Sms_Delete(DX_XH);
                                }
                            }
                        }
                    }
                }
            }
        }

public string GetMidString(String SSrc, string S1, string S2) {
            string SReturn;
            int I1, I2;

I1 = SSrc.IndexOf(S1);
            I2 = SSrc.IndexOf(S2);

if (S2 == "")
            {
                SReturn = SSrc.Substring(I1 + S1.Length, SSrc.Length - (I1 + S1.Length)).Trim();
            }
            else {
                SReturn = SSrc.Substring(I1 + S1.Length, Math.Abs(I2 - (I1 + S1.Length))).Trim();
            }

return SReturn;
       
        }

public StructTQY GetTQTInfo(string SInfo) {
            StructTQY MineTQY=new StructTQY();
            MineTQY.C03 = "";
            MineTQY.C04 = 0.0m;
            MineTQY.C05 = 0.0m;
            MineTQY.C06 = 0.0m;
            MineTQY.C07 = 0.0m;
            MineTQY.C08 = 0.0m;
            MineTQY.C09 = 0.0m;
            MineTQY.C10 = 0.0m;
            MineTQY.C11 = 0.0m;
            MineTQY.C12 = 0.0m;
            MineTQY.C13 = 0.0m;

if (SInfo.IndexOf("(!BOOM!)")>=1) {
                //通球信息
                MineTQY.C03 =GetMidString(SInfo, "(!BOOM!)", "KM"); //通球距离

//MessageBox.Show("距离" + MineTQY.C03.ToString());
                MineTQY.C04=0;//蓄电池电压
                MineTQY.C05=0;//A通道磁场强度
                MineTQY.C06=0;//B通道磁场强度
                MineTQY.C07 = Convert.ToDecimal(GetMidString(SInfo, "AN-VPP:", "AS-VPP:"));//A通道N极磁场强度

MineTQY.C08 = Convert.ToDecimal(GetMidString(SInfo, "AS-VPP:", "BN-VPP:"));//A通道S极磁场强度

MineTQY.C09 = Convert.ToDecimal(GetMidString(SInfo, "BN-VPP:", "BS-VPP:"));//B通道N极磁场强度

MineTQY.C10 = Convert.ToDecimal(GetMidString(SInfo, "BS-VPP:", "TQ-SD:"));//B通道S极磁场强度

MineTQY.C11 = Convert.ToDecimal(GetMidString(SInfo, "TQ-SD:", "AB-F:"));//通球速度

MineTQY.C12 = Convert.ToDecimal(GetMidString(SInfo, "AB-F:", "AB-M:"));//通球相位

MineTQY.C13 = Convert.ToDecimal(GetMidString(SInfo, "AB-M:", ""));//磁场幅差
                MineTQY.C13 = Convert.ToDecimal(MineTQY.C13 /10000);
                MineTQY.C13 = Math.Round(MineTQY.C13, 2);

MineTQY.C07 = Convert.ToDecimal((MineTQY.C07 - 2000)/20);
                MineTQY.C08 = Convert.ToDecimal((MineTQY.C08 - 2000)/20);
                MineTQY.C09 = Convert.ToDecimal((MineTQY.C09 - 2000)/20);
                MineTQY.C10 = Convert.ToDecimal((MineTQY.C10 - 2000)/20);
                MineTQY.C11 =Convert.ToDecimal( 82609/(MineTQY.C11*1000));
                MineTQY.C12 = Convert.ToDecimal(MineTQY.C11 * 46 / 10000);

MineTQY.C07 = Math.Round(MineTQY.C07,2);
                MineTQY.C08 = Math.Round(MineTQY.C08, 2);
                MineTQY.C09 = Math.Round(MineTQY.C09, 2);
                MineTQY.C10 = Math.Round(MineTQY.C10, 2);
                MineTQY.C11 = Math.Round(MineTQY.C11, 2);
                MineTQY.C12 = Math.Round(MineTQY.C12, 2);

MineTQY.C14 = "通球";
                MineTQY.C15 = "管线标记"; 
            }

if (SInfo.IndexOf("OK")>=1) {
                //报平安信息
                MineTQY.C03 = GetMidString(SInfo, "OK!)", "KM"); //通球距离
                MineTQY.C04 = Convert.ToDecimal(GetMidString(SInfo, "BATT-V:", "(GS-A):"));//蓄电池电压
                MineTQY.C05 = Convert.ToDecimal(GetMidString(SInfo, "(GS-A):", "(GS-B):"));//A通道磁场强度
                MineTQY.C06 = Convert.ToDecimal(GetMidString(SInfo, "(GS-B):", ""));//B通道磁场强度
                //MineTQY.C05 = Convert.ToDecimal((MineTQY.C05 - 2000) / 20);
                //MineTQY.C06 = Convert.ToDecimal((MineTQY.C06 - 2000) / 20);

MineTQY.C04 = Math.Round(MineTQY.C04, 2);
                MineTQY.C05 = Math.Round(MineTQY.C05, 2);
                MineTQY.C06 = Math.Round(MineTQY.C06, 2);

MineTQY.C14 = "报平安";
                MineTQY.C15 = "管线标记"; 
            }

MineTQY.C16 = "DESTDot";
            MineTQY.C17 = "";
            MineTQY.C18 = ""; 
       
            return MineTQY;
        }

}
}

时间: 2024-11-16 12:02:45

短信猫信息记录读取程序的相关文章

CDMA短信猫厂家提供最全短信猫开发包满足多种开发方式

CDMA短信猫厂家提供最全短信猫开发包满足多种开发方式 CDMA短信猫是采用中国电信制式的通讯模块,具备短信收发功能,可与中国移动.联通2G.3G等不同网络间实现互动收发,要求采用中国电信手机卡.短信猫在工业领域应用普遍,而支持CDMA短信猫开发的短信猫厂家少之又之,其中短信猫开发包是关键.深圳亿纬CDMA短信猫开发包可满足多种复杂环境.不同应用平台间的短信功能开发,性能稳定.应用简单方便. CDMA短信猫厂家有生产以下两种接口的短信猫设备:  单口CDMA短信猫-USB口 单口CDMA短信猫-

多口短信猫设备及相应二次开发接口程序

多口短信猫是指具备同时插入多张SIM卡使用的短信猫设备,具备单口短信猫8-16倍的短信收发效率,可满足对短信发送.接收量大的客户的应用需求.同样,借助相应的短信猫开发接口程序可以将多口短信猫应用于其他系统.软件当中. 多口短信猫设备有: 8口多口短信猫池,支持同时插入8张SIM卡使用 16口多口短信猫池设备,采用独立电源,一根USB数据线连接 多口短信猫开发接口程序与单口短信猫开发有所不同,大多购买短信猫设备提供的DLL免费短信猫开发包仅支持单口短信猫设备,不支持多口短信猫,所以多口短信猫二次开

多个USB短信猫,启动短信猫后台程序总是有几个不能连接

主要原因:主板供电不足.其他原因:使用延长线等,造成电压不够,启动后台连接短信猫时有时成功有时失败.查看方法: 注解:从上图中可以查看到所有短信猫的供电情况,如果在第五步查看到需要电源这一列有未知的说明该短信猫供电不足.下图是其他查看方式:由于名称都一样,一眼看上去分不清各个集线器的上下级关系,所有只有自己挨个查看 原文地址:http://bbs.delit.cn/thread-768-1-1.html 转载请注明出处: 撰写人:度量科技www.delit.cn

短信猫实现过程记录

短信猫实现过程 短信猫支持模块类型 短信猫M35模块类型//移动卡 短信猫MC37i模块类型//移动卡 短信猫GL868模块类型//移动卡 短信猫GL865模块类型//移动卡 短信猫MC8332模块类型//电信卡 短信猫MU509模块类型//联通卡 短信猫MU709模块类型//联通卡 短信猫U7500模块类型//联通卡 短信猫MU609模块类型//联通卡 短信猫SIM7600CE模块类型//移动卡 短信猫N720模块类型//移动卡 短信猫EC20F模块类型//移动卡 短信猫SIM800C模块类型

使用 AT 命令实现西门子短信猫收发短信实例

通过AT指令对西门子短信猫收发短信的控制共有三种实现途径: (1) 最初的 Block 模式(2) 基于 AT 命令的 Text 模式 (3) 基于 AT 命令的 PDU 模式 本文记录的大量的TC35/TC35T 实验数据,总结了使用TC35/TC35T 短信猫收发短信的方法. 准备工作: 使用 TC35 收发短信息,用户必须准备一张已开通短信息服务 SIM 卡,并将其插入 MC2002 之 TC35 扩展模块 SIM 卡座中或 TC35T 的 SIM 卡座中. 使用 PC 配合 TC35T

gnokii 短信猫 中文安装使用文档

8月份做的一个东东,重新整理了一下发上来.当日后使用文档! 环境: centos 5.2,短信猫设备: wave 安装软件地址: http://opensource.hqcodeshop.com/gnokii/RHEL5/ gnokii-0.6.28cvs-20100613.i386.rpm gnokii-smsd-0.6.28cvs-20100613.i386.rpm gnokii-smsd-mysql-0.6.28cvs-20100613.i386.rpm #### 下载软件 ### #cd

java 短信猫发送短信的方法

用java实现短信收发的功能,目前一般项目中短信群发功能的实现方法大致有下面三种: ·                 1. 向运行商申请短信网关,不需要额外的设备,利用运行商提供的API调用程序发送短信,适用于大型的通信公司. ·                 2. 借助像GSM MODEM之类的设备(支持AT指令的手机也行),通过数据线连接电脑来发送短信,这种方法比较适用于小公司及个人.要实现这种方式必须理解串口通信.AT指令.短信编码.解码. ·                 3. 借

多口8口16口短信猫池设备与短信猫开发包

多口短信猫池是指集成了8路或16口等多短信通讯模块的短信猫设备,要支持短信猫池二次开发需要相应的短信猫开发包支持,在这里推荐给大家:企业短信平台8.2 支持单口短信猫.8口短信猫和16口短信猫池全系列短信猫设备(GSM短信猫和CDMA短信猫.GPRS短信猫等) 多口8口16口短信猫池设备实物如图: 多口8口16口短信猫池设备所采用的短信猫开发包与普通单口GSM短信猫开发包不所不同,需要相应的短信猫开发包支持多口短信猫池设备才可以,给大家推荐:企业短信平台8.2 此款短信猫开发包基于系统数据库的开

短信猫二次开发接口支持任何一种开发语言性能稳定

此款短信猫二次开发接口基于数据库开发方式支持任一种开发语言对短信猫开发,兼容性强.开发简单方便.灵活.稳定.可以快速地使您的应用系统实现短信功能,多种接口方式供二次开发时选择,系统具备良好的可扩展性.企事业单位通过此款短信猫二次开发接口方式实现短信功能,既实现了资源的共享和有效使用,便于企业对进出信息的管理.监控和统计,同时为以后短信功能的扩展提供了便利. 短信猫二次开发接口软件运行界面如图: 在该方案中,考虑到银行是对信息安全性要求很高的行业,采用短信猫作为短信收发设备,避免了常用的通过移动互