65.9K
CodeProject 正在变化。 阅读更多。
Home

从 PC 发送图片消息到手机

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.39/5 (21投票s)

2007 年 7 月 5 日

CPOL

5分钟阅读

viewsIcon

400477

downloadIcon

4789

本文将帮助您使用C#通过电脑向手机发送图片+文本短信。

引言

几天前,我曾想过是否能从电脑向手机发送图片?经过一番思考,我意识到这是可以做到的。本文将为您提供一个向手机发送图片的示例。文本和图片消息的发送方法相同,唯一的区别是消息的长度。如果您只发送“hello”,可以将文本放入一条消息中,但由于图片有完整的格式,因此很难将其放入一条消息中。我使用的是OTA格式来发送图片到我的索尼爱立信k500i手机。

背景

要理解本文,您必须了解如何发送文本短信。

OTA

OTA(Over the Air,空中下载)是一种手机图像格式,标准尺寸为72x28等。它只有黑白两种颜色。有关如何将图像转换为OTA格式,请阅读本文

详细说明

首先,将您的图像转换为OTA格式,并将其所有数据复制到任何文件中,例如*.txt*.doc等。以下是图像OTA数据的示例。

66 66 66 66 66 66 66 66 66 99 99 99 99 99 99 99 99 99 80 00 00 00 00 00 00 00 01
40 00 00 00 60 00 E0 00 02 40 00 00 0E 90 03 10 00 02 80 00 00 31 08 0C F3 B8 01
80 00 00 40 04 11 04 44 01 40 00 00 FF FE 2F 8B 12 02 40 00 00 00 00 53 8C AA 02
80 00 00 00 00 62 89 C4 01 80 00 00 00 00 41 41 40 01 40 00 00 00 00 01 42 80 02
40 00 20 00 00 01 42 80 02 80 01 F0 00 00 00 A2 80 01 80 0F FE 00 00 00 A5 00 01
5F FF FF FF FF FE A5 7F FA 40 0A AA 00 00 00 55 00 02 82 01 50 04 40 01 5D 08 A1
88 10 24 80 00 40 FF 02 01 40 41 00 01 00 03 AB E0 02 44 00 00 08 20 0D 55 58 82
80 10 14 40 00 1A AA AC 01 80 00 00 00 00 35 55 56 01 40 01 00 00 80 6A AA AB 02
40 00 00 00 00 55 55 55 02 80 00 00 00 00 00 00 00 01 99 99 99 99 99 99 99 99 99
66 66 66 66 66 66 66 66 66 

我们知道,在发送文本短信时,我们会将文本编码为PDU。图片短信也将使用相同的方法。

图片短信的PDU(编码图片)

下面的示例显示了如何编码图片短信。该示例包含一张图片和一个文本“Test”。图片消息的长度非常长,因此消息必须作为连接消息(分三条短信)发送。这是编码数据。

第一部分:(长度=140)

8C0B0504158A00000003010301300000045465737402010000481C0166666666
6666666666999999999999999999800000000000000001400000006000E00002
400000E900310000280000031080CF3B801800000400411044401400000FFFE2
F8B12024000000000538CAA0280000000006289C401800000000041414001400
00000001428002400020000 

第二部分:(长度=140)

8C0B0504158A00000003010302014280028001F0000000A28001800FFE000000
A500015FFFFFFFFFFEA57FFA400AAA0000005500028201500440015D08A18810
2800040FF0201404100010003ABE00244000008200D55588280101440001AAAA
C0180000000003555560140010000806AAAAB024000000000555555028000000
000000000199999999999999 

第三部分:(长度=23)

170B0504158A000000030103039999666666666666666666 

第一部分解释

  • 8C 第一部分长度(280/2=140(十进制),8C(十六进制),因为我们的数据是十六进制的)
  • 0B 用户数据头长度
  • 05 标识符(IEI;应用端口寻址方案,16位端口地址)
  • 04 信息元素数据长度(IEDL)
  • 158A 信息元素数据(目标端口)
  • 0000 信息元素数据(源端口)
  • 00 信息元素标识符(IEI;连接短消息,8位参考号)
  • 03 信息元素数据长度(IEDL)
  • 01 信息元素数据(连接短消息参考号)
  • 03 信息元素数据(连接消息的总数(0-255))
  • 01 信息元素数据(当前短消息的序列号)
  • 30 版本标识符,当前版本为(ASCII)零“0”。如果不是“0”,则停止处理消息。
  • 00 “00” <项目长度>
  • 00 文本长度
  • 04 文本长度
  • 54657374 “Test”
  • 02 “02” = <项目长度><OTA位图>
  • 0100 <项目长度>值为0100(十六进制)= 256(十进制)= 4个字节用于头,其余用于OTA位图数据
  • 00 位图的第一个字节必须是00(十六进制);即,OTA位图头字段“动画图标数量”必须为0,表示没有动画,只有一个静态图像。
  • 48 宽度= 48(十六进制)= 72(十进制)
  • 1C 高度= 1C(十六进制)= 28(十进制)
  • 01 位图的深度(灰度等级数)

其余全部是图像数据。

第二部分解释

  • 8C 第二部分长度(280/2=140(十进制),8C(十六进制),因为我们的数据是十六进制的)
  • 0B 用户数据头长度
  • 05 标识符(IEI;应用端口寻址方案,16位端口地址)
  • 04 信息元素数据长度(IEDL)
  • 158A 信息元素数据(目标端口)
  • 0000 信息元素数据(源端口)
  • 00 信息元素标识符(IEI;连接短消息,8位参考号)
  • 03 信息元素数据长度(IEDL)
  • 01 信息元素数据(连接短消息参考号)
  • 03 信息元素数据(连接消息的总数(0-255))
  • 02 信息元素数据(当前短消息的序列号)

其余全部是图像数据。

第三部分解释

  • 17 第三部分长度((48-2)/2=23(十进制),17(十六进制),因为我们的数据是十六进制的)
  • 0B 用户数据头长度
  • 05 标识符(IEI;应用端口寻址方案,16位端口地址)
  • 04 信息元素数据长度(IEDL)
  • 158A 信息元素数据(目标端口)。
  • 0000 信息元素数据(源端口)
  • 00 信息元素标识符(IEI;连接短消息,8位参考号)
  • 03 信息元素数据长度(IEDL)
  • 01 信息元素数据(连接短消息参考号)
  • 03 信息元素数据(连接消息的总数(0-255))
  • 03 信息元素数据(当前短消息的序列号)

其余全部是图像数据。

现在我们已经将图像分成了多部分。因此,在每部分的开头添加以下数据。

0051000C91xxxxxxxxxxxx00F5A7 

解释

  • 00 始终添加
  • 5100 此处不作解释
  • 0C 电话号码长度
  • 91 电话号码格式(91=国际,81=国内)
  • xxxxxxxxxxxx 12位电话号码(例如,我的电话号码是23216427434。写成292361244743)
  • 00F5 此处不作解释
  • A7 时间限制(在此情况下为24小时)

完整示例

SMS # 1:
0051000C913012467234F400F5A78C0B0504158A000000030103013000000
45465737402010000481C0166666666666666666699999999999999999980
0000000000000001400000006000E00002400000E90031000028000003108
0CF3B801800000400411044401400000FFFE2F8B12024000000000538CAA0
280000000006289C401800000000041414001400000000014280024000200000

SMS # 2:

0051000C913012467234F400F5A78C0B0504158A000000030103020142800
28001F0000000A28001800FFE000000A500015FFFFFFFFFFEA57FFA400AAA
0000005500028201500440015D08A188102800040FF0201404100010003AB
E00244000008200D55588280101440001AAAAC01800000000035555601400
10000806AAAAB024000000000555555028000000000000000199999999999999

SMS # 3:
0051000C913012467234F400F5A7170B0504158A0000000301030399996666
66666666666666

发送图片短信

发送简单文本短信的代码已附加到本文中。只需粘贴您的短信PDU即可发送您可爱的图片消息。请记住,我使用的是串行端口进行通信。

或者

您可以使用Windows超级终端发送消息。

开始->程序->附件->通信->超级终端

  • 然后使用以下命令发送短信:
  • AT+CMGF=0 (PDU模式,如果您有多个短信,如本例中的三条短信,只需首次使用此命令。)
  • AT+CMGW=(PDU长度,例如短信#1的153)
    > 编写您的PDU,最后按Ctrl+Z,然后按Enter。如果显示OK,则表示成功。它还会显示消息编号。
  • AT+CMSS=(消息编号)

现在您的消息已发送。

未来工作

我正在尝试使用C#发送MMS。

参考文献

  • Nokia Smart_Messaging_FAQ_v2_0

历史

  • 2007年7月5日:首次发布
© . All rights reserved.