UWB定位: 第二篇 . 原理

蓝牙RSSI,蓝牙AoA,UWB哪个定位精度高? 蓝牙RSSI定位是根据信号强度和距离的关系来计算位置的,由于信号强度与距离是非线性关系,加上信号强度受很多因素的影响会不稳定(如遮挡、不同方向、不同广播通道等),所以定位精度比较低。蓝牙RSSI定位又分两种定位方式,一种是区域定位,一种是三角定位。采用蓝牙信标+蓝牙网关的方式可以实现区域定位,采用蓝牙信标+蓝牙工卡+蓝牙网关的方式可以实现三角定位,蓝牙工卡扫描蓝牙信标的信号,并将信号最强的3个数据转发给蓝牙网关,蓝牙网关将数据转发给服务器进行位置解算。......... 阅读详情

UWB定位系列专题:




定位方案

接收信号强度指示(RSSI)

RSSI(Receive Signal Strength Indicator)通过测量无线信号在接收端的功率大小并根据无线信号的Friis传输模型计算出收发端之间的距离,
P r [ d B m ] = P t [ d B m ] + G t [ d B ] + G r [ d B ] − L [ d B ] − 20 log ⁡ 10 ( 4 π d / λ ) ⇓ d = λ 4 π 1 0 ( P t − P r + G t + G r − L ) / 20 \begin{gathered} P_r[dBm] = P_t[dBm] + G_t[dB] + G_r[dB] - L[dB] - 20\log_{10}(4\pi d/\lambda) \\ \Downarrow \\ d = \frac{\lambda}{4\pi} 10^{(P_t - P_r + G_t + G_r - L)/20} \\ \end{gathered} Pr​[dBm]=Pt​[dBm]+Gt​[dB]+Gr​[dB]−L[dB]−20log10​(4πd/λ)⇓d=4πλ​10(Pt​−Pr​+Gt​+Gr​−L)/20​
其中, P r P_r Pr​/ P t P_t Pt​分别表示接收/发送信号功率级, G r G_r Gr​/ G t G_t Gt​分别表示接收/发送天线增益, L L L表示PCB、连接线、连接器等带来的损耗, d d d表示设备间距离, λ \lambda λ表示无线信号的中心波长。

从Friis传输模型中可以看出,RSSI的测距结果受收发天线设计,多径传播,非视距传播,直接路径损耗等环境因数影响较大,实际应用中测距精度~10m量级,远低于基于时间戳测距的方法,因而基于RSSI的方法很少直接用于UWB定位。

飞行时间(TOF) / 到达时间(TOA)

TOF(Time of Flight)/TOA(Time of Arrival)通过记录测距消息的收发时间戳来计算无线信号从发送设备到接收设备的传播时间,乘以光速然后得到设备间的距离。根据测距消息的传输方式不同可分为单向测距和双向测距,其中单向测距中测距消息仅单向传播,为获得设备间的飞行时间需要双方设备保持精确的时钟同步,系统实现复杂度和成本较高,而双向测距对双方设备的时钟同步没有要求,系统实现复杂度和成本很低,因而我们主要关注双向测距这种方案。

双向测距(TWR)

TWR示意图

TWR(Two-Way Ranging)方法需要设备间支持双向通信,通过UWB信号收发时间戳计算UWB信号的往返时间然后乘光速从而获得两个设备间的实际距离信息。

  • 单边双向测距(SS-TWR)

    SS-TWR(Single-Sided Two-Way Ranging)算法中测距请求设备发起测距请求,而测距响应设备监听并响应测距请求,然后测距请求设备利用所有时间戳信息计算出设备间的飞行时间。

    • 测距流程
      SS-TWR

      具体的,SS-TWR算法中设备A发起测距请求信息,设备B响应测距并返回消息处理时延 T r e p l y T_{reply} Treply​,设备 A A A收到响应消息后计算出消息的往返时延 T r o u n d T_{round} Tround​,然后即可计算出设备A,B间的飞行时间: T p r o p = 0.5 ⋅ ( T r o u n d − T r e p l y ) T_{prop} = 0.5 \cdotp (T_{round} - T_{reply}) Tprop​=0.5⋅(Tround​−Treply​)。

    • 距离计算与误差分析

      假定设备A,B的晶振频率偏移分别为 e A e_A eA​, e B e_B eB​,有
      T ˘ r o u n d = ( 1 + e A ) ⋅ T r o u n d T ˘ r e p l y = ( 1 + e B ) ⋅ T r e p l y \begin{gathered} \breve{T}_{round} = (1 + e_A) \cdotp T_{round} \\ \breve{T}_{reply} = (1 + e_B) \cdotp T_{reply} \\ \end{gathered} T˘round​=(1+eA​)⋅Tround​T˘reply​=(1+eB​)⋅Treply​​
      带入 T ˘ p r o p = 0.5 ⋅ ( T ˘ r o u n d − T ˘ r e p l y ) \breve{T}_{prop} = 0.5 \cdotp (\breve{T}_{round} - \breve{T}_{reply}) T˘prop​=0.5⋅(T˘round​−T˘reply​),此外, T p r o p = 0.5 ⋅ ( T r o u n d − T r e p l y ) T_{prop} = 0.5 \cdotp (T_{round} - T_{reply}) Tprop​=0.5⋅(Tround​−Treply​),有
      T ˘ p r o p = 0.5 ⋅ ( T r o u n d − T r e p l y ) + 0.5 ⋅ ( e A T r o u n d − e B T r e p l y ) ≃ T p r o p + 0.5 ⋅ ( e A − e B ) ⋅ T r e p l y \begin{aligned} \breve{T}_{prop} &= 0.5 \cdotp (T_{round} - T_{reply}) + 0.5 \cdotp (e_A T_{round} - e_B T_{reply}) \\ &\simeq T_{prop} + 0.5 \cdotp (e_A - e_B) \cdotp T_{reply} \\ \end{aligned} T˘prop​​=0.5⋅(Tround​−Treply​)+0.5⋅(eA​Tround​−eB​Treply​)≃Tprop​+0.5⋅(eA​−eB​)⋅Treply​​
      从而SS-TWR的测距误差为:
      T ~ p r o p ≜ T ˘ p r o p − T p r o p = 0.5 ⋅ ( e A − e B ) ⋅ T r e p l y \tilde{T}_{prop} \triangleq \breve{T}_{prop} - T_{prop} = 0.5 \cdotp (e_A - e_B) \cdotp T_{reply} T~prop​≜T˘prop​−T

UWB定位原理详细介绍 Hello大家好我是小智,今天我来给大家介绍下超宽带的定位原理,首先我们来讲下什么是UWB技术。 超宽带(Ultra Wide Band)简称UWB,和我们熟悉的WIFI、蓝牙技术一样属于通信技术的一种,UWB是一种无线载波通信技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,其所占的频谱范围很宽,右图是一种典型的正弦载波信号图。 UWB这种技术有什么特点呢? UWB系统结构实现简单;2.具有高速的数据传输能力;3.功耗低;4.安全性高;5.多径分辨能力强;6.可用于精确定位等特点。 UWB. 阅读详情

相关推荐

UWB定位系统

1 背景: 这是之前研一的时候一直在做的项目。老师好像从Decawave海南那边的研究所得到了一套不知道是要淘汰还是没有上市的定位测试系统。已经有了针对DW1000的外围硬件PCB设计,我们基于这些进行后续的开发。最终目标是完成一套能够在监狱使用,定位监狱服刑人员的系统。 2 系统组成: 硬件分为基站(Anchor)和信标(Tag),软件分为下位机的硬件在跑得嵌入式软件和上位机PC在跑得解算和GUI软件。 基站关键部分是ATSAM4E8+DW1000,信标关键部分是STM32+DW1000 软件下位机C语言

weixin_44139651的博客 1万+

Decawave UWB定位原理

先来看看UWB 在百科中的定义:UWB(Ultra Wideband)是一种无载波通信技术,利用纳秒至微微秒级的非正弦波窄脉冲传输数据。有人称它为无线电领域的一次革命性进展,认为它将成为未来短距离无线通信的主流技术。 总的来说,UWB在早期被用来应用在近距离高速数据传输,近年来国外开始利用其亚纳秒级超窄脉冲来做近距离精确室内定位, UWB又名超宽带。UWB(Ultra Wideband)无线通信是...

sanshixionglueluelue的博客 1万+

UWB定位原理

UWB是什么? UWB(Ultra Wideband)超宽带技术是一种全新的、与传统通信技术有极大差异的通信新技术。它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或纳秒级以下的极窄脉冲来传输数据,从而具有GHz量级的带宽。 UWB与传统的窄带系统相比有什么区别? 超宽带系统与传统的窄带系统相比,具有穿透力强、功耗低、抗多径效果好、安全性高、系统复杂度低、能提供精确定位精度等优点。因此,超宽带技术可以应用于室内静止或者移动物体以及人的定位跟踪与导航,且能提供十分精确的定位精度。 UWB的

u010783226的专栏 2878

一款UWB工牌定位标签的原理和特点

UWB定位是指特定的一种定位方式,而高精度定位是一些定位技术的统称。UWB定位是高精度定位的一种。 超宽带技术利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽,并且时间分辨率较高。传统的定位技术是根据无线正弦信号的飞行时间或者信号强弱来判别物体位置,但是易受多径或外界环境的影响,定位出的位置与实际位置存在误差,波动较大,定位精度不高。 UWB定位技术是室内定位技术的一种,它是现今室内定位技术中发展前景较高的一种具有穿透力强、功耗低、抗多径效果好、安全性高、系统复杂度低、能提供精确定位精度等优点。

weixin_46632654的博客 5422

UWB定位技术原理及场景应用的简单介绍

谈到定位技术我们并不陌生,从车辆导航到外卖、打车软件,定位技术已经和我们的生活密不可分。通常我们按照使用场景将定位技术分为室内定位和室外定位两种,室外定位主要依赖于GPS、北斗、GLONASS、GALILEO这些全球卫星定位导航系统,此外还有差分定位技术、电信运营商的基站蜂窝网定位技术;室内定位技术主要是蓝牙、WiFi、Zigbee、RFID、地磁、UWB等无线技术。今天主要与大家分享的超宽带UWB无线定位原理。 什么是UWB? UWB全称Ultra Wide Band,超宽带技术。通过发送和接收极窄脉冲来

weixin_46367472的博客 5832

UWB定位: 第一篇 . 简介

UWB定位: 第一篇 . 简介背景介绍室内定位系统(IPS)基于位置服务(LBS)超宽带(UWB)技术UWB定位系统无线定位方案比较UWB定位应用UWB定位面对的挑战 背景介绍 室内定位系统(IPS) 自20世纪70年代美国开始研制全球定位系统GPS(Global Positioning System),并于1994年建成以来,其在军事、工业、民用等领域的应用取得了巨大成功。然而,由于GPS采用U...

drivextech的博客 2676

UWB定位记录一(UWB基本介绍)

最近又回归到搞UWB定位的项目,在此也写下博客记录下学习过程并供大家参考。这第一篇主要是对UWB进行基本介绍 UWB(Ultra Wide Band)我们一般叫做超宽带通信,顾名思义最主要特征是带宽很宽,远大于现存的窄带通信系统(包括802.11系列和2/3/4和5G中的sub6G)。如果一个无线电拥有超过中心频率20%的相对带宽,或者拥有500MHz以上的绝对带宽,我们称之为是UWB无线电系统。如图3-1所示。 传统UWB通信系统中,我们不需要「正弦载波」作为载体,而是...

众缈之门的博客 3300

在 PyCharm 中使用 Copilot

此外,要在 PyCharm 中使用 GitHub Copilot,您必须有效订阅 Copilot。在 PyCharm 中安装 GitHub Copilot 后,您现在可以将其用作项目的扩展。此外,它很容易安装在不同的 IDE 平台上,您还可以为特定编程语言启用 GitHub 插件。此外,按照以下步骤,您可以轻松地在 PyCharm 中安装 GitHub Copilot。此外,在 IDE 上使用 GitHub Copilot 时,您可以使用一些快捷方式。

一览无遗 1万+

预处理详解(三)—— 命令行定义 + 条件编译 + 文件包含

文章目录前言 前言

2021dragon的博客 2188

如何处理NC数据?(Python和IDL语言实现)

如何处理NC数据?(Python和IDL语言实现) NetCDF(network Common Data Form)网络通用数据格式是一种面向数组型并适于网络共享的数据的描述和编码标准。目前,NetCDF广泛应用于大气科学、水文、海洋学、环境模拟、地球物理等诸多领域。用户可以借助多种方式方便地管理和操作 NetCDF 数据集。(参考自:https://zhuanlan.zhihu.com/p/129351199) 在我看来,nc和hdf有异曲同工之妙,我用的数据以hdf结构为主(HDF:层次文件格式,相当于

zhanglingfeng1的博客 4636

LabVIEW通过ActiveX控件实现与三菱FX5U PLC的高效数据交互

本文详细介绍了如何利用LabVIEW的ActiveX控件,通过三菱官方MX Component工具包实现与FX5U PLC的高效数据交互。文章从环境配置、控件插入到实战代码解析,系统讲解了连接建立、数据读写及资源释放的全流程,并提供了关键的避坑指南,帮助工程师快速构建稳定可靠的上位机通讯系统。

weixin_29197051的博客 373

二维otsu算法python_OpenCV-Python系列之OTSU算法

上一个教程中,我们谈到了关于图像二值化的两种方法,一种是固定阈值法,另一种是自适应阈值法,总的来说,自适应阈值法在某些方面要由于固定阈值法,但还没完,这次我们将隆重介绍我们的重量级选手,也就是OTSU算法(又称为大津算法和最大类间方差法)。最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像...

weixin_28834169的博客 1426

HTML流光爱心(完整代码)

HTML语言实现红蓝色流光爱心效果的完整代码。

AIGC 1万+

OpenClaw Manager Pro - 可视化管理工具

OpenClaw Manager Pro 是一个现代化的 Web 管理界面,用于管理多个 OpenClaw Gateway 实例。🎨美观的界面:深色主题,渐变设计,现代化 UI📡实时监控:WebSocket 实时推送状态和日志🔧完整管理:创建、编辑、删除、启动、停止 Gateway📊多渠道支持:飞书、Telegram、Discord、Slack、微信、钉钉🧩技能管理:可视化配置 61+ 个技能🌍跨平台:支持 macOS、Linux、Windows使用自定义模型系统会自动在中创建},

Maynor的博客 3087

知识图谱设计简记

知识图谱是一种语义化的知识表示框架,通过实体-关系-属性三元组形式表达现实世界关联。其核心价值在于关联化整合数据、支持可解释性推理和赋能智能化应用。知识图谱可分为通用型和领域型两类,基本构成包括实体、关系、属性等基础元素,以及本体和实例等架构层元素。设计方法主要有自上而下、自下而上和混合式三种,需遵循业务导向、一致性等原则。在建模时需要明确属性与实体的判断标准,规范处理关系的方向性与对称性,并合理构建多重关系。主流技术框架如RDF和属性图体系均支持多重关系建模,选择需考虑业务需求。本体作为知识图谱的概念骨架

生活在别处 362

深度学习工具包 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")

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

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

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: UWB定位: 第一篇 . 简介
下一篇: UWB定位: 第四篇 . Apple Iphone11 U1芯片 & Apple UWB专利
drivextech
博客等级 码龄7年 73粉丝 12原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值