.NET CF.NET 1.0Visual Studio .NET 2003.NET 1.1Visual Studio 2005Windows XP.NET 2.0C# 2.0IntermediateDevVisual StudioWindows.NETC#
从 PC 发送图片消息到手机






3.39/5 (21投票s)
本文将帮助您使用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日:首次发布