APK:AndroiTS,GPS test+,Cellular-Z
GSV:GPS Satellites in View

1 NMEA语句
1.1 NMEA数据格式
NMEA格式:数据传输以“语句”的方式进行,每个语句均以“$”开头,然后是两个字母的“识别符”和三个字母的“语句名”,接着就是以逗号分割的数据体,语句末尾为校验和,整条语句以回车换行符结束。

$GNGNS,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*xx<CR><LF>
GN:Global Navigation GNSS,表示使用了多个系统的卫星取得位置解算
<1>:UTC时间,hhmmss.ss
<2>:纬度ddmm.mmmmmmm
<3>:纬度标识,N或者S
<4>:经度dddmm.mmmmmmm
<5>:经度标识,E或者W
<6>:定位标识,NN - 未定位,AA - 定位Active
<7>:定位星数
<8>:HDOP值
<9>:海拔高度,单位m
<10>:水平面分离度,单位m
<11>:差分数据时龄
<12>:差分站代号
*xx:校验和

$GPACCURACY,<1>*hh<CR><LF>
去掉前缀$GPACCURACY,后,以逗号分隔,*号表示结束。
<1> 单位为m,表示误差范围

$GPBOD,099.3,T,105.6,M,POINTB,*01
去掉前缀$GPBOD,后,以逗号分隔,*号表示结束。
<1>: 99.3 (运动角度,000 - 359,(前导位数不足则补0)),真北参照系
<2>: T=真北参照系
<3>: 105.6 (运动角度,000 - 359,(前导位数不足则补0)),磁北参照系
<4>: M=磁北参照系

$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,M,<10>,M,<11>,<12>*xx<CR><LF>
去掉前缀$GPGGA,后,以逗号分隔,*号表示结束。
GNGGA:如果使用了多个系统的卫星取得位置解算,传送标识符前缀为GN(Global Navigation / Multi-constellation)
<1>:UTC Time,格式为hhmmss.sss
<2>:纬度,格式为ddmm.mmmm(第一位是零也将传送)
<3>:纬度半球N(北半球)或S(南半球)
<4>:经度,格式为dddmm.mmmm(第一位零也将传送)
<5>:经度半球E(东经)或W(西经)
<6>:定位质量指示,0=定位无效,1=定位有效
<7>:使用卫星数量,从00到12(第一个零也将传送)
<8>:HDOP-水平精度因子,0.5到99.9,一般认为HDOP越小,质量越好
<9>:海拔高度,单位M
<10>:地球椭球面相对大地水准面的高度
<11>:差分时间(从最近一次接收到差分信号开始的秒数,如果不是差分定位将为空)
<12>:差分站ID号0000~1023(前面的0也将被传输,如果不是差分定位将为空)

GPGSA:
PDOP位置精度因子(0.5~99.9)
HDOP水平精度因子(0.5~99.9)
VDOP垂直精度因子(0.5~99.9)

$GPGSV,<1>,<2>,<3>,<4>,<5>,<6>,<7>…<4>,<5>,<6>,<7>*hh(CR)(LF)
去掉前缀$GPGSV,后,以逗号分隔,0-based index;*号表示结束。
GPGSV是反应接收机搜索到定位卫星的相关信息,一次搜星如果搜3-4个卫星即可定位,在环境好的情况下可搜到12个卫星,每一个GPGSV语句最多保存四个卫星的信息,因此超过4颗星,就需要多条GPGSV语句来描述了。一次搜星所有GPGSV称为一个sentence (系列)
<4>,<5>,<6>,<7>组成一个卫星组,有多个卫星组的状态,其中第<7>个字段是SNR。

<1>:一次搜星需要GPGSV语句总数
<2>:当前GSV在整个序列里的编号,第一条编号为1,最后一条等于<1>
<3>:表示当前可视的定位卫星总数
<4>:表示卫星号(PRN码,伪随机噪声码),GPS卫星的PRN码范围是1-32
<5>:表示仰角(Elevation),00~90度
<6>:表示方位角(Heading),000~359度
<7>:信噪比(00~99dB)

$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh<CR><LF>
去掉前缀$GPRMC,后,以逗号分隔,*号表示结束。
​​​除了GPRMC之外还有GPRMA和GPRMB。
GNRMC:如果使用了多个系统的卫星取得位置解算,传送标识符前缀为GN(Global Navigation / Multi-constellation)
<1>:UTC时间,hhmmss(时分秒)格式
<2>:A表示定位(Active),V表示未定位(Void)
<3>:纬度ddmm.mmmm(度分)格式(前面的0也将被传输)
<4>:纬度半球N(北半球)或S(南半球)
<5>:经度dddmm.mmmm(度分)格式(前面的0也将被传输)
<6>:经度半球E(东经)或W(西经)
<7>:地面速率(000.0~999.9节,前面的0也将被传输)
<8>:地面航向(000.0~359.9度,以真北为参考基准,前面的0也将被传输)
<9>:UTC日期,ddmmyy(日月年)格式
<10>:磁偏角(000.0~180.0度,前面的0也将被传输)
<11>:磁偏角方向,E(东)或W(西)
<12>:模式指示(仅NMEA0183 3.00版本输出,A=自主定位,D=差分,E=估算,N=数据无效)

$GPVTG,<1>,T,<2>,M,<3>,N,<4>,K,<5>*hh
去掉前缀$GPVTG,后,以逗号分隔,*号表示结束。
<1>: 运动角度,000 - 359,(前导位数不足则补0),真北参照系
T:真北参照系
<2>: 运动角度,000 - 359,(前导位数不足则补0),磁北参照系
M:磁北参照系

1.2 PRN编号
在一个导航系统(GPS或BD)里,一颗卫星对应唯一的PRN。Refer to GPGSV。
BeiDou:1 - 37
GPS:1 - 32
SBAS:33 - 64
GLONASS:65 - 96
QZSS:193 - 197
BeiDou和GPS的PRN有重叠,通过NMEA语句的前缀GP或者BD区分。

1.3 地图
百度地图和高德地图使用了GxRMC和GxGSV做为地图的数据源。

1.4 ToD语句
GPGGA, GPRMC, GPZDA

2 GPS卫星信号解析
Apple Watch Ultra:民用GPS通常只使用L1波段,L5是第三种民用波段。
- GPS卫星的星历:描述卫星的有关的轨道信息
- GPS信号是一个CDMA(码分多址)信号,一般来说,GPS接收机对卫星信号的搜索是一个“满天搜星”的过程,即要搜索天空中的所有卫星对应的伪随机码。如果预先知道任意时刻所有卫星的概略位置,接收机就可以只复现本时刻天空中存在卫星的伪随机码进行搜索。这样可以使GPS接收机在搜索卫星时做到有的放矢,缩短捕获卫星信号的时间
- GPS卫星编号从1到32
- 每个帧为1500bits,而卫星是以50bit/s(bps)的速率来发射信号,因此需要30s的时间才能将完整的一帧数据传完,每个帧包含5个子帧
- Subframe 1-3 包含一颗卫星的所有星历参数,每帧都相同,重复25次主帧
- Subframe 4-5 包含所有卫星的历书参数,每帧都不同
- Subframe 1 中包含WN(Week Number,占用10个bit,0到1023),GPS周;翻转日期分别是2019-4-6和2038-11-20
- Subframe 4 中含有UTC时间

3 MTK GNSS
3.1 MT3333
Telit's SL871L is the evolved variant of the SL871 family of modules based on the low-power Mediatek MT3333 (IF 4-bit ADC, refer to MT3339 datasheet), which uses 2 ADC to check if antenna is short or open. MT2523G also integrates MT3333 (IF 4-bit ADC, refer to MT3339 datasheet).

3.2 SDIO
SDIO设备扫描从mmc_rescan函数开始,mmc_rescan函数中分别使用400k、300k、200k,100k的速率调用mmc_rescan_try_freq进行扫描,只要扫描到了设备,就会退出扫描。所以如果在400k速率时扫描到了SDIO设备,后面3种速率的扫描就不需要再执行。

CMD5响应格式为R4,返回的OCR(Operating Conditions Register)中包含3 bit的Number of IO functions,读出来的值是最大支持的功能索引。

3.3 MT6630
EPO: Extended Prediction Orbit
FLP: Fused Location Provider
MNL:Mediatek Navigation Library
NLP: Network Location Provider
STP:Serial Transport Protocol
WMT:Wireless Management Tools

MT6630有2个中断pin,分别是WIFI_INT_B、BGF_INT_B(其中BGF表示BT/GPS/FM interrupt pin),硬件设计时,只需二选一。
mnld读取/dev/stpgps,计算获得NMEA语句,通过路径是mtk_mnl2hal的socket发给GNSS HAL。
FWK->JNI->HAL->MNLD

Android 10中IGnss支持3个版本:2.0、1.1、1.0。
base/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
android_location_GnssLocationProvider_set_gps_service_handle()
system/sepolicy/vendor/hal_gnss_default.te

3.4 Android GNSS API
Get GPS status,包含gps字符串说明已经打开了GPS:
settings get secure location_providers_allowed

当Build.VERSION.SDK_INT >= Build.VERSION_CODES.N时,
使用android.location.OnNmeaMessageListener,
否则使用android.location.GpsStatus.NmeaListener。

Android 10在xml文件中添加GPS权限已经无效了,需要在Activity中主动调用requestPermissions()请求权限,并等待onRequestPermissionsResult()返回的结果。

[18-Mar-2022] 要在logcat中看到NMEA语句,需要调整log level到D,不是V,否则还是看不到log。
setprop log.tag.<TAG> D

4 ublox
4.1 u-center
Download u-center from u-blox website.
查询目前串口波特率配置:
Tools>>GNSS Configuration
选择支持哪些NMEA消息输出:
UBX>>CFG (Config)>>MSG (Messages)
串口配置:
UBX>>CFG (Config)>>PRT (Ports)
Period配置:
UBX>>CFG (Config)>>RATE (Rates)

UBX-CFG-CFG - 将发送到芯片中的当前数据保存到外部SPI Flash中
UBX-CFG-RINV - Remote Inventory,数据保存在外部SPI Flash中,用途是保存一个自定义的字符串,下次启动时,软件用来识别是否做过UBX-CFG-CFG
[18-Mar-2022] Clear NVM of BBR and Flash: B5 62 06 09 0D 00 FF FF 00 00 00 00 00 00 FF FF 00 00 03 1B 9A
UBX-NAV-EOE - 每秒NMEA和UBX消息的结束

以GxRMC作为每秒的第一条语句解析出时间,接着的语句时间都用GxRMC中的时间,一直到下个GxRMC开始。The sentence sequence starts with RMC.

4.2 UBX-CFG-MSG
proprietary UBX message configurations format:
[class ID, message ID, frequency]
- 根据上面的3个参数,设置某条UBX消息的输出频率
- 根据上面的3个参数,用来轮训(主动读)某一条UBX消息

4.3 M8030有源天线状态读取
M8030 integrated two zero-IF 5-bit ADCs.
[25th-Mar-2022]
PIO14: ANT_DET, for power
PIO15: ANT_SHORT_N
PIO16: ANT_OFF
ublox提供了M8030天线检测的参考设计,天线检测使用了3个PIO,M8030读取3个PIO的值,计算出天线的状态后,通过UBX-MON-HW.aStatus和UBX-MON-HW.aPower传给Host CPU。
还有一些OEM没有使用ublox的参考设计,而是使用了不同于ublox的参考设计中的3个PIO,M8030读取3个PIO的值后,通过UBX-MON-HW.pinVal将PIO的值直接传给Host CPU,Host CPU根据PIO的真值表,判断天线是开路(Open Circuit Detection)还是短路(Short Circuit Detection)等。

4.4 RTCM3
RTK是通过在某个地方设定一个基站base,然后在自动驾驶车辆上面装一个rover(这个单词一般直接翻译为车辆)。base是固定的,这样base就可以接收GPS的载波相位A。然后rover就可以在不停的移动过程中收到来自卫星的载波相位B和base的载波相位A。A和B做差分,就可以得到载波相位的误差C,rover利用这个误差C对自身的B不停的进行修正,这样就可以得到1~2cm的精确度。
RTK数据通讯有两种方式,一种为电台模式,另外一种为网络模式。
RTCM3 is used by BMW Integration Platform Next 2025 (IPNext25), successor of BDC/BCP.

4.5 时间戳转换为UTC时间
import time
print time.asctime(time.localtime(时间戳))
print time.asctime(time.gmtime(时间戳))

4.6 NMEA语句参数解析
使用atoi()和atof()将字符串Argx转换成对应的整数和浮点数
[25th-Mar-2022]
C++ function template for dynamic memory allocation.
SPC: shared_ptr class

4.7 GPS的冷启动、温启动和热启动
warm-start:距离上次定位的时间超过两个小时的启动。 
hot-start:距离上次定位的时间小于两个小时的启动。

4.8 u-center TCP client
1) connect USBEthernet to Android device
ifconfig eth0 192.168.5.99/24 up
2) connect USBEthernet cable to Windows
Configure Windows static IP addr to 192.168.5.100/24
3) Windows u-center
[Receiver] [Connection] [Network connection]
tcp://192.168.5.99:65501
4) Android
netstat -apnt

4.9 debug
1) USB IN token sends too fast to cause NMEA dropped
2) external flash bit flip
3) two continous NAV-PVT have same UTC

5 Android GPS
5.1 Android Location Provider加载流程
LocationManagerService
->
loadProvidersLocked
->
config_locationProviderPackageNames
->
createAndBind - 获得后台APK Service的Binder接口

in framework/base/packages/FusedLocation/src/com/android/location/fused/
in framework/java/com/qualcomm/location/izatserviceprovider/provider/IzatProviderEngine.java

5.2 Android GPS数据上报流程
in JNI com_android_server_location_GnssLocationProvider.cpp
android_location_GnssLocationProvider_init()
GnssCallback::gnssLocationCb()

in framework GnssLocationProvider.java
reportLocation()
reportNmea(long timestamp)

in framework LocationManagerService.java
reportLocation()
handleLocationChangedLocked()

in framework GnssStatusListenerHelper.java
onNmeaReceived()

用户层回调类
LocationListener.java
当Build.VERSION.SDK_INT >= Build.VERSION_CODES.N时,
使用android.location.OnNmeaMessageListener,
否则使用android.location.GpsStatus.NmeaListener。

6 USB host抓包方法
6.1 sniff原理
binary格式路径:/dev/usbmonX
text格式路径:/sys/kernel/debug/usb/usbmon

获得usbmon的主设备号:cat /proc/devices
创建binary节点:
mknod /dev/usbmon0 c $major 0
mknod /dev/usbmon1 c $major 1
mknod /dev/usbmon2 c $major 2

Android ueventd进程根据uevent事件创建设备节点,其配置文件ueventd.rc不起实际作用,只是对创建的设备节点文件属性做设置。usbmon的子系统就是usbmon,而ueventd只处理了子系统usb并且在目录/dev/bus/usb下创建设备节点,为了使ueventd自动创建/dev/usbmonN节点,需要在ueventd中增加处理usbmon子系统。

6.2 usbmon tcpdump
1)mount -t debugfs none_debugs /sys/kernel/debug
2)cat /sys/kernel/debug/usb/devices - 确定usb的总线号
3)tcpdump -D
4)tcpdump -i usbmon1 -s 128 -w /data/usb_sniff.pcap &
5)killall tcpdump
6)wireshark工具打开usb_sniff.pcap
7)wireshark过滤:usb.src == "1.6.1" and usb.dst == "host" - 改到对应的USB bus_no.addr.ep_no

Intel APL (Gen9, A39X0) 8-port MPH xHCI
usbmon1:xHCI LF/HS/HS
usbmon2:xHCI SS

7 USB Bulk传输
7.1 ZLP
USB主机发一个IN token,如果从机CPU不能实时响应,可以回复一个空数据包,这种情况是可以接受的。

7.2 APL xHCI Scheduler Async Delay
Datasheet
21.1 xHCI - including OTG MUX Registers
21.2 xHCI PCI Config Registers
21.3 DBC
21.4 DWC3
21.5 DWC3
21.6 xHCI Proprietary Registers
21.7 DWC3 PCI Config Registers
21.9 DWC3 PCI Config Registers

寄存器地址:PCI_BAR0 + 80D4h
在控制或者Bulk令牌传输之间插入延时,否则IN或者OUT令牌发送太快会导致ublox M8030全速设备丢包。

7.3 USB Bulk传输速度计算
- Full-speed
每个frame最大可以传输19个Bulk包,每个Bulk包最大是64 Bytes,所以其最大传输速率是:19 x 64 x 1000 = 1.16 MB/s。
- High-speed
USB 2.0在每个微帧中最大可传输13个Bulk包,每个Bulk包最大是512 Bytes,而每个微帧长固定为125 μs,所以其最大传输速率为:13 x 512 x 8 x 1000 = 51 MB/s。
- Super-speed
USB 3.0在每个微帧中最大可传输13个Bulk包,每个Bulk包最大是1024 Bytes,而每个微帧长固定为125 μs,所以其最大传输速率为:13 x 1024 x 8 x 1000 = 102 MB/s。

7.4 QCOM USB GNSS
cat /sys/kernel/debug/smd/tbl

/usr/bin/quectel-gps-handle
uses /dev/ttyGS0 to print NMEA to host
uses /dev/smd7 to communicate with BB

8 strace
strace -e epoll_wait -x -p $PID
strace -p $PID -tt -T -s 128 -x 2>&1 | grep "read(17"

捕获物理串口的read()数据,strace必须带-f参数,否则捕获不到read()数据。
strace -p $PID -x -tt -T -f -e trace=read -e read=$FD

9 URLs
NMEA data
http://www.gpsinformation.org/dale/nmea.htm

各种时间换算关系
http://leapsecond.com/java/gpsclock.htm

10 Abbreviations
10.1 General
AGPS LOC:Location
AGPS MSA:MS-Assited
AGPS MSB:MS-Based
AGPS SUPL:Secure User Plane Location,安全用户平面
AGPS ULP:User Location Plane
AGPS NI:Network Initiated,网络发起的定位
AGPS SI:Subscriber Initiated,用户发起的定位
BBR: Backup RAM
C/A码:Coarse / Acquisition Code,粗码
CNR:Carrier Noise Ratio
DR:Dead Reckoning,使用ACC和GYRO做航位推算
FLP:Fused Location Provider
Garmin:名字来自于两位创始人名字前三位字母组合(Gary Burrell和Min Kao)
GPS XTRA:高通提供的一个可以下发星历信息的解决方案,类似于MTK EPO,都是辅助定位用的
GGA: Global Positioning System Fix Data,定位信息
GLL: Geographic Position, Latitude/Longitude,地位地理信息
GNRMC:Global Navigation Recommended Minimum sentence C,多模推荐定位信息
GPRMC:GPS Recommended Minimum sentence C,GPS推荐定位信息
GSA: GPS DOP and Active Satellites,当前卫星信息
GSV: GPS Satellites in View,可見卫星星历
MTK: Airoha, Econet, ILITEK, Mstar, Nephos, Richtek, Zelustek
MT2523G:G表示集成了GPS芯片MT3333
MTK EPO: Extended Prediction Orbit
MTK GPS MNL:Mediatek Navigation Library
P码:Precise Code,精码
PGRM:Proprietary Garmin
PMTK:Proprietary MTK
QDR:Qualcomm Dead Reckoning
QMI_PDS:QMI Position Determination Service - for GPS
QZSS:Quasi-Zenith Satellite System,准天顶卫星系统
SBZ:Should Be Zero
USB BH reset:Bigger Hammer or Brad Hosler,表示warm reset;you may be confused why the USB 3.0 spec calls the same type of reset "warm reset" in some places and "BH reset" in other places. "BH" reset is supposed to stand for "Big Hammer" reset, but it also stands for "Brad Hosler". Brad died shortly after the USB 3.0 bus specification was started, and they decided to name the reset after him. The suggestion was made shortly before the spec was finalized, so the wording is a bit inconsistent.
VTG: Track Made Good and Ground Speed,地面速度信息
VZW:Verizon Wireless AGPS Location Provider
ZDA: Time & Date,时间日期信息

10.2 ublox
NAV-DOP:Dilution of Precision,精度因子,ublox私有的UBX消息包
NAV-PVT:Position Velocity and Time(UTC),ublox私有的UBX消息包;fixType表示定位有没有成功标志字段,velN表示NED north velocity
RTCM:Radio Technical Commission for Maritime services,海事无线电技术委员会
RTK:Real-Time Kinematic
ublox M8T:Multi-constellation 8 Timing,多重星系

10.3 CarPlay
PASCD:Proprietary Apple Vehicle Speed Data,for CarPlay
PAACD:Proprietary Apple Acc Data,for CarPlay
PAGCD:Proprietary Apple Gyro Data,for CarPlay

Android GPS开发总结相关推荐

  1. android 定位服务源码,android gps定位app源码(GpsTracker)

    [实例简介]做到了 gps 开启关闭后的提醒 以及地理位置记录(经纬度) [实例截图] [核心代码] package android.gpstracker; import android.app.Ac ...

  2. Android GPS中间层驱动开发调试

    ~.Android GPS中间层驱动开发调试小结  // rkeclair_v1.02_sdkdemo , ublox芯片       调通GPS功能,用串口可打印出位置数据,并可在gpslogger ...

  3. android agps,Android应用开发Android GPS ——AGPS源码分析及配置

    本文将带你了解Android应用开发Android GPS --AGPS源码分析及配置,希望本文对大家学Android有所帮助. " Android Framework GPS --AGPS ...

  4. 从Android界面开发谈起(转)

    原文地址:http://blog.csdn.net/nieweilin/article/details/5967815 这篇文章没有打算有一个很好的逻辑去介绍android的某个方面,全盘大致上就是我 ...

  5. 《Android/OPhone 开发完全讲义》样章和目录下载

    <Android/OPhone 开发完全讲义>一书已经出版,现提供3个样章(第1.8和14章)试读,欢迎提出宝贵意见. 购买:互动网(china-pub) 内容简介 本书近500页,共25 ...

  6. 《Android传感器开发与智能设备案例实战》——第1章,第1.2节Android的巨大优势...

    本节书摘来自异步社区<Android传感器开发与智能设备案例实战>一书中的第1章,第1.2节Android的巨大优势,作者 朱元波,更多章节内容可以访问云栖社区"异步社区&quo ...

  7. linux内核epub,Android底层开发技术实战详解——内核、移植和驱动(第2版)[EPUB][MOBI][AZW3][42.33MB]...

    内容简介 本书从底层原理开始讲起,结合真实的案例向读者详细介绍了Android内核.移植和驱动开发的整个流程.全书分为21章,依次讲解驱动移植的必要性, Goldfish.OMAP内核和驱动解析,显示 ...

  8. Android程序开发0基础教程(一)

    程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操作系统, ...

  9. Android 驱动(3)---Android驱动开发知识储备

    Android驱动开发知识储备 Android软件层次结构 (1)操作系统层 显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Bind ...

  10. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

最新文章

  1. CentOS下的Memcache安装
  2. 基于Windows 2008 R2 Core的SQL Server 2008 R2 Cluster部署(Step by Step)
  3. linux 内核编译 错误 fatal error: linux/compiler-gcc6.h: No such file or directory
  4. SparkR:数据科学家的新利器
  5. 菏泽合村并居促土地流转-农业大健康·万祥军:集约谋定高效
  6. boost::hana::is_embedded用法的测试程序
  7. 专升本的学生和高考考上本科的学生一样吗
  8. 如何解决Mac苹果电脑使用Safari浏览器时无法在地址栏搜索?
  9. Ubuntu 18.04 8T硬盘挂载
  10. jpg怎么合成一份_怎么将多个jpg合并成一个pdf
  11. 推荐系统之从石器时代到青铜时代的演进史
  12. python之jieba分词库
  13. 分享79个ASP江湖论坛源码,总有一款适合您
  14. 初学者如何查阅自然语言处理(NLP)领域学术会议
  15. 夏普打印机卡纸后出现 错误代码h5-01的清除方法
  16. Linux:objdump命令解析
  17. Vue3第四篇:集成Windi.css
  18. 互联网产品设计进阶(11)产品设计师的职责
  19. AutoCAD安装包
  20. vue里面的el只能绑定id吗_VUE初级教程详解

热门文章

  1. 计算机监控系统sacad,一套幼儿园智能化弱电CAD设计图,可以作为投标技术文件模板...
  2. 惠普打印机墨盒更换教程_惠普打印机安装步骤 打印机墨盒加墨方法
  3. Pascal voc 2012 数据集简介
  4. iOS:特殊符号大全
  5. SDL游戏开发之七-虚拟摇杆
  6. 苹果/微软/特斯拉的产品美学——向丑而生?
  7. matlab里wblrnd函数,matlab随机函数
  8. urlencode编码基本概念_URLencode编码简析
  9. JAVA--文本编辑器
  10. 2009程序员考试大纲