`
leng_cn
  • 浏览: 301930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过手机发送短信的程序(电脑通过数据线接手机,PDU编码,发送中文短信)

F# 
阅读更多
最近几天研究通过数据线把手机和电脑连接起来,然后发送手机短信,看了点PDU编码的东西,那个PDU编码的东东害的我花费了两天时间没有发送出短信,而同事在无意中看到其编码的规则,加上我的理解,做些记录。

首先,通过手机发送中文短信,必须采用PDU的编码方式发送短信,所以在先要发送AT指令,告诉手机,发的是PDU编码:(C#伪代码)
SerialPort port
command = AT+CMGF=0
port.Write(command + "\r");

其次,再告诉手机,你的整个PDU的编码长度是多少:
int cnt = 15 + (pdu.Length - 32) / 2;
command = AT+CMGS=cnt;
port.Write(command + "\r");
String pdu = getPDUMessage(Message,PhoneNo);
//23=15+8,15是 PDU的编码规约头,固定是15,后面的8是你传的汉字的长度,一个汉字两个字符,所以这里的8是我传了4个汉字,规约头的购成见下面的PDU编码方法,即PDU的常量值

private string getPDUMessage(string Sms_Text, string Dest_Number)
        {
            string pdu = ""; //开始合成 PDU 串
            pdu += "0011000D9168";
            //SMSC中心号码补F凑成偶数
            /*char[] tmpSmscNumber = ("13800100500" + "F").ToCharArray();
            for (int i = 0; i < tmpSmscNumber.Length; i += 2) //字符两两对调
            {
                pdu += tmpSmscNumber[i + 1].ToString();
                pdu += tmpSmscNumber[i].ToString();
            }*/这段代码原来是要加上短信服务中心的号码,加上后不能发短信了,所以得去掉
      
           
           char[] tmpDestNumber = (Dest_Number + "F").ToCharArray();//对方号码
            for (int i = 0; i < tmpDestNumber.Length; i += 2) //字符两两对调
            {
                pdu += tmpDestNumber[i + 1].ToString();
                pdu += tmpDestNumber[i].ToString();
            }
            pdu += "000800"; //08 表示采用 UCS2 编码
            //短信正文转为Unicode                                    
            byte[] tmpSmsText = Encoding.Unicode.GetBytes(Sms_Text);
            pdu += tmpSmsText.Length.ToString("X2"); //正文内容长度
            for (int i = 0; i < tmpSmsText.Length; i += 2) //高低字节对调
            {
                pdu += tmpSmsText[i + 1].ToString("X2");//("X2")转为16进制
                pdu += tmpSmsText[i].ToString("X2");
            } //PDU串 完成
            return pdu;
        }

最后,发送PDU的短信
command = pdu + "\x01a";
port.Write(command);

我开始一直发送不成功的原因就是PDU的长度和实际长度不一致造成的
注意,里面的command是字符串,要用引号引起来
分享到:
评论

相关推荐

    短信pdu编码解码_短信_短信PDU编码_pdu_

    在实际应用中,短信PDU编码和解码通常由手机操作系统或第三方应用程序处理。然而,对于开发者而言,理解这一过程有助于更好地理解和调试与短信相关的程序。例如,如果你正在开发一个能够接收和发送自定义PDU的软件,...

    支持PDU编码的短信收发程序

    3. **短信收发**:短信的发送和接收涉及多个步骤,包括构建PDU、发送PDU到短信中心(SMSC)、通过网络传输以及将接收到的PDU解码成可读文本。这个程序实现了这些步骤,使得开发者可以方便地集成短信功能到自己的应用...

    PDU编码工具用于短信编码

    在移动通信领域,PDU(Protocol Data Unit,协议数据单元)编码是一种用于短信服务(Short Message Service, SMS)的技术,它允许短信在GSM网络中有效地传输。PDU模式是SMS消息的一种二进制表示形式,用于处理和解析...

    短信编码PDU生产解析工具

    在IT行业中,尤其是在移动通信和嵌入式系统领域,短信编码和PDU(Protocol Data Unit,协议数据单元)是至关重要的概念。对于初学者来说,理解这些知识点是开发GSM(Global System for Mobile Communications,全球...

    GSM模块PDU编码发送短信.rar

    GSM模块PDU编码发送短信是一种在嵌入式系统或者应用程序中通过GSM模块与手机网络进行通信的技术。PDU(Protocol Data Unit)编码是GSM短信服务中的一个关键概念,用于将文本信息转换为二进制格式,以便于GSM网络传输...

    PDU编码 短信的接收与发送

    ### PDU编码与短信收发技术详解 #### 一、PDU编码简介 PDU(Protocol Data Unit)编码是GSM网络中用于处理短信的一种重要技术。它涉及到短信的发送与接收过程中的数据格式化,使得短信能够在不同设备之间进行有效...

    基于短信猫,采用PDU编码的短信收发java实现

    在这个类中,会调用`PduPack.java`中的方法将待发送的文本消息转化为PDU,然后通过串口将PDU数据发送给短信猫,短信猫再将其发送到指定的手机号码。 在实际应用中,开发者还需要处理各种异常情况,如串口通信失败、...

    pdu编码收发短信例子

    3. 发送PDU数据:通过GSM网络的短信接口发送PDU编码的短信。 4. 接收PDU数据:接收来自网络的PDU数据,并解析其中的控制信息和字符数据。 5. PDU解码:将接收到的PDU数据转换回文本格式,供用户阅读。 通过理解PDU...

    PDU短信发送编码程序(C#)

    ### PDU短信发送编码程序(C#) #### 一、PDU模式简介 PDU(Protocol Description Unit)模式是一种用于在GSM网络中发送短信的技术。它允许用户通过编写特定格式的数据来构造短信消息,这种方式相比于文本模式(如...

    pdu模式发送短信

    PDU(Protocol Data Unit,协议数据单元)模式是GSM通信系统中用于短信服务(SMS)的一种编码方式,它是一种二进制格式,用于在移动网络中传输短信数据。理解并掌握PDU模式发送短信的知识点对于进行底层通信开发或者...

    PDU短信编码器

    在GSM网络中,短信服务(Short Message Service, SMS)是通过一个称为Protocol Data Unit(PDU)的编码方式来传输文本消息的。PDU编码是GSM7位编码集的一种扩展,它允许在有限的字节空间内传递更多的信息,包括特殊...

    PDU短信编码工具

    PDU短信编码是一种在GSM通信系统中用于发送和接收短信的二进制编码格式,全称为Protocol Data Unit。这个工具对于那些想要深入了解移动通信技术,尤其是短信服务(Short Message Service, SMS)的人来说非常有用。...

    SMS 短信 PDU编码规则

    对于短信服务,PDU模式是原始的、低级别的数据格式,由一系列16进制数字组成,包含了短信的所有必要组成部分,如发送者和接收者的电话号码、短信类型、字符编码、以及实际的短信内容等。 短信PDU编码规则主要包括...

    PDU 短信编解码工具(升级版)

    这个升级版的工具能够帮助开发者高效地处理和理解PDU格式的短信,极大地简化了短信程序的开发过程。 短信在传输过程中,通常会经历两种编码形式:7位ASCII编码和16位UCS2编码。7位ASCII编码适用于英文和其他单字节...

    网页版PDU格式编码_解码

    此工具的独特之处在于,它不仅能够将短信内容转化为PDU格式,而且生成的直接就是AT命令,这对于那些需要通过串行通信接口控制SIM卡模块或手机进行短信发送的开发者来说,无疑极大地简化了工作流程。 AT命令是...

    pdu编码pdu编码

    总的来说,PDU编码是短信通信中的一个重要技术,它允许发送和接收包含各种字符集的短信,尤其是对于支持多语言环境的应用程序来说,理解和运用PDU编码是必不可少的技能。在处理PDU编码时,还需要注意字符填充、校验...

    C#短信发送程序(pdu_class)。

    本项目涉及的是利用C#实现短信发送功能,主要依赖于PDU(Protocol Data Unit)类,这是一种用于GSM通信协议的数据结构,用于编码和解码短信。 PDU模式是短信通信中的一种低级别格式,它直接对应于GSM 03.38标准,该...

    PDU短信编解码demo,c语言

    PDU模式是短信服务中心(SMSC)与手机之间交换短信的一种方式,它使用二进制编码来传输数据。在C语言中实现PDU短信的编解码可以帮助开发者理解短信传输的底层工作原理,以及如何在实际应用中处理这类通信任务。 ...

Global site tag (gtag.js) - Google Analytics