RTKLIB 实战指南:从软件部署到实时定位(RTKNAVI 篇)

【Rtklib入门指南】1. Rtklib下载及编译 Rtklib简单介绍、源码下载,以及windows平台下rtklib源码的编译教程 阅读详情

1. 从零开始:RTKLIB 2.4.2 的下载与安装

如果你刚接触高精度卫星定位,RTKLIB 这个名字可能听起来有点技术范儿,别担心,它其实是一个功能强大但又完全免费的开源工具箱。简单来说,它能把普通的卫星定位接收机(比如几百块的单频模块)变成厘米级甚至毫米级的定位神器。今天,我就带你从最基础的软件部署开始,一步步走进实时动态定位(RTK)的世界,核心工具就是 RTKNAVI。我当年第一次用的时候,也踩过不少坑,所以这篇指南会尽量把每一步都掰开揉碎了讲,让你少走弯路。

首先,我们得把软件“请”到电脑上。RTKLIB 的官方发布地址在 GitHub 上,搜索 “rtklibexplorer” 这个用户,你能找到由原作者 Tomoji Takasu 维护的版本库。对于新手,我强烈建议直接使用 2.4.2 这个版本,它非常稳定,社区资料也最全。下载时,你会看到一个名为 rtklib_2.4.2 的压缩包,把它解压到你喜欢的位置,比如 D:\RTKLIB。记住这个路径,后面会经常用到。

解压后,你会看到一堆文件夹和文件,别慌,我们大部分时间只关心 bin 目录。打开 bin 文件夹,里面就是所有可执行程序。RTKLIB 的程序分为两类:GUI(图形界面)和 CUI(命令行界面)。对于初学者,我们当然从图形界面入手。你会看到 rtknavi.exe、rtkpost.exe、strsvr.exe 等,这些就是我们实战的主角。这里有个小技巧:为了以后启动方便,你可以右键点击 rtknavi.exe,选择“发送到 -> 桌面快捷方式”。

安装过程其实到这里就结束了。是的,RTKLIB 是真正的绿色软件,它从不写入 Windows 注册表。这意味着卸载它异常简单——直接删除整个解压出来的文件夹就行,不会在系统里留下任何垃圾。这种设计对喜欢折腾、经常需要切换版本的用户来说非常友好。我第一次用的时候,反复安装卸载了好几次,系统依然干干净净。

不过,有个细节需要注意。这些 GUI 程序(比如 RTKNAVI)会把你的个性化设置,比如窗口位置、上次使用的串口参数等,保存在一个叫 rtknavi.ini 的配置文件里。在 2.4.2 版本中,这个 .ini 文件默认就放在 bin 目录下。如果你是从更老的版本升级过来的,可能需要把旧版的 .ini 文件手动复制到新的 bin 目录下,才能继承之前的设置。这个小文件很重要,建议定期备份。

最后,再介绍一个隐藏的“启动器”——rtklaunch.exe。运行它,会弹出一个包含所有 GUI 程序图标的小窗口,点击就能快速启动对应的工具。你还可以在命令行里给它加上 -tray 参数,让它最小化到系统托盘,随时取用,非常方便。对于需要频繁在多个工具(如 RTKNAVI 和 STRSVR)间切换的场景,这个启动器能帮你节省不少时间。

2. 初识 RTKNAVI:界面与核心概念扫盲

双击打开 rtknavi.exe,一个看起来信息量颇大的主界面就展现在你面前。别被那些按钮和状态图标吓到,我们一步步来拆解。RTKNAVI 的核心任务就一个:实时解算位置。为了实现这个目标,它需要“吃”进两种关键数据:一是来自你设备的原始观测数据(比如伪距、载波相位),二是卫星星历数据(告诉软件卫星在哪里)。软件消化这些数据后,就能吐出高精度的定位结果。

主界面最上方是一排输入流(Input Streams)的配置按钮,分别标着 I、I2、I3…… 等等。这代表了软件可以同时接收多路数据。对于最常见的单基站 RTK 模式,我们通常只需要配置两个:I 作为移动站(Rover)数据入口,I2 作为基准站(Base)数据入口。如果只是做单点定位(精度米级),那只配置 I 就够了。每个按钮旁边的指示灯颜色是理解状态的关键:灰色表示未

RTKLIB源码及介绍 RTKLIB:用于 GNSS 定位的开源程序包 下载 版本 日期 适用于 Windows 的二进制 AP 包 带有源程序的完整包 0.2.0 2006/12/16 —— rtklib_0.2.0.zip(2.8MB) 1.0.0 ... 阅读详情

相关推荐

rtklib一之带你一步一步读懂rtklib 单点定位代码及算法

rtklib中的单点定位算法即代码的解读,读此对单点定位来说想必就够了,如果哪个地方写的不明白,不详细或者错了,请留言。

从零开始 2万+

RTKLIB 之 rtknavi:从入门到高精度定位实战指南

本文是RTKLIB核心工具rtknavi的实战指南,详细介绍了如何从零搭建高精度定位环境。通过手把手配置教学,帮助用户掌握RTK/PPK差分定位技术,实现厘米级定位,并利用rtkplot进行轨迹可视化与精度分析,适用于无人机、测绘等领域的精准定位需求。

g8f9d0s1a2的博客 886

RTKLIB 之 rtknavi:从入门到高精度实时定位实战

本文详细介绍了RTKLIB中的rtknavi工具,从入门到高精度实时定位的实战应用。通过配置参数、数据流设置和精度验证,帮助用户实现厘米级定位,适用于农业无人机、城市测绘等场景。特别强调了RTK差分定位模式的优势和常见问题的解决方案。

weixin_27872611的博客 392

RTKLIB 2.4.2 保姆级安装与配置避坑指南:从下载到RTKNAVI实时定位

本文提供RTKLIB 2.4.2的保姆级安装与配置指南,涵盖从下载到RTKNAVI实时定位的全流程。详细解析目录结构、核心组件及性能优化技巧,帮助用户避开常见陷阱,实现高效GNSS数据处理。特别适合需要精确位置服务的无人机、农业机械等应用场景。

weixin_29246195的博客 484

RTKLIB 2.4.2 保姆级安装与配置指南:从下载到第一个实时定位结果

本文提供RTKLIB 2.4.2的详细安装与配置指南,从软件下载到实现首个实时定位结果的全过程。针对Windows平台优化,包含环境准备、核心模块配置、高级技巧及实战案例,帮助用户避开常见陷阱,快速掌握这一开源GNSS数据处理工具。特别适合需要精确位置服务的测绘、导航领域从业者。

weixin_30485379的博客 528

RTKLIB新手必看:rtknavi.exe从安装到厘米级定位的全流程指南(附样本数据)

本文为RTKLIB新手提供rtknavi.exe从安装到实现厘米级定位的全流程指南,包含样本数据加载、关键参数配置及实时定位验证等实用技巧。通过详细步骤和常见问题排查,帮助用户快速掌握高精度卫星定位技术,适用于测绘、无人机等领域。

weixin_30689307的博客 359

RTK差分定位实战:如何配置RTKLIB连接香港CORS的NTRIP实时流(RTCM3.2)

本文详细介绍了如何配置RTKLIB连接香港CORS的NTRIP实时流(RTCM3.2),实现厘米级RTK差分定位。从硬件选型、软件配置到实战验证,涵盖无人机精准喷洒、地形测绘等应用场景,帮助用户快速掌握高精度定位技术。

weixin_30859423的博客 447

RTKLIB命令行入门指南:从GNSS解算流程到实时定位实战

从GNSS定位的基本概念出发,介绍卫星导航中伪距与载波相位的观测原理,说明RINEX标准格式在数据流通中的核心作用。理解SPP、RTK、PPP三种定位模式的区别与技术价值,是掌握GNSS解算的关键。后处理与实时定位都依赖于清晰的数据处理链路,而命令行工具能够完整呈现每一步处理逻辑,避免图形界面封装带来的盲目试参。在实际工程中,无论是无人机测绘、车载导航还是机器人定位,都需要通过格式转换、数据质量检查与参数灵活配置来完成高精度解算。本文以RTKLIB的命令行程序为主线,逐步演示从rnx2rtkp跑通单点定位,

weixin_29185167的博客 247

RTKLIB代码讲解(四)

RTKLIB关键宏定义与功能解析 本文详细解析了RTKLIB中10类核心宏定义及其应用场景: 参考站位置设置方式(5种): 手动输入坐标/单点平均/文件读取/RINEX头/RTCM电文 用于RTK解算的基准站坐标获取 数据流类型(12种): 涵盖串口/文件/TCP/UDP/NTRIP等输入输出方式 数据格式(17种): 支持RTCM/UBX/RINEX/SP3/NMEA等GNSS协议 访问模式: 读写控制位掩码(0x1读/0x2写/0x3读写) 大地水准面模型(6种): 用于椭球高转正常高,含EGM96/E

m0_65025607的博客 1889

RTK差分定位实战:如何配置RTKLIB连接香港CORS的NTRIP服务获取实时数据流

本文详细介绍了如何配置RTKLIB连接香港CORS的NTRIP服务,实现RTK差分定位获取实时厘米级数据流。从硬件准备到RTKLIB软件设置,再到典型问题排查,提供全流程指南,帮助用户高效利用香港SatRef系统的多卫星系统数据,提升定位精度和应用效果。

weixin_42553471的博客 389

深入理解RTKLIB-rtklib_2.4.3:高精度GPS定位技术的实战解析

RTKLIB是一个开源的GPS软件包,最初由Tomoji Takasu开发。在这一章中,我们将深入探究RTKLIB的最新版本rtklib_2.4.3,理解其核心功能与特性。RTKLIB广泛应用于高精度定位领域,包括但不限于无人机飞行控制系统、车载导航以及农业自动化等。整周模糊度是高精度定位领域中的一个核心概念,它出现在利用载波相位进行卫星定位的过程中。当使用载波相位进行定位时,测量得到的是接收机与卫星之间信号传输路径的相位差的整数倍加上一个小于一个波长的实际相位差。这个未知的整数部分被称为整周模糊度。

weixin_28895791的博客 2398

Multisim实战:从零搭建体温检测报警电路(附完整仿真文件+调试技巧)

本文详细介绍了如何使用Multisim从零搭建体温检测报警电路,涵盖LM35温度传感器、LM358运算放大器等核心器件的选型与连接,以及信号调理、阈值比较和数码管显示等关键电路设计。附赠完整仿真文件和实用调试技巧,帮助电子工程初学者快速掌握体温温度检测系统的设计与实现。

weixin_28285943的博客 294

IEEE论文接收后,收到Proof邮件别慌!手把手教你48小时内搞定校样(附详细截图)

本文详细解析了IEEE论文接收后Proof校样的全流程,从邮件关键信息解码到精准修改标注,提供48小时内高效完成校样的实战指南。涵盖登录技巧、文件验证、修改标注黄金法则及九宫格检查清单,帮助作者避免常见错误,确保论文顺利发表。

weixin_30652491的博客 563

二维卡尔曼滤波位置,速度融合

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

Johnlee2019的博客 8452

ADAS工作原理解析:如何通过智能技术提升驾驶安全

ADAS通过集成传感器、摄像头、雷达、SoC计算单元以及高效的数据融合技术,提供了一系列主动和被动安全功能,如自动刹车、车道保持、自适应巡航控制等。这些功能共同作用,不仅减少了交通事故的发生,还大幅提升了驾驶员的驾驶体验和安全性。随着技术的进步,ADAS的功能将越来越智能,最终迈向全自动驾驶的未来🚗💨。

weixin_43199439的博客 1150

bevformer详解(3): 逐行代码讲解

在这篇文章中,我们将从BEVFormer算法代码入手,深入探究BEV转换的流程。BEVFormer是一种基于Transformer的BEV转换模型,其核心思想是利用自注意力机制和交叉注意力机制,从,并通过Object Query与BEV特征的交互,完成3D目标检测和地图分割等任务。https://developer.baidu.com/article/details/3224715bevformer的网络结构由三部分组成, 模型结构所示,其中的是部分,对于的是的结构,对于部分,沿用的中的decoder部分,

@bangbang的博客 3702

手把手教你学PCIE(2.1.23)--PCIe基本概念:链路速率协商

链路速率协商是一个多步骤的过程,确保发送端和接收端之间的链路速率设置一致。通过初始化链路速率寄存器、发送和接收 TS2 序列、检测链路对端的存在、交换链路速率信息、确定最大链路速率和配置链路速率,可以确保 PCIe 设备之间的数据传输速度最大化,从而提高数据传输效率。初始化链路速率寄存器:设置支持的最大链路速率。发送和接收 TS2 序列:检测链路对端的存在。交换链路速率信息:发送和支持的最大链路速率。确定最大链路速率:选择最小值作为最终链路速率。配置链路速率:更新链路速率寄存器。

MHD0815的博客 1817

【报错】raise pickle.UnpicklingError(_get_wo_message(str(e))) from None_pickle.UnpicklingError: Weigh

File "/opt/conda/envs/py_3.12/lib/python3.12/site-packages/torch/serialization.py", line 1470, in load raise pickle.UnpicklingError(_get_wo_message(str(e))) from None _pickle.UnpicklingError: Weights only load failed.

静谧、淡雅 786

使用MATLAB实现PAC2002轮胎模型的TIR文件解析和模型计算详解

PAC2002轮胎模型是由荷兰TNO公司开发的一种半经验的轮胎模型,用于描述轮胎在不同工况下的力学特性。该模型基于一系列物理和经验参数,通过复杂的数学表达式来模拟轮胎的力学行为,包括纵向力、侧向力、回正力矩等。

qq_38334677的博客 2430

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: Beyond CAD Models: Leveraging NOCS for Category-Level 6D Pose and Size Estimation in Real-World Scen
下一篇: SteamVR2.0插件自定义按钮避坑指南:从绑定到脚本调用的完整流程
gitlab7runner
博客等级 码龄4年 78粉丝 1747原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值