GPRS modem发送彩信-代码 c#版

彩信的编码解码 立即下载
mm1接口也就是手机终端和mmsc(中国移动就是http://mmsc.monternet.com)用来发送mms   message的接口,   GPRS   modem当然也是可以使用这一接口发送的.  
   
  using   System;  
  using   System.Net;  
  using   System.IO;  
  using   System.Diagnostics;  
  using   System.Threading;  
  using   System.Collections;  
  using   System.Text;  
   
  namespace   MMSLib  
  {  
  ///   <summary>  
  ///   MMSender   的摘要说明。  
  ///    
  ///   </summary>  
  public   class   MMSender  
  {  
  //   设置参数  
  string   sMmscUrl="http://mmsc.monternet.com";  
  string   sProxyUrl="10.0.0.172:80";  
   
  public   MMSender()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
  public   void   SetMMSC(string   szUrl)  
  {  
  sMmscUrl   =szUrl;  
  }  
  public   void   SetProxy(string   szUrl)  
  {  
  sProxyUrl   =   szUrl;  
  }  
   
   
  /*   发送MMS的过程  
  1>   创建消息发送接口  
      MMSender   ms   =   new   MMSender();  
  2>   设置参数属性  
      默认属性已经是中国移动参数,因此如果是中国移动用户,以下两个操作可以不需要  
      ms.SetMMSC("http://mmsc.monternet.com");  
      ms.SetProxy("10.0.0.172:80");  
  3>   创建消息  
      MMessage   mm=   new   MMessage();  
  4>   设置消息内容  
      mm.SetSubject("标题");             //   设置标题  
      mm.AddTo("13825271511");         //   添加接收号码,调用一次添加一个接收号码  
      mm.AddFile("FileName");           //   添加发送文件,包含文件路径,调用一次添加一个发送文件  
  5>   发送消息  
        string   szReult   =ms.Send(mm);  
         
  6>   继续发送其他号码  
      mm.ClearTo();  
      mm.AddTo("13812345678");  
      ms.Send(mm);            
  */  
   
   
  /*   避免协议冲突的设置  
  <configuration>  
  <system.net>  
  <settings>  
  <httpWebRequest   useUnsafeHeaderParsing="true"/>  
  </settings>  
  </system.net>  
  </configuration>  
          */  
  public   string   Send(MMessage   mm)  
  {  
  try  
  {  
  //   验证参数有效性  
  WebRequest   wReq   =   WebRequest.Create(sMmscUrl);  
  HttpWebRequest   hReq   =   (HttpWebRequest)wReq;  
  wReq.Headers.Clear();  
  if(   sProxyUrl.Length   >0)  
  wReq.Proxy   =   new   WebProxy(sProxyUrl);  
   
  wReq.ContentType   ="application/vnd.wap.mms-message";  
  hReq.Accept   ="application/vnd.wap.mms-message,text/plain,*/*";  
  wReq.Method   ="POST";  
  hReq.KeepAlive   =   false;  
  hReq.UserAgent   =   "Nokia6681/2.0   (4.00.15)   SymbianOS/8.0   Series60/2.6   Profile/MIDP-2.0   Configuration/CLDC-1.1";  
  //   Write   Post   Dat  
  byte[]   byMM   =   mm.GetContent();  
  hReq.ContentLength   =   byMM.Length;  
  Stream   sReq   =   wReq.GetRequestStream();  
  sReq.Write(byMM,0,byMM.Length);  
  sReq.Close();  
  //   Http   Request  
  WebResponse   wRes=   wReq.GetResponse();  
  HttpWebResponse   hRes   =   (HttpWebResponse)wRes;  
  if   (   hRes.StatusCode   ==   HttpStatusCode.OK)  
  {  
  Stream   sRes   =   wRes.GetResponseStream();  
  StreamReader   sr   =   new   StreamReader(sRes);  
  string   szResult   =sr.ReadToEnd();     //   发送结果  
  //   Parse   result   sring  
  return   szResult;  
  }  
  }  
  catch(Exception   e)  
  {  
  throw   new   Exception(e.Message);  
  }  
  return   string.Empty;  
  }  
  }  
  } 

public   class   MMessage  
  {  
  string   Subject   ="";  
  int   nSeconds   =0;   //   设置送达的时间,当前相对时间,以秒为单位  
  ArrayList   lFile   =   new   ArrayList();       //   彩信文件列表  
  ArrayList   lDest   =   new   ArrayList();       //   发送号码集合  
   
  static   long   nSeq   =0;  
   
  public   MMessage()  
  {  
  //  
  //   TODO:   在此处添加构造函数逻辑  
  //  
  }  
   
  public   void   SetSubject(string   szSubject)  
  {  
  Subject   =szSubject;  
  }  
  public   void   SetDeliverTime(int   nSec)  
  {  
  nSeconds   =   nSec;  
  }  
  //    
  public   void   AddTo(string   Dest)  
  {  
  lDest.Add(Dest);  
  }  
   
  public   void   AddFile(string   File)  
  {  
  lFile.Add(File);  
  }  
   
  public   void   ClearTo()  
  {  
  lDest.Clear();  
  }  
   
  //   得到二进制编码字节  
  public   byte[]   GetContent()  
  {  
   
  byte[]   byMms   =   new   byte[0];  
  //   消息头开始  
  //X-Mms-Message-Type  
  byMms   =   AppendOct(new   byte[]{0x8C,0x80},byMms);  
  //X-Mms-Transaction-ID  
  byMms   =   AppendOct(new   byte[]{0x98},byMms);  
  byMms=   AppendOct(nSeq.ToString(),byMms);  
  nSeq++;   //   序列号加1  
   
  byMms=   AppendOct(new   byte[]{0x0},byMms);  
   
  //X-Mms-MMS-Version  
  byMms   =   AppendOct(new   byte[]{0x8D,0x90},byMms);  
  //Date  
   
  //From,设置为   Insert-address-token  
  byMms   =   AppendOct(new   byte[]{0x89,0x01,0x81},byMms);  
   
  //To  
  for(int   i=0;i<lDest.Count;i++)  
  {  
  byMms=   AppendOct(new   byte[]{0x97},byMms);  
  byMms=   AppendOct("+86"+   (string)lDest[i]   +"/TYPE=PLMN",byMms);  
  byMms=   AppendOct(new   byte[]{0x0},byMms);  
  }  
  //Subject  
  if(Subject.Length   >0)     //   使用Utf8编码  
  {  
  byMms=   AppendOct(new   byte[]{0x96},byMms);  
  //   Value-length   Char-set   Text   -string  
  byte[]   byLen=   new   byte[1];  
  byLen[0]   =   (byte)   (Encoding.UTF8.GetByteCount(Subject)   +2);  
  byMms=   AppendOct(byLen,byMms);  
  //   Char-set   为utf-8  
  byMms=   AppendOct(new   byte[]{0xEA},byMms);  
  byMms=   AppendOct(Encoding.UTF8.GetBytes(Subject),byMms);  
  byMms=   AppendOct(new   byte[]{0x0},byMms);  
  }  
  //   X-Mms-Delivery-Time,递送时间   =   Relative-token   Delta-seconds-value  
  //   Relative-token   =   0x81  
  //   Delta-seconds-value   =Long-integer  
  //   Long-integer   =   Short-length   Multi-octet-integer  
  if(   nSeconds   >0)  
  {  
  byMms=   AppendOct(new   byte[]{0x87},byMms);  
  byte[]   bfTime   =   BitConverter.GetBytes(nSeconds);     //   默认使用Big-endian,需用改为Little-endian  
  //   bfTime改为Little-endian  
  Array.Reverse(bfTime);  
  byte[]   bfTimeLen   =   new   byte[3];  
  bfTimeLen[0]   =   (byte)   (bfTime.Length   +   2);  
  bfTimeLen[1]   =   0x81;     //   相对时间格式  
  bfTimeLen[2]   =   (byte)bfTime.Length;  
  byMms=   AppendOct(bfTimeLen,byMms);  
  byMms=   AppendOct(bfTime,byMms);  
  }  
   
  //Content-Type:application/vnd.wap.multipart.mixed  
  byMms   =   AppendOct(new   byte[]{0x84,0xA3},byMms);  
  //   消息体开始(MIME   multipart)  
  //   8.5.2   Multipart   Header  
  //   nEntries   Uintvar   The   number   of   entries   in   the   multipart   entity  
  byte[]   byFileCount   =   new   byte[1];  
  byFileCount[0]   =   (byte)lFile.Count;  
  byMms   =   AppendOct(byFileCount,byMms);  
  //   8.5.3   Multipart   Entry,逐个加入媒体文件  
  for(int   j=0;j<lFile.Count;j++)  
  {  
  byMms   =   AppendOct(GetMmsContent(lFile[j].ToString()),byMms);  
  }  
  return   byMms;  
  }  
   
  //   Tools  
  //   加入媒体文件到彩信内容中去  
  private   byte[]   GetMmsContent(string   FileName)  
  {  
  //   每一个Multipart   Entry由5个部分组成  
  /*   HeadersLen  
    *   DataLen  
    *   ContentType  
    *   Headers  
    *   Data  
    *   */  
  byte[]   byHeaders   =   new   byte[0];       //   ContentType和Headers组合  
  byte[]   byData   =   ReadFromFile(FileName);  
   
  string   FileID   =   getContentId(FileName);  
  //   Set   content-type  
  if(   FileName.EndsWith(".txt"))  
  {  
  byHeaders   =   new   byte[1];  
  byHeaders[0]   =   (byte)   (Encoding.ASCII.GetByteCount(FileID)+5);  
  byHeaders   =   AppendOct(new   byte[]{0x83,0x85},byHeaders);       //   Utf-8  
  byHeaders   =   AppendOct(Encoding.ASCII.GetBytes(FileID),byHeaders);  
  byHeaders   =   AppendOct(new   byte[]{0x00},byHeaders);  
  byHeaders   =   AppendOct(new   byte[]{0x81,0xEA},byHeaders);  
  }  
  else   if(   FileName.EndsWith(".gif"))  
  {  
  byHeaders   =   new   byte[]{0x9D};  
  }  
  else   if(   FileName.EndsWith(".mid")   ||   FileName.EndsWith(".midi"))  
  {  
  byHeaders   =   Encoding.ASCII.GetBytes("audio/midi");  
  byHeaders   =   AppendOct(new   byte[]{0x00},byHeaders);     //   文本需要以0x00结尾  
  }  
   
  //   加入Content-ID和Content-Location  
  byHeaders   =   AppendOct(new   byte[]{0xC0,0x22,0x3C},byHeaders);  
  byHeaders   =   AppendOct(Encoding.ASCII.GetBytes(FileID),byHeaders);  
  byHeaders   =   AppendOct(new   byte[]{0x3E,0x00},byHeaders);  
  //加入Content-Location  
  byHeaders   =   AppendOct(new   byte[]{0x8E},byHeaders);  
  byHeaders   =   AppendOct(Encoding.ASCII.GetBytes(FileID),byHeaders);  
  byHeaders   =   AppendOct(new   byte[]{0x00},byHeaders);  
   
  byte[]   byHeaderLen   =   encodeUintvar(   byHeaders.Length);  
  byte[]   byDataLen   =   encodeUintvar(byData.Length);  
   
  byte[]   byMmc   =   new   byte[   byHeaderLen.Length   +   byDataLen.Length   +   byHeaders.Length   +     byData.Length   ];  
  Array.Copy(   byHeaderLen,byMmc,byHeaderLen.Length);  
  Array.Copy(   byDataLen,0,byMmc,byHeaderLen.Length,byDataLen.Length);  
  Array.Copy(   byHeaders,0,byMmc,byHeaderLen.Length+byDataLen.Length,byHeaders.Length);  
  Array.Copy(   byData,0,byMmc,byHeaderLen.Length   +byDataLen.Length   +byHeaders.Length,byData.Length);  
   
  return   byMmc;  
  }  
   
  private   byte[]     encodeUintvar(int   n)  
  {  
  byte[]   buf   =   new   byte[8];  
  int   l=0;  
  while(n   >=128)  
  {  
  byte   b   =   (byte)(n   &0x7F);  
  n   =   n   >>   7;  
  buf[l++]   =b;  
  }  
  buf[l++]=   (byte)n;  
   
  byte[]   retBys   =   new   byte[l];  
  for(int   i=0;i<l;++i)  
  {  
  retBys[i]   =   (byte)(buf[l-i-1]|0x80);  
  }  
  retBys[l-1]   &=   0x7F;  
  return   retBys;  
   
  }  
  //   从文件中读取字节  
  private   byte[]   ReadFromFile(string   FileName)  
  {  
  byte[]   bf   =   new   byte[0];  
  FileStream   fs   =   null;  
  try  
  {  
  fs=   new   FileStream(FileName,FileMode.Open,FileAccess.ReadWrite,FileShare.None);     //   没有设定Buffsize  
  }  
  catch(Exception   e)  
  {  
  Console.WriteLine(e.ToString());  
  }  
  if(   fs!=null)  
  {  
  bf   =   new   byte[fs.Length];  
  fs.Read(bf,0,(int)fs.Length);  
  fs.Close();  
  }  
  return   bf;  
  }  
  //   得到文件名(不包含文件夹部分)  
  private   string   getContentId(string   FileName)  
  {  
  int   at   =FileName.LastIndexOf("//");  
  if(   at   <0)  
  return   FileName;  
  else  
  return   FileName.Substring(at+1);  
  }  
  //   增加字节  
  private   byte[]   AppendOct(byte[]   bys,byte[]   byDest)  
  {  
  byte[]   bysNew   =new   byte[byDest.Length   +bys.Length];  
  try  
  {  
  Array.Copy(byDest,bysNew,byDest.Length);  
  Array.Copy(bys,0,bysNew,byDest.Length,bys.Length);  
  }  
  catch(Exception   e)  
  {  
  Console.WriteLine(e);  
  }  
  return   bysNew;  
  }  
  //   增加字符串  
  private   byte[]   AppendOct(string   sz,byte[]   byDest)  
  {  
  return   AppendOct(Encoding.Default.GetBytes(sz),byDest);  
  }  
  }   
 
C#通过服务端和GPRS通讯 程序实现了通过U-blox芯片的GPRS与服务器通讯,服务器端可以收到GPRS的数据,GPRS也可以收到服务器端的数据,程序已经验证有疑问可以沟通 QQ330876583,压缩包里有备注详解 立即下载

相关推荐

C# 通过GPRS模块远程通讯的服务端

基于C#开发的socket服务端,能接受远程智能设备通过gprs传送过来的数据

基于WSP/WTP的MMS传输(4)——WSP 协议的实现

WSP协议位于WTP协议层之上,它没有保证数据正确传送的机制(这个部分是由WTP实现的),在WSP层提供会话管理功能,即连接——交互——断开连接这样的流程,WSP协议与HTTP协议实现上有对应的关系,如果熟悉HTTP,则WSP很容易理解。        WSP提供两种事务交互模

打工仔的程序人生 4771

C#串口解析GPRS程序可保存解析数据为excel

直接打开就有源码,具体解释和预览见相关文章

彩信uintvar编解码

/*uintvar 编码*/int encodeUintvar(int data, char *pUintVar, int *iUintVarLen){    char reversed[8]={0};    char tmp;    int i = 0;    reversed[i]=(char)data & 0x7f;   // The lowest    data = data >> 7

Linux Operating System 的专栏 2217

用C#写的 GPRS 连接管理程序

C#拨号代码,先拨CMWAP,再拨CMNET,也不会弹出正在拨号的对话框。 调用方法非常简单: Record1("在上传之前提前拨号:ConnectManager"); Connection.ConnectManager cnnMan = null; try { cnnMan = new Connection.ConnectManager(); if (cnnMan.ConnectGPRS()) { cnnMan.Dispose(); cnnMan = null; Record1("拨号:CMWAP/CMNET"); return; } cnnMan.Dispose(); cnnMan = null; } catch (Exception err) { Record1("拨号2:" + err.Message); if (cnnMan != null) { cnnMan.Dispose(); cnnMan = null; } } 这个函数也非常简单,基本上看看就会了。 public bool ConnectGPRS() { if ((!ConnectMobileNetwork("CMWAP"/*"单位设置"*/)) || (!ConnectMobileNetwork("CMNET"/*"Internet 设置"*/))) { return false; //未能建立GPRS连接! } else { return true; //成功建立GPRS连接! } }

远程监控数据采集GPRS(C#源码)

VS2015开发的远程数据采集后台,C#源码,协议解析

开放 mm1接口发送彩信(也就是GPRS modem发送彩信) 代码 c#版

mm1接口也就是手机终端和mmsc(中国移动就是http://mmsc.monternet.com)用来发送mms   message的接口,   GPRS   modem当然也是可以使用这一接口发送的.           using   System;      using   System.Net;      using   System.IO;      using   Syst...

weixin_34072637的博客 380

PD虚拟机网络初始化失败的权限修复指南

本文针对Parallels Desktop虚拟机常见的“网络初始化失败”问题,提供了详细的权限修复指南。通过分析问题根源,指导用户安全备份并修改关键的`network.desktop.xml`和`dispatcher.desktop.xml`配置文件,以恢复PD虚拟机的网络连接。文章还包含了修复后的验证步骤及预防措施,帮助用户彻底解决并避免此类权限问题。

qqq44的博客 851

关于采用GPRS—MODEM发送彩信的问题

本人想通过GPRS模块发送MMS,下面是我这几天主要的研究成果: 1.只要支持GPRS的GSM模块,就可以实现MMS。GPRS模块市面上有不少,主要有西门子和Wavecom的,如 西门子MC55/MC66,Wavecom Q2403A,价格300到500元人民币不等。 2.现在没有内置MMS协议的GSM模块,MMS协议需要在外挂系统上实现(PC或嵌入式系统)。   (很多模块都集成了TCP

厌米's CUO Zone 2980

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

思科路由器重分发(静态路由+OSPF动态路由+RIP动态路由)

2301_81256766的博客 1260

使用NowSMS Gateway来接收发送短信和彩信

硬件准备:GPRS Modem,不同的运营商波段可能不一样,比如Cingular是850/1900 MHz,而China Mobile是900/1800 MHz,购买时要注意.把SIM card插入Modem, SIM要开通GPRS service,把Modem接到COM Port,完成硬件准备。软件准备:下载SMS Gateway,我用的是NowSMS Gateway,觉得还可以,支持多种语言字

phiger的专栏 1万+

利用setEcoMode优化innovus中的ecoAddRepeater批量操作效率

本文详细介绍了在Cadence Innovus工具中,如何利用setEcoMode命令的batchMode参数,显著提升ecoAddRepeater命令在批量插入buffer或inverter时的操作效率。通过合并重复的初始化和数据库更新开销,该模式可将大规模时序修复操作的执行速度提升数倍,并提供了完整的脚本示例与最佳实践,帮助后端设计工程师优化ECO流程。

mango的博客 514

Windows Mobile 开发系列文章收藏 - GPRS/上网设置

       Windows Mobile 开发系列文章收藏 - GPRS基础知识/应用开发/上网设置. GPRS入门知识 GPRS、WAP、CDMA GPRS网络总体结构 GPRS基本知识问答 GPRS类型一览 GPRS简介 GPRS特点  GPRS开发系列文章GPRS开发系列文章之入门篇(转) GPRS开发系列文章之进阶篇 GPRS开发系列文

samantha_sun的专栏 1118

【AUTOSAR AP PHM 】PHM 标准化“检查点上报接口”落地指南(AUTOSAR AP · R24-11取向)

本文介绍了AUTOSAR AP R24-11标准下PHM(平台健康管理)模块中"检查点上报接口"的标准化实现方案。主要内容包括: 核心设计理念:采用"配置优先"原则,通过部署模型预先定义监管参数,应用进程只需简单上报枚举标识,具体判定由PHM执行。 职责划分: 应用进程:仅调用ReportCheckpoint接口上报枚举值 PHM:负责Alive计数、Deadline区间判定和Logical路径校验 EM/IdsM:提供进程状态和越权检测 三类监管机制: Alive:

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 220

Eclipse邂逅Deepseek:本地化部署全攻略

通过前面一系列的步骤,我们成功地在 Eclipse 中完成了 Deepseek 的本地化部署,并且对部署后的功能进行了测试和优化,还解决了可能遇到的一些常见问题。这一过程不仅让我们体验到了将强大的大语言模型与高效的开发环境相结合的魅力,也为我们在软件开发过程中带来了诸多便利。本地化部署 Deepseek 到 Eclipse,使得我们在代码编写过程中能够获得智能的代码补全和精准的问答支持,大大提高了开发效率。同时,本地化部署保障了数据的安全性和隐私性,避免了数据在传输过程中可能面临的风险。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 4519

GSM MODEM发PUSH/MMS 的具体实现.

GSMMODEM发PUSH/MMS的原理请搜索网上的很多文章.这里只提供实现代码.我在原来发SMS的PDULib中加了 两个组装PUSH和MMS通知的方法.然后直接利用发SMS的方法发出去.代码都是调用通过的.不过我用SE的GPRS卡插在本本上调用,无论是通过超级终端直接发AT指令还是用程序都不行,好象最后的结束符26(ctrl+z)发不出去.但用MOTO的手机连接本本,无论超级终端还是程序都很顺...

云计算? 218

ER图从入门到精通:数据库建模全攻略

本文为数据库建模领域的 ER 图全面指南,系统解析从基础概念到实战应用的核心要点。首先介绍 ER 图的定义、三大组成元素(实体、属性、关系)及三种基础关系类型(一对一、一对多、多对多);其次详解绘制流程,涵盖工具选择(如 Visio、PowerDesigner)、需求分析方法及实体 - 属性 - 关系的分步建模技巧;进一步探讨弱实体、复合属性等高级概念,结合范式理论讲解模型优化策略;针对实体属性混淆、关系类型误判等常见问题提供解决方案;最后通过电商系统、图书馆管理系统等实际案例展示 ER 图设计全流程。

邓邓子的博客 4213

Windows Mobile 开发系列文章收藏 - GPRS基础知识/应用开发/上网设置.

GPRS入门知识 GPRS、WAP、CDMA GPRS网络总体结构 GPRS基本知识问答 GPRS类型一览 GPRS简介 GPRS特点  GPRS开发系列文章GPRS开发系列文章之入门篇(转) GPRS开发系列文章之进阶篇 GPRS开发系列文章之实战篇(转) Mobile.Connectio

okadler0518的专栏 1280

19. SAP UI5 应用开发教程之十九 - SAP UI5 数据类型和复杂的数据绑定

通过本教程前面的步骤SAP UI5 初学者教程之十七 - 聚合绑定在 UI5 复合控件中的使用的介绍,我们已经学会了如何在 SAP UI5 里显示列表,如下图所示: 本步骤我们给该列表添加更多的业务数据,比如每张发票的金额。 按照本文的步骤完成的 SAP UI5 应用,列表如下图所示: 可以看到,同前一个步骤相比,现在 Invoices 表格里,每张发票的金额和货币单位已经显示出来了。 为了实现这个效果,本步骤的源代码位于我的 Github 这个文件夹下面: https://github.com/wan

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 3692

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Windows Mobile 开发系列文章收藏

Windows Mobile 开发系列文章收藏 - GPRS基础知识/应用开发/上网设置.GPRS入门知识 GPRS、WAP、CDMA GPRS网络总体结构 GPRS基本知识问答 GPRS类型一览 GPRS简介 GPRS特点 GPRS开发系列文章GPRS开发系列文章之入门篇(转) GPRS开发系列文章之进阶篇 GPRS开发系列文章之实战篇(转) Mo

1179

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: PocketPc如何设置手机彩信
下一篇: Nokia官方培训(Symbian 4300)笔记(摘录)
evening424
博客等级 码龄20年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值