[转]vs2008中开发智能设备程序的一些总结收藏1

<p><span style="font-size: 10pt;">本文转自:</span><a href="http://hi.baidu.com/netlmz/blog/item/724c34580522962d2834f01a.html" target="_blank"><span style="font-size: 10pt;">http://hi.baidu.com/netlmz/blog/item/724c34580522962d2834f01a.html</span></a></p><p><span style="font-size: 10pt;">原文如下:</span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">结合前几日开发的《全国大坝基础数据库采集端》中的pda程序开发过程,对vs2008开发智能设备上的程序做个小总结。</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">1<span style="font: 7pt times new roman;"> </span></span>程序结构</span></h1><h1><span style="font-size: 14pt;"><span style="font-size: 10pt;">程序中包括四个部分:</span></span></h1><p style=""><span style="font-size: 10pt;"><span style="font-size: 14pt;">1. </span><span style="font-size: 14pt;">系统配置</span></span></p><p style="margin: 0cm 0cm 0pt 17.95pt; text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">这个部分用来配置系统中的相关参数,参数包括数据库信息和串口的配置信息。这部分的主要技术是xml文件的读取和写入。</span></span></p><p style=""><span style="font-size: 10pt;"><span style="font-size: 14pt;">2. </span><span style="font-size: 14pt;">数据下载</span></span></p><p style="margin: 0cm 0cm 0pt 17.95pt; text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">从数据库中下载数据到pda,pda上的保存也是使用数据库。这部分的技术主要是pda设备上的移动数据库开发和使及用pda连接pc数据库</span></span></p><p style=""><span style="font-size: 10pt;"><span style="font-size: 14pt;">3. </span><span style="font-size: 14pt;">数据上传</span></span></p><p style="margin: 0cm 0cm 0pt 17.95pt; text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">把pda上的数据上传到pc数据库中,使用的技术和2相同。</span></span></p><p style=""><span style="font-size: 10pt;"><span style="font-size: 14pt;">4. </span><span style="font-size: 14pt;">gps</span><span style="font-size: 14pt;">数据获取</span></span></p><p style="margin: 0cm 0cm 0pt 17.95pt; text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">通过外置蓝牙gps模块获取当时所在位置的经纬度,并将经纬度保存在pda上的移动数据库中。涉及到的技术有串口数据的读取,gps数据的解析。</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">2<span style="font: 7pt times new roman;"> </span></span>开发环境</span></h1><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">软件环境: visual studio 2008 </span></span></p><p><span style="font-size: 10pt;"><span style="font-size: 14pt;">pc</span><span style="font-size: 14pt;">数据库: sql server</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">智能设备: windows mobile 6</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">3<span style="font: 7pt times new roman;"> </span></span>建立工程</span></h1><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">3.1<span style="font: 7pt times new roman;"> </span></span>建立项目</span></h2><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">建立工程的过程和vs建立其他工程步骤相同,通过vs2008中的菜单“文件-新建-项目 ”,建立一个新项目。</span></span></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 10pt;"><span style="font-size: 14pt;">vs2008</span><span style="font-size: 14pt;">已经集成了智能设备的开发环境,根据开发语言的不同,在不同的开发语言树中选择“智能设备”,下方的名称中填写项目名称,点击“确定”按钮,就建立了一个智能设备的程序项目。</span></span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">3.2<span style="font: 7pt times new roman;"> </span></span>建立调试环境</span></h2><p style="text-indent: 28pt;"><span style="font-size: 10pt;"><span style="font-size: 14pt;">vs2008</span><span style="font-size: 14pt;">中已经包括了智能设备的仿真程序,编写的程序可以通过pc机上的仿真程序进行调试,不必在pda上逐个调试程序。</span></span></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">建立项目后,通过菜单“项目--项目属性”中的“设备”页中设置调试内容。</span></span></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">在下拉框中,选择目标设备的类型。类型的选择要根据pda的操作系统进行确定,pda上如果是中文操作系统,请选择“chs”打头的选项。具体如何选择,请根据pda的操作系统进行。如果对选项中的内容不了解,请查阅其他资料。</span></span></p><p><span style="font-size: 10pt;"><span style="font-size: 14pt;"> </span><span style="font-size: 14pt;">仿真程序的选择和设置不仅仅只有这一种方式,也可以通过vs2008中的“工具-设备仿真器管理器”进行设置。</span></span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">3.3<span style="font: 7pt times new roman;"> </span></span>绘制窗体</span></h2><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">智能设备的窗体和windows窗口的差别不是很大。在工程中选择添加窗体后,vs中出现pda屏幕模样的模板。需要什么功能,在工具箱中把对应的控件拖到模板上即可。这部分的开发和普通的windows程序开发没有什么不同。</span></span></p><p style="text-indent: 28pt;"></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">不同的部分就是菜单。智能设备的菜单中有缺省菜单,就是在屏幕底部有个菜单控件,可以通过增加菜单项的方式增加菜单。需要注意的是,一级菜单只能有两个,而且设置的时候,只能先设置左边的菜单项内容,才能设置右边菜单项内容。</span></span></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">控件的使用也是有严格限制的。vs2008中能使用的控件分布在工具箱的“所有设备控件v2”、“公共设备控件 v2”、“设备容器 v2”、“设备菜单和工具栏v2”、“设备数据v2”、“设备组件v2”、“设备对话框v2”。使用控件的方式和windows窗体的设计没有什么不同。</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">4<span style="font: 7pt times new roman;"> </span></span>调试</span></h1><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">调试程序的方式同普通的程序调试差别不大,也通过单步调试等等的功能。唯一的差别就在于调试中程序在仿真器中运行。</span></span></p><p></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">4.1<span style="font: 7pt times new roman;"> </span></span>其他文件</span></h2><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">在调试中,程序如果只有一个exe文件,而不涉及到其他文件,可以直接在仿真程序中运行。但是如果程序还有其他文件的话,需要把文件也要部署到pda仿真器上。如何部署其他文件,请参考下面步骤:</span></span></p><p style=""><span style="font-size: 10pt;"><span style="font-size: 14pt;">1. </span><span style="font-size: 14pt;">通过仿真器上的菜单“文件</span><span style="font-size: 14pt;">――</span><span style="font-size: 14pt;">配置…”菜单设置共享文件夹。</span></span></p><p></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">通过后面的按钮,浏览电脑中的磁盘,并选择恰当的目录。“共享文件夹”在设置完成后,将作为pda仿真器的扩展存储空间,仿真器中共享文件夹被命名为“storage card”。那么在仿真器中就可以直接操作共享文件夹中的文件。</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">这时候,就可以把其他和程序相关的文件拷贝到需要的地方。下面以一个xml文件为例。这个xml和程序的可执行程序在一个目录下,用来保存程序的设置参数。xml文件在电脑上,程序中通过读取可执行程序所在的目录来指定xml文件的目录。但是很不幸,仿真器在运行过程中,认为exe可执行程序在“program files""项目名称”这个目录下,这个目录是仿真器中的路径,肯定是不会找到xml文件的。这就需要把xml文件也放置到“program files""项目名称”目录下面去。</span></span></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">在仿真器中点击“开始-资源管理器”,打开后选择“storage card”。在这个里面通过目录-文件的方式选中文件,然后点击下面的“菜单-编辑-复制”,将文件复制出来。</span></span></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">然后通过仿真器界面上的文件-目录功能,找到“我的设备-program files-项目名称”,进入以项目名称为名称的目录,通过“文件-编辑-粘帖”,把文件拷贝到可执行程序所在的运行目录下。</span></span></p><p></p><p></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">5<span style="font: 7pt times new roman;"> </span></span>移动数据库</span></h1><p style="text-indent: 21pt;"><span style="font-size: 10pt;">在这个项目中,使用的是微软的sql server mobile compact editor 3.5。其他的数据库还没有使用过。仅仅就sql server mobile compact editor 3.5的使用方法说明。</span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">5.1<span style="font: 7pt times new roman;"> </span></span>获得sql server mobile compact editor 3.5</span></h2><p style="text-indent: 35pt;"><span style="font-size: 10pt;"><span style="font-size: 14pt;">sql server mobile compact editor 3.5</span><span style="font-size: 14pt;">可以直接从微软的网站上下载,网址为:http://www.microsoft.com/downloads/details.aspx?familyid=7849b34f-67ab-481f-a5a5-4990597b0297&displaylang=zh-cn</span></span></p><p style="text-indent: 35pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">下载后在电脑上进行安装。默认安装到c:"program files"microsoft sql server compact edition下。</span></span></p><p style="text-indent: 35pt;"><span style="font-size: 10pt;"><span style="font-size: 14pt;">3.5</span><span style="font-size: 14pt;">版本为最新版,增加了设置数据库文件密码的功能。也可以使用其他版本的sql server mobile替代。</span></span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">5.2<span style="font: 7pt times new roman;"> </span></span>在sql server manager studio中使用sql server mobile</span></h2><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">在登录部分,服务器类型选择“sql server mobile”,数据库文件通过下拉框中的“浏览更多…”选择建立的数据库文件,也可以通过选择窗体中的“新建数据库”建立新的数据库。</span></span></p><p></p><p></p><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">输入数据库密码,即可登录到sql server mobile数据库中。需要说明的是,3.5版本建立的数据库,在sql server manage studio 2005中可能无法登录。</span></span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">5.3<span style="font: 7pt times new roman;"> </span></span>sql server mobile数据库中建立数据表</span></h2><p style="text-indent: 28pt;"><span style="font-size: 10pt;"><span style="font-size: 14pt;">sql server mobile</span><span style="font-size: 14pt;">中建表可以通过sql server manage studio 2005中的建表向导进行建表,也可以通过sql语句进行建表。建表的时候需要注意字段类型和sql server中的字段类型并不相同,在sql server中能使用的字段类型,在sql server mobile中可能无法使用,在建表的过程中需要注意这点。</span></span></p><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">5.4<span style="font: 7pt times new roman;"> </span></span>在智能设备上部署sql server mobile数据库</span></h2><p style="text-indent: 28pt;"><span style="font-size: 14pt;"><span style="font-size: 10pt;">把建好的数据库文件通过4.1中描述的方式,拷贝到相应的仿真器目录下。这时候仿真器就可以连接并操作sql server mobile数据库了。</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">但是如果使用pda访问sql server mobile,注意windows mobile中不包含数据库引擎,需要额外的安装四个包。如果不安装这四个包,程序将无法连接和读取sql server mobile数据库。</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">这四个包在sql server mobile安装目录下,具体的是c:"program files"microsoft sql server compact edition"v3.5"devices"wce500"armv4i目录下面,包括:</span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlce.dev.chs.ppc.wce5.armv4i.cab</span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlce.ppc.wce5.armv4i.cab</span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlce.repl.ppc.wce5.armv4i.cab</span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlce.wce5.armv4i.cab</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">将这四个文件拷贝到仿真器上,并安装。</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">安装后,pda的程序中增加了三个程序: <span style="color: red;">sqlservercompact 3.5 repl</span></span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlservercompact 3.5 tools cn</span></span></p><p><span style="font-size: 14pt; color: red;"><span style="font-size: 10pt;">sqlservercompact 3.5 core</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">当不用移动数据库时,可以卸载这三个程序。</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">6<span style="font: 7pt times new roman;"> </span></span>智能设备连接操作pc数据库</span></h1><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">智能设备操作pc数据库,有两种方式:</span></span></p><p><span style="font-size: 10pt;"><span style="font-size: 14pt;">一种是通过无线连接,一种是通过usb连接到电脑上。无线连接在普通环境下使用普遍性不足,很多情况下是通过usb数据线进行连接的。使用usb数据线连接,pc电脑上需要安装同步工具,目前使用较多的为微软的</span><span style="font-size: 14pt;">activesync</span><span style="font-size: 14pt;">,下载地址是;</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">http://www.microsoft.com/downloads/details.aspx?familyid=cabdb564-ae94-4c02-abbc-cdece61231d4&displaylang=zh-cn</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">智能设备和pc同步后,就可以把智能设备看作一台电脑,可以连接数据库。</span></span></p><h1><span style="font-size: 10pt;"><span style="font-size: 16pt; line-height: 240%;">7<span style="font: 7pt times new roman;"> </span></span>数据库连接字符串</span></h1><h2><span style="font-size: 10pt;"><span style="font-size: 14pt; line-height: 173%;">7.1<span style="font: 7pt times new roman;"> </span></span><span style="font-size: 14pt; line-height: 173%;">sql server mobile</span></span></h2><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">在工程中增加引用,引用system.data.sqlserverce</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">类中使用命名空间:system.data.sqlserverce</span></span></p><p><span style="font-size: 14pt;"><span style="font-size: 10pt;">数据库链接类名、命令类名及记录集类名中都使用包含ce的类。</span></span></p><p><span style="font-size: 10pt;"><span style="font-size: 14pt;">具体代码如下:<br>using system;</span> </span></p><p></p><p></p><p></p><p><span style="font-size: 10pt;">using system.collections.generic;</span></p><p><span style="font-size: 10pt;">using system.componentmodel;</span></p><p><span style="font-size: 10pt;">using system.data;</span></p><p><span style="font-size: 10pt;">using system.drawing;</span></p><p><span style="font-size: 10pt;">using system.text;</span></p><p><span style="font-size: 10pt;">using system.windows.forms;</span></p><p><span style="font-size: 10pt;">using system.data.sqlserverce;</span></p><p><span style="font-size: 10pt;">using system.data.sqlclient;</span></p><p></p><p><span style="font-size: 10pt;">namespace gpsdatareader</span></p><p><span style="font-size: 10pt;">{</span></p><p><span style="font-size: 10pt;"> public partial class frmdamup : form</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> sqlceconnection connmobile;</span></p><p><span style="font-size: 10pt;"> sqlcecommand command;</span></p><p></p><p><span style="font-size: 10pt;"> public frmdamup()</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> initializecomponent();</span></p><p><span style="font-size: 10pt;"> }</span></p><p></p><p><span style="font-size: 10pt;"> private void frmdamup_load(object sender, eventargs e)</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> //获取可执行程序所在目录和数据库文件</span></p><p><span style="font-size: 10pt;"> string sfilepath = system.io.path.getdirectoryname(system.reflection.assembly.getexecutingassembly().getname().codebase) + """dambase.sdf";</span></p><p><span style="font-size: 10pt;"> //连接sql server mobile数据库的连接字符串</span></p><p><span style="font-size: 10pt;"> string connstr = "data source=" + sfilepath + ";persist security info=false;password=admin;";</span></p><p><span style="font-size: 10pt;"> //建立链接</span></p><p><span style="font-size: 10pt;"> connmobile = new sqlceconnection(connstr);</span></p><p><span style="font-size: 10pt;"> try</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> connmobile.open();</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;"> catch (exception ex)</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> messagebox.show("不能正确连接移动数据库!" + ex.message);</span></p><p><span style="font-size: 10pt;"> this.close();</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;"> command = new sqlcecommand();</span></p><p><span style="font-size: 10pt;"> command.connection = connmobile;</span></p><p></p><p><span style="font-size: 10pt;"> string sqlstr = "select * from daminfo where isup='1'";</span></p><p><span style="font-size: 10pt;"> command.commandtext = sqlstr ;</span></p><p><span style="font-size: 10pt;"> sqlcedatareader rs = command.executereader();</span></p><p><span style="font-size: 10pt;"> while (rs.read())</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> listviewitem lv_item = new listviewitem();</span></p><p><span style="font-size: 10pt;"> lv_item.text = rs["rsid"].tostring();</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["rsnm"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["dmprv"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["dmct"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["dmtw"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["el"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add(rs["nl"].tostring());</span></p><p><span style="font-size: 10pt;"> lv_item.subitems.add("未上传");</span></p><p></p><p><span style="font-size: 10pt;"> lv_daminfo.items.add(lv_item);</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;"> rs.close();</span></p><p></p><p><span style="font-size: 10pt;"> if (lv_daminfo.items.count == 0)</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> messagebox.show("没有需要上传的数据!");</span></p><p><span style="font-size: 10pt;"> this.close();</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;">7.2 智能设备连接pc上的sql server<br>智能设备不支持oledb连接方式,只能使用sqlserver .net的连接方式。所以增加system.data.sqlclient引用。在需要连接的类中增加system.data.sqlclient命名空间。</span></p><p><span style="font-size: 10pt;">代码如下:</span></p><p><span style="font-size: 10pt;">using system;</span></p><p></p><p><span style="font-size: 10pt;">using system.collections.generic;</span></p><p><span style="font-size: 10pt;">using system.componentmodel;</span></p><p><span style="font-size: 10pt;">using system.data;</span></p><p><span style="font-size: 10pt;">using system.drawing;</span></p><p><span style="font-size: 10pt;">using system.text;</span></p><p><span style="font-size: 10pt;">using system.windows.forms;</span></p><p><span style="font-size: 10pt;">using system.data.sqlserverce;</span></p><p><span style="font-size: 10pt;">using system.data.sqlclient;</span></p><p></p><p><span style="font-size: 10pt;">private void b_down_click(object sender, eventargs e)</span></p><p><span style="font-size: 10pt;">{</span></p><p><span style="font-size: 10pt;"> string sqlstr;</span></p><p></p><p><span style="font-size: 10pt;"> string connstr = "user id=sa;password=2centit13;initial catalog=dambase;server=" + configinfo.ip + ";connect timeout=30";</span></p><p><span style="font-size: 10pt;"> sqlconnection conn = new sqlconnection(connstr);</span></p><p><span style="font-size: 10pt;"> try</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> conn.open();</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;"> catch (exception ex)</span></p><p><span style="font-size: 10pt;"> {</span></p><p><span style="font-size: 10pt;"> messagebox.show("无法连接到指定的pc数据库!" + ex.message);</span></p><p><span style="font-size: 10pt;"> return;</span></p><p><span style="font-size: 10pt;"> }</span></p><p><span style="font-size: 10pt;">}</span></p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值