CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  移动平台 >  开发平台

通过PC发送短信之接受短信

楼主im9394(巴黎铁塔反转再反转)2003-08-01 20:29:35 在 移动平台 / 开发平台 提问

使用VB编写的软件,如何直接通过PC读出接收的短信?用AT+CNMI设置,需要TIMER控件不断的检测缓冲区吗?有无更好的解决办法?谢谢了. 问题点数:100、回复次数:18Top

1 楼xxlin110(猪儿)回复于 2003-08-01 20:57:34 得分 0

开个任务吧,接受数据任务  
  Top

2 楼youtiaocn(油条cn)回复于 2003-08-02 06:24:11 得分 0

怎么开任务?Top

3 楼normalnotebook(逐浪踏雪)回复于 2003-08-02 11:57:21 得分 0

我也正在写这个东西,也是从工作站接收数据,发出去,然后在接收短信,再发给工作站。我写的东西运行在通讯服务器上。  
  只不过用VC++写的,我开的是线程来读短信,发短信是另外一个线程,不知道VB有没有线程,如果有,你就可以开线程吗?  
  你再编写的过程中注意汉字编码的问题,不然别人接收是乱码哟,特别是汉字的问题。英文无所谓Top

4 楼im9394(巴黎铁塔反转再反转)回复于 2003-08-02 16:50:25 得分 0

vb没有多线程。比如说,手机通过PC发送短信,我在发送100条短信(系统自动发),与此同时,可能接收了短信的朋友在给我发送短信;又比如说,手机在待机状态,别人可能给我发短信,设置AT+CNMI后,PC能接收数据,如果这样,我就需要不断的检测缓冲区的数据。  
   
  VB内部是UNICODE编码,所以不用担心汉字编码。即使在WIN98。Top

5 楼fjye(老姜)回复于 2003-08-03 12:56:04 得分 5

我用的是事件触发的,用pcomm控件,只要有短信上来就触发接收事件  
  当然时间轮训也是一种办法,但不是最好的Top

6 楼thisisnet(高天上圣大慈仁者玉皇大天尊玄穹高上帝)回复于 2003-08-03 17:59:51 得分 0

Vb可以多线程,调用API实现。不过调试比较麻烦。在家里的机器上有资料,现在贴不上来  
  Top

7 楼im9394(巴黎铁塔反转再反转)回复于 2003-08-05 17:37:12 得分 0

VB调用API可以实现多进程,不是多线程!!!如果用MSCOMM控件,有短信就触发接收事件,哪个事件?你是说缓冲区一接收到数据就当分析吗?当发送队列中有200条信息时,TIMER控件就失效了,用TIMER来检测是不划算的.Top

8 楼woshixuchang(畅)回复于 2003-08-05 20:06:18 得分 0

我想问一下,cdma的短信是不是都是直接发送的,如中文用unicode,英文用ascill,没采用PDU格式?Top

9 楼yifenggd(炽)回复于 2003-08-08 08:43:39 得分 0

我是新手,不太懂!Top

10 楼im9394(巴黎铁塔反转再反转)回复于 2003-08-08 18:44:14 得分 0

中文无法用ASCII,英文可以用UNICODE,所以要支持中文短信,就必须使用PDU.Top

11 楼woshixuchang(畅)回复于 2003-08-26 22:05:21 得分 0

cdma不再采用pdu了,尽管有条指令可以设置为PDU模式,at+cmgf=1,  
  中文采用unicode,英文采用ASCII。后面都要加0x001a,即(Ctrl+z).  
  Top

12 楼gaolin(木木)回复于 2003-09-15 16:51:46 得分 0

那位能够给点资料就好了Top

13 楼liyabin1974(我们一直在努力)回复于 2003-09-26 18:23:30 得分 0

谁再卖短信代码,就是找砍:  
   
  http://www.vchelp.net/vchelp/file2002_2/mobile.asp?type_id=74&class_id=1&cata_id=11&article_id=774&search_term=短信Top

14 楼changton()回复于 2003-09-26 19:34:42 得分 95

SMS是由Etsi所制定的一个规范(GSM   03.40   和   GSM   03.38)。它可以发送最多160个字符,当使用7-bits编码的时候。8-bit编码(最多140个字符)通常无法直接通过手机显示;通常被用来作为数据消息,例如:smart   messaging中的图片和铃声)和OTA   WAP设置。16-bit信息(最多70个字符)被用来显示Unicode(UCS2)文本信息,可以被大多数的手机所显示。一个以class   0   开头的16-bit的文本信息将在某些手机上作为Flash   SMS显示(闪烁的SMS和警告SMS)。    
  有两种方式来发送和接收SMS信息:使用文本模式或者使用PDU(protocol   description   unit)   模式。文本模式(可能某些手机不支持)实际上也是一种PDU编码的一种表现形式。在显示SMS信息,可能使用不同的字符集和不同的编码方式。最常见的选择是"PCCP437",   "PCDN",   "8859-1",   "IRA"   和   "GSM".   这些都通过读取应用程序的at-command中的AT+CSCS指定。如果你想阅读手机上的信息,手机会为你选择一种合适的编码。那么一个可以阅读SMS消息的应用要么使用test模式,要么是PDU模式。如果使用text模式,那么应用将绑定(或限制在)一些可能的编码选择中。在某些情况下是不够的,如果使用PDU模式,那么就可以使用任何编码方式。    
  2.接收    
  PDU串不仅仅   包含了消息,而且还有很多发送者的元信息,他的SMS服务中心,时间标志等等。这些都是以8位字节的16进制数,或者半8位字节的十进制数。以下的字符书我从Nokia   6110   收到的信息,当从www.mtn.co.za发送的串是"hellohello"的时候。   07   917238010010F5   040BC87238880900F100009930925161958003C16010   ,这个八位串包含了三个部分:第一个8位表示SMSC信息的长度("07"),SMSC的信息   ("917238010010F5"),和SMS_DELIVER部分(GSM   03.40中指定)。    
  注意:   有些手机(例如:Ericssson   888?)头三个部分(被着色)在PDU模式下被省略。    
  8位   描述    
  07   SMSC信息的长度。(在这个例子里是7个八位)    
  91   SMSC的地址类型   (91意味着国际格式的电话号码)    
  72   38   01   00   10   F5   服务中心号码(半八位的十进制数)电话号码是一个奇数(11),因此加入F来保证8位。这个服务中心的号码是"+27381000015"    
  04   SMS_DELIVER的第一个8位。    
  0B   地址长度。发送号码的长度(0B   hex   =   11   dec)    
  C8   发送号码的地址类型    
  72   38   88   09   00   F1   发送号码(半八位的十进制数),有一个F结尾。    
  00   TP-PID.协议标识    
  00   TP-DCS   编码方式    
  99   30   92   51   61   95   80   TP-SCTS.时间邮戳(半8位)    
  0A   TP-UDL.用户数据长度,信息的长度。TP-DCS域表明是7-bit格式的数据。因此长度在这里是一个10个7-bits。如果TP-DCS被设置成8-bit或者Unicode,那么长度就应该是9个八位长度。    
  E8329BFD4697D9EC37   TP-UD.   7-bit编码的信息。    
  所有的8位都是16进制编码,除了服务中心号码,发送号码和时间邮戳;他们都是十进制的半8位编码。在PDU串的结尾部分包含了一些16进制的8-bits数据,但他们实际7-bits数据。    
  十进制的半8位只需要将高位和地位交换就可以得到实际的数值。例如:"72   38   88   09   00   F1"   到   "27   83   88   90   00   1F"。因为电话号码是一个奇数,没有办法组成8位编码,所以使用F来补齐。在解析时间邮戳的时候("99   03   29   15   16   59   08"),前6位代表日期,后6位代表时间,最后2位是时区。    
  3.Flash   SMS    
  在某些手机上(所有的Nokias,某些Siemens,   Ericsson,   Motorola   等等..)class   0信息将被显示为一种flash   SMS信息。这些信息只要一到达,将立即显示在屏幕上,而不需要按任何按钮。如果数据的编码方式是设置成16-bit   unicode   (ucs2),   而且信息以"0001"开头,那么它将作为一个闪烁的flash   message显示。    
   
  Octet   Value   Description    
  TP-DCS   18   16   bits   (UCS2),   message   class   0  
  TP-VP   AA   Validity   period    
  TP-UDL   0C   User   Data   Length,   12   octets    
  TP-UD   00   01   00   41   00   6C   00   65   00   72   00   74   User   Data,   message   "Alert"    
  这个表显示了Flash   SMS中的相关信息。    
  第一个unicode字符("00   01")使能闪烁。这样的消息最长就是69个unicode字符。    
  4.Nokia   ICON    
  这是一个OTA   (On   The   Air)   bitmap.    
  这个文件是从Nokia论坛下载而来。在"Smart   Messaging"连接中。  
  PDU    
  type   44    
  RP:0   (no   reply   path)    
  UDHI:1   (UD   begins   with   a   header)    
  SRI:0   (no   status   report   will   be   returned)    
  MMS:1   (no   more   messages)    
  MTI:00   (SMS-deliver)    
  OA   0B    
  91    
  6302752852F1    
  length:11   digit    
  type:   international,E.164/E.163    
  number:   36   20   5782251    
  PID   00    
  PDU   content:   short   message    
  DCS   F5    
  data   coding:   8   bit    
  message   class:   1    
  SCTS   991012    
  114343    
  40    
  date:   99/01/21    
  time:   11:34:34    
  timezone:   GMT+1    
  UDL   89    
  137   octets    
  UD   UDH   06    
  05    
  04    
  1583    
  1583    
  length   of   header:   6   octets    
  information   element   type:   NBS   port   addressing    
  information   element   length:   4   octets    
  destination   port:   CLI   icon    
  source   port:   CLI   icon    
  OTA   bitmap  
  hdr   00    
  48    
  0E    
  01    
  infofield:   last   octet,   no   compression,    
  no   palette,   8   bit,   0   animated   icons    
  width:   72   pixel    
  height:   14   pixel    
  depth:   1   ?    
  image    
   
  data  
  3FF00110005B0001E8    
  7FF802A801A500021C    
  3FF80C470101000408    
  7FF808010081001C04    
  3FF008150081001304    
  7E10183F0058803A84    
  7DF030490064802C9C    
  7E501855002D80473C    
  3AD0082A8058404218    
  39B005010060C04930    
  105005BE0042203220    
  1A1007620046600C40    
  09E001BB003B900840    
  042000960001080EA0    
   
  5.7Bit编码    
  "hellohello"包含了10个字符,他们必须一个个将用7-bits来代表。    
  h   e   l   l   o   h   e   l   l   o    
  104   101   108   108   111   104   101   108   108   111    
  1101000   1100101   1101100   1101100   1101111   1101000   1100101   1101100   1101100   1101111    
  1101000    
  110010   1    
  11011   00    
  1101   100    
  110   1111    
  11   01000    
  1   100101    
  1101100    
  1101100    
  110111   1    
   
     
   
  首先将字符转换为7位的二进制,然后,将后面字符的位调用到前面,补齐前面的差别。例如:h翻译成1101000,e翻译成1100101,显然h的二进制编码不足八位,那么就将e的最后一位补足到h的前面。那么就成了11101000(E8)。剩余地编码看下表:    
   
  1   1101000    
  00   110010    
  100   11011    
  1111   1101    
  01000   110  
  100101   11    
  1101100   1    
   
  1   1101100    
  110111    
  E8   32   9B   FD   46   97   D9    
  EC   37    
   
   
  那么就变成了9个八进制数   E8   32   9B   FD   46   97   D9   EC   37。    
  6.错误信息    
  错误编码   意义    
  0-127   GSM   04.11   Annex   E-2   values    
  128-255   GSM   03.40   section   9.2.3.22   values    
  300   Phone   failure    
  301   SMS   service   of   phone   reserved    
  302   Operation   not   allowed  
  303   Operation   not   supported    
  304   Invalid   PDU   mode   parameter    
  305   Invalid   text   mode   parameter    
  310   SIM   not   inserted    
  311   SIM   PIN   necessary    
  312   PH-SIM   PIN   necessary    
  313   SIM   failure    
  314   SIM   busy    
  315   SIM   wrong    
  320   Memory   failure    
  321   Invalid   memory   index    
  322   Memory   full    
  330   SMSC   (message   service   center)   address   unknown    
  331   No   network   service    
  332   Network   timeout    
  500   Unknown   error    
  512   Manufacturer   specific    
   
   
     
     
  Top

15 楼zgoalh(风之子)回复于 2003-09-27 14:03:17 得分 0

学习!Top

16 楼xujie839997(aw)回复于 2003-09-28 08:43:20 得分 0

mark!!Top

17 楼nclyj()回复于 2003-09-28 18:15:18 得分 0

 
  这个网站可以免费发10条短信,不但可以发,还可以收,提供演示代码下载  
  是一个企业级的短信解决方案,不需要网关,直接通过自己的设备发送。  
   
  演示和下载网址:http://www.dbstep.com/iwebsms2000/demo.aspTop

18 楼im9394(巴黎铁塔反转再反转)回复于 2003-09-30 14:10:07 得分 0

我使用PDU编码。解析编码的问题已解决。现在是读写串口的数据不完整。Top

19 楼wenjinshan(wenson)回复于 2004-03-26 09:45:29 得分 0

http://wenjinshan.wx-e.com/index2.htm有红外、串口手机通讯程序及源代码  
  作者email:   wenjinshan@163.comTop

相关问题

  • 怎样通过网关发送和接受短信?
  • 求教:谁能指点我用vb接受和发送手机短信
  • 帮看下,通过PC发送短信的问题。
  • 请问通过网关开发短信发送和接受平台,用Vc++好不好?请说明原因!!
  • PC串口连手机模块发送短信(用MSComm控件)给分100
  • 帮帮我-关于如何接受com口的设备向pc发送的数据!!
  • deiphl中发送和接受E-mail!?
  • 如何用udp发送和接受?
  • 发送消息,接受消息??
  • xml 发送及接受,在线等。。。。。。。

关键词

  • 编码
  • 字符
  • sms
  • 数据
  • 模式
  • sim
  • 控件
  • 信息
  • 文本
  • 手机

得分解答快速导航

  • 帖主:im9394
  • fjye
  • changton

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo