如何把朋友圈视频导出到U盘限制资料文件外传,防止U盘串口导出,防止数据泄露?

过滤驱动的概念
有的公司采用技术手段禁止员工使用U盘,是为了防止员工通过U盘将敏感数据带出公司,本质上是禁止敏感数据通过USB接口流出。USB接口比较复杂。本章
讨论一个类似但是简单得多的设备:串口。要禁止使用串口非常容易(给串口贴上封条,或者写一个简单的程序始终占用串口),但是要区别处理,允许非机密数据
流出,而禁止机密数据;或者要记录串口上流过的数据,然而又不影响其他的程序使用串口,就有一定难度了。这一章中,我们通过给串口设备增加一个过滤层来实
现这个功能。
而下一章中,我们则把目标转移到键盘,除了过滤之外,我们将进一步探讨是否有方法保证从键盘输入的密码不被隐藏的黑客软件通过类似的过滤方式截取。
在Windows系统上与安全软件相关的驱动开发过程中,“过滤”(filter)是极其重要的一个概念。过滤是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能。
一个比较容易理解的例子:实时监控的反病毒程序。任何高层软件或者Windows的文件系统都没有考虑过应该什么时候去检查文件中是否含有某个病毒的特征
码,实际上也不应该要求某个软件或者Windows的文件系统去考虑这些。反病毒程序需要在不改变文件系统的上层和下层接口的情况下,在中间加入一个过滤
层,这样就可以在上层软件读取文件、下层驱动提供数据时,对这些数据进行扫描,看其中是否含有某个病毒的特征码。这是一个很典型的过滤过程。
章之所以从串口过滤出发,是因为串口在Windows中是非常简单的设备。对一个安全软件来说,串口过滤似乎没有什么意义。不过有一些特殊场合的计算机,
要求防止“信息外泄”,或者需要知道“哪些信息外泄”了。除了网络和可移动存储设备之外,有时串口也在考虑的范围之内。
此外,使用这种方法也可以绑定键盘,从而截获用户的击键。
设备绑定的内核API之一
进行过滤的最主要的方法是对一个设备对象(Device Object)进行绑定。读者可以想象,Windows系统之所以可以运作,是因为Windows中已经存在许多提供了各种功能的设备对象。这些设备对象接收请求,并完成实际硬件的功能。
我们可以首先认为:一个真实的设备对应一个设备对象(虽然实际对应关系可能复杂得多)。通过编程可以生成一个虚拟的设备对象,并“绑定”(Attach)在一个真实的设备上。一旦绑定,则本来操作系统发送给真实设备的请求,就会首先发送到这个虚拟设备。
下面结合代码进行讲解。读者可能希望编译执行这些代码,驱动的初学者请先阅读本书第1章,以便学会如何安装开发环境、编译代码和调试程序。
在WDK中,有多个内核API能实现绑定功能。下面是其中一个函数的原型:
IoAttachDevice(
IN PDEVICE_OBJECT
SourceDevice,
IN PUNICODE_STRING
TargetDevice,
OUT PDEVICE_OBJECT
*AttachedDevice
IoAttachDevice参数如下:
SourceDevice
是调用者生成的用来过滤的虚拟设备;而TargetDevice是要被绑定的目标设备。请注意这里的TargetDevice并不是一个
PDEVICE_OBJECT(DEVICE_OBJECT是设备对象的数据结构,以P开头的是其指针),而是一个字符串(在驱动开发中字符串用
UNICODE_STRING来表示)。实际上,这个字符串是要被绑定的设备的名字。
Windows中许多设备对象是有名字的,但是并不是所有的设备对象都有名字。必须是有名字的设备,才能用这个内核API进行绑定。
这里有一个疑问:假设这个函数绑定一个名字所对应的设备,那么如果这个设备已经被其他的设备绑定了,会怎么样呢?
如果一个设备被其他设备绑定,它们在一起的一组设备,被称为设备栈(之所以称为栈,是由于和请求的传递方式有关)。实际上,IoAttachDevice总是会绑定设备栈上最顶层的那个设备。
AttachedDevice是一个用来返回的指针的指针。绑定成功后,被绑定的设备指针被返回到这个地址。
下面这个例子绑定串口1。之所以这里绑定很方便,是因为在Windows中,串口设备是有固定名字的。第一个串口名字为“/Device/Serial0”,第二个为“/Device/Serial1”,依次类推。请注意实际编码时C语言中的“/”要写成“//”。
UNICODE_STRING com_name = RLT_CONSTANT_STRING(L"//Device//Serial0");
NTSTATUS status = IoAttachDevice(
com_filter_device,
// 生成的过滤设备
&com_device_name,
// 串口的设备名
&attached_device);
// 被绑定的设备指针返回到这里
当然,试图执行这段代码的读者可能会发现,这里没有提供如何生成一个过滤设备的代码。在接下来的第二个API介绍之后,读者会看到完整的例子。
设备绑定的内核API之二
面已经提到了并不是所有的设备都有设备名字,所以依靠IoAttachDevice无法绑定没有名字的设备。另外还有两个API:一个是
IoAttachDeviceToDeviceStack,另一个是IoAttachDeviceToDeviceStackSafe。这两个函数功能一
样,都是根据设备对象的指针(而不是名字)进行绑定;区别是IoAttachDeviceToDeviceStackSafe更加安全,而且只有在
Windows 2000SP4和Windows
XP以上的系统中才有。一般都使用IoAttachDeviceToDeviceStackSafe,但当试图兼容较低版本的Windows
2000时,应该使用IoAttachDeviceToDeviceStack。
IoAttachDeviceToDeviceStackSafe(
IN PDEVICE_OBJECT
SourceDevice,
// 过滤设备
IN PDEVICE_OBJECT
TargetDevice,
// 要被绑定的设备栈中的设备
IN OUT PDEVICE_OBJECT
*AttachedToDeviceObject// 返回最终被绑定的设备
和第一个API是类似的,只是TargetDevice换成了一个指针。另外,AttachedToDevice Object同样也是返回最终被绑定的设备,实际上也就是绑定之前设备栈上最顶端的那个设备。
在Window 2000下应该使用另外一个函数IoAttachDeviceToDeviceStack,这个函数除了缺少最后一个参数之外(实际上放到返回值里了),其他的和IoAttachDeviceTo DeviceStackSafe函数相同。
PDEVICE_OBJECT
IoAttachDeviceToDeviceStack(
IN PDEVICE_OBJECT
SourceDevice,
IN PDEVICE_OBJECT
TargetDevice
这个函数返回了最终被绑定的设备指针,这也就导致了它不能返回一个明确的错误码。但是如果为NULL,则表示绑定失败了。
读到这里,读者一定迫不及待地想试试如何绑定一个串口了,但问题是,这里还没有介绍如何打开串口设备(从名字获得设备对象指针)和如何生成一个串口。下面就给出绑定的完整例子。
生成过滤设备并绑定
在绑定一个设备之前,先要知道如何生成一个用于过滤的过滤设备。函数IoCreateDevice被用于生成设备:
IoCreateDevice(
IN PDRIVER_OBJECT
DriverObject,
DeviceExtensionSize,
IN PUNICODE_STRING
DeviceName
IN DEVICE_TYPE
DeviceType,
DeviceCharacteristics,
IN BOOLEAN
Exclusive,
OUT PDEVICE_OBJECT
*DeviceObject
个函数看上去很复杂,但是目前使用时,还无须了解太多。DriverObject是本驱动的驱动对象。这个指针是系统提供,从DriverEntry中传
入,在最后完整的例子中再解释。DeviceExtensionSize是设备扩展,读者请先简单地传入0。DeviceName是设备名称。一个规则
是:过滤设备一般不需要名称,所以传入NULL即可。DeviceType是设备类型,保持和被绑定的设备类型一致即可。
DeviceCharacteristics是设备特征,在生成设备对象时笔者总是凭经验直接填0,然后看是否排斥,选择FALSE。
值得注意的是,在绑定一个设备之前,应该把这个设备对象的多个子域设置成和要绑定的目标对象一致,包括标志和特征。下面是一个示例的函数,这个函数可以生成一个设备,然后绑定在另一个设备上。
ccpAttachDevice(
PDRIVER_OBJECT driver,
PDEVICE_OBJECT oldobj,
PDEVICE_OBJECT *fltobj,
PDEVICE_OBJECT *next)
PDEVICE_OBJECT topdev = NULL;
// 生成设备,然后绑定
status = IoCreateDevice(driver,
oldobj-&DeviceType,
if (status != STATUS_SUCCESS)
// 拷贝重要标志位
if(oldobj-&Flags & DO_BUFFERED_IO)
(*fltobj)-&Flags |= DO_BUFFERED_IO;
if(oldobj-&Flags & DO_DIRECT_IO)
(*fltobj)-&Flags |= DO_DIRECT_IO;
if(oldobj-&Flags & DO_BUFFERED_IO)
(*fltobj)-&Flags |= DO_BUFFERED_IO;
if(oldobj-&Characteristics & FILE_DEVICE_SECURE_OPEN)
(*fltobj)-&Characteristics |= FILE_DEVICE_SECURE_OPEN;
(*fltobj)-&Flags |=
DO_POWER_PAGABLE;
// 将一个设备绑定到另一个设备上
topdev = IoAttachDeviceToDeviceStack(*fltobj,oldobj);
if (topdev == NULL)
// 如果绑定失败了,销毁设备,返回错误。
IoDeleteDevice(*fltobj);
*fltobj = NULL;
status = STATUS_UNSUCCESSFUL;
// 设置这个设备已经启动
(*fltobj)-&Flags = (*fltobj)-&Flags & ~DO_DEVICE_INITIALIZING;
return STATUS_SUCCESS;
从名字获得设备对象
在知道一个设备名字的情况下,使用函数IoGetDeviceObjectPointer可以获得这个设备对象的指针。这个函数的原型如下:
IoGetDeviceObjectPointer(
IN PUNICODE_STRING
ObjectName,
IN ACCESS_MASK
DesiredAccess,
OUT PFILE_OBJECT
*FileObject,
OUT PDEVICE_OBJECT
*DeviceObject
中的ObjectName就是设备名字。DesiredAccess是期望访问的权限。实际使用时可以不要顾忌那么多,直接填写
FILE_ALL_ACCESS即可。FileObject是一个返回参数,即获得这个设备对象的同时会得到的一个文件对象(File
Object)。就打开串口设备这件事而言,这个文件对象并没有什么用处。但是必须注意:在使用这个函数之后必须把这个文件对象“解除引用”,否则会引起
内存泄漏(请注意后面的代码)。
要得到的设备对象就返回在参数DeviceObject中了。示例如下:
#include &ntddk.h&
// 因为用到了RtlStringCchPrintfW,所以必须使用头文件ntstrsafe.h
// 这里定义NTSTRSAFE_LIB是为了使用静态的ntstrsafe静态库。这样才能
// 兼容Windows2000。
#define NTSTRSAFE_LIB
#include &ntstrsafe.h&
// 打开一个端口设备
PDEVICE_OBJECT ccpOpenCom(ULONG id,NTSTATUS *status)
// 外面输入的是串口的id,这里会改写成字符串的形式
UNICODE_STRING name_
static WCHAR name[32] = { 0 };
PFILE_OBJECT fileobj = NULL;
PDEVICE_OBJECT devobj = NULL;
// 根据id转换成串口的名字
memset(name,0,sizeof(WCHAR)*32);
RtlStringCchPrintfW(
L"//Device//Serial%d",id);
RtlInitUnicodeString(&name_str,name);
// 打开设备对象
*status = IoGetDeviceObjectPointer(
&name_str,
FILE_ALL_ACCESS,
&fileobj, &devobj);
// 如果打开成功了,记得一定要把文件对象解除引用
// 总之,这一句不要忽视
if (*status == STATUS_SUCCESS)
ObDereferenceObject(fileobj);
// 返回设备对象
绑定所有串口
算机上到底有多少个串口?笔者提供不出很好的方法来判定,除了依次去打开串口0、1、2、3…,目前还不知道如果串口2不存在,是否说明串口3、4…肯定
不存在?这是没有依据的,所以只好全部测试一次。不过有一个好处是,串口是焊死在计算机上的,很少见到能“即插即用”的串口(但是有一种用USB口来虚拟
串口的设备,不知道会不会产生动态生成串口的效果,在这里先忽略这一点)。那么绑定所有串口,就只需要做一次就可以了,不用去动态地追踪串口的诞生与消
下面是一个简单的函数,实现了绑定本机上所有串口的功能。这个函数用到了前面提供的ccpOpenCom和ccpAttachDevice这两个函数。
了后面的过滤,这里必须把过滤设备和被绑定的设备(后面暂且称为真实设备吧,虽然这些设备未必真实)的设备对象指针都保存起来。下面的代码用两个数组保
存。数组应该多大?这取决于一台计算机上最多能有多少个串口。读者应该去查阅IBM PC标准,这里笔者随意地写一个自认为足够大的数字。
// 计算机上最多只有32个串口,这是笔者的假定
#define CCP_MAX_COM_ID 32
// 保存所有过滤设备指针
static PDEVICE_OBJECT s_fltobj[CCP_MAX_COM_ID] = { 0 };
// 保存所有真实设备指针
static PDEVICE_OBJECT s_nextobj[CCP_MAX_COM_ID] = { 0 };
// 这个函数绑定所有的串口
void ccpAttachAllComs(PDRIVER_OBJECT driver)
PDEVICE_OBJECT com_
for(i = 0;i&CCP_MAX_COM_ID;i++)
// 获得object引用
com_ob = ccpOpenCom(i,&status);
if(com_ob == NULL)
// 在这里绑定,并不管绑定是否成功
ccpAttachDevice(driver,com_ob,&s_fltobj,&s_nextobj);
有必要关心这个绑定是否成功,就算失败了,看一下s_fltobj即可。这个数组中不为NULL的成员表示已经绑定了,为NULL的成员则是没有绑定或者
绑定失败的。这个函数需要一个DRIVER_OBJECT的指针,这是本驱动的驱动对象,是系统在DriverEntry中传入的。
文件过滤驱动和设备驱动的区别
键盘过滤驱动
(装载) 文件过滤驱动必看
过滤驱动程序总结
windows分层过滤驱动再理解
windows下的驱动开发(过滤驱动)
文件系统过滤驱动总结
如何构造一个简单的USB过滤驱动程序
驱动开发之 键盘过滤驱动--传统型键盘过滤
没有更多推荐了,文章分享到:如何把单片机的数据通过串口存储到U盘
12-02-03 &UC310串口存储U盘模块V4.0_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
UC310串口存储U盘模块V4.0
&&UC310模块,采用透明传输的方式,将串口送来的数据以文件(FAT32文件系统)形式存储于模块上的SD卡中。连接USB端口,该模块仿真成U盘,无需任何额外驱动程序,上位机可直接读取文件,也可将SD卡卸下直接由读卡器读出文件。 UC310模块接口简单,便于连接多种嵌入式及信号采集设备,特别适合需要长期保存海量数据及需要数据交换的应用中
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩9页未读,
定制HR最喜欢的简历
你可能喜欢当前位置:
扫一扫,随时随地关注行业资讯
TF卡U盘FLASH存储播放语音模块,MP3音频解码串口控制
detail3e达人选购¥1.00¥1.20¥2300.00¥1800.00¥1950.00
detail3e周边优质供应商北京昌平区浙江省宁波市北京海淀区北京昌平区
同参数产品
同参数产品
同参数产品
同参数产品
同参数产品
同参数产品
同参数产品
UART串口语音模块、16脚U盘/SD/TF卡MP3模块、GBS232串行控制语音模块方案&&&&&&&&&&&&&&&&&&&&&&& 型号:GB-059 V1.0 GBS232-TF-16P一、GBS232-16P语音模块简述:二、模块管脚排列和接线图:&三、基本参数供电电压3.3V-5VTF卡最大支持32G。USB口功能1 :通过USB连接电脑,可以识别TF卡和SD卡,功能2 :也可插入U盘,最大支持32G内存功率2W(使用8欧姆喇叭)音频输出可以外接耳机或功放使用温度-20&80度尺寸20.5 mm * 20.5 mm * 11.5mm指示灯BUSY:模块上电即亮;四、使用说明1、串口软件的操作(1)、串口软件的操作:打开串口软件,选择以下的值波特率:9600;&&&& 数据位:8 bit;&&&&& 停止位:1 bit;&& 校验位:None;& & 选择&HEX显示&, 在字符串输入框输中输入命令,点击&发送&这时模块执行命令的同时,串口软件有一个返回码返回。如:在字符串输入框中,输入下一曲的命令:7E FF 06 01 00 00 00 FE FA EF,点击&发送&,这时模块会播放一首歌曲,返回码返回:7E FF 06 3D 00 00 02 FE BC EF;如上图所示&(2)、以下是命令功能发送的命令备注[下一首]7E FF 06 01 00 00 00 FE FA EF&[上一首]7E FF 06 02 00 00 00 FE F9 EF&[播放]7E FF 06 0D 00 00 00 FE EE EF&[暂停]7E FF 06 0E 00 00 00 FE ED EF&[指定曲目]7E FF 06 03 00 00 01 FE F7 EF指定第一首播放&7E FF 06 03 00 00 02 FE F6 EF指定第二首&7E FF 06 03 00 00 0A FE EE EF指定第10首正在播放7E FF 06 42 00 00 01 FE B8 EF正在播放暂停播放7E FF 06 42 00 00 02 FE B7 EF播放过程中被暂停停止播放7E FF 06 42 00 00 00 FE B9 EF播放完毕当前在睡眠状态7E FF 06 42 00 00 08 FE B1 EF无设备在线或者被指定睡眠[指定音量]7E FF 06 06 00 00 1E FE D7 EF指定音量为30级[指定EQ]7E FF 06 07 00 00 01 FE F3 EF指定EQ为Pop[循环播放曲目]7E FF 06 08 00 00 01 FE F2 EF循环播放第一首&7E FF 06 08 00 00 02 FE F1 EF循环播放第二首&7E FF 06 08 00 00 0A FE E9 EF循环播放第十首循环播放全部7E FF 06 11 00 00 01 FE E9 EF指定全部循环播放[开]循环播放开始7E FF 06 11 00 00 01 FE EC EF循环播放所有曲目循环播放停止7E FF 06 11 00 00 00 FE EA EF停止循环播放曲目指定文件循环播放7E FF 06 19 00 00 00 FE E2 EF单曲循环播放开启&7E FF 06 19 00 00 01 FE E1 EF单曲循环播放关闭随机播放7E FF 06 18 00 00 02 FE E1 EF所有文件随机循环播放指定文件夹循环播放7E FF 06 17 00 00 02 FE E2 EF指定02文件夹循环播放&7E FF 06 17 00 00 01 FE E3 EF指定01文件夹循环播放&7E FF 06 0F 00 01 02 FE E9 EF指定为&01&的文件夹,曲目为&002&指定文件超范围7E FF 06 40 00 00 05 FE B6 EF文件的指定超过设定的范围指定播放设备-U 盘7E FF 06 09 00 00 01 FE F1 EFxx xx:代表校验指定 MP3文件夹7E FF 06 12 00 00 01 FE E8 EF&MP3&文件夹,曲目为&0001&&7E FF 06 12 00 00 02 FE E7 EF&MP3&文件夹,曲目为&0002&&7E FF 06 12 00 00 FF FD EA EF&MP3&文件夹,曲目为&0255&&7E FF 06 12 00 07 CF FE 13 EF&MP3&文件夹,曲目为&1999&&7E FF 06 12 00 0B B8 FE 26 EF&MP3&文件夹,曲目为&3000&[指定播放设备]7E FF 06 09 00 00 01 FE F1 EF指定播放设备为UDISK&7E FF 06 09 00 00 02 FE F0 EF指定播放设备为TF指定文件夹01里面的001xxx.mp37E FF 06 0F 00 01 01 FE EA EF&指定文件夹11里面的100xxx.mp37E FF 06 0F 00 0B 64 FE 7D EF&指定文件夹99里面的255xxx.mp37E FF 06 0F 00 63 FF FD 8A EF&指定文件夹01里面的001xxx.mp37E FF 06 0F 00 01 01 FE FA EF&指定文件夹11里面的100xxx.mp37E FF 06 0F 00 0B 64 FE 7D EF&U盘在线7E FF 06 3F 00 00 01 FE BB EF&U盘总文件数7E FF 06 47 00 00 00 FE B4 EF当前设备的总文件数U盘当前曲目7E FF 06 4B 00 00 00 FE B0 EF当前播放的曲目U盘、TF& 在线7E FF 06 3F 00 00 03 FE B8 EF&U盘播放完第1曲7E FF 06 3C 00 00 01 FE BE EF&U盘播放完第2曲7E FF 06 3C 00 00 02 FE BB EF&U盘插入7E FF 06 3A 00 00 01 FE C0 EF&U盘拔出7E FF 06 3B 00 00 01 FE BF EF&TF总文件数7E FF 06 48 00 00 00 FE B3 EF&TF当前曲目7E FF 06 4C 00 00 00 FE AF EF&TF卡播放完第1曲7E FF 06 3D 00 00 01 FE BD EF&TF卡播放完第2曲7E FF 06 3D 00 00 02 FE BC EF&TF拔出7E FF 06 3B 00 00 02 FE BE EF&TF插入7E FF 06 3A 00 00 02 FE BF EF&TF在线7E FF 06 3F 00 00 02 FE BA EF&支持1000首7E FF 06 14 00 10 FF FD D8 EF指定为&01&的文件夹,曲目为&0255&&7E FF 06 14 00 17 CF FE 01 EF指定为&01&的文件夹,曲目为&1999&&7E FF 06 14 00 C0 01 FE 26 EF指定为&12&的文件夹,曲目为&0001&&7E FF 06 14 00 C0 FF FD 28 EF指定为&12&的文件夹,曲目为&0255&&7E FF 06 14 00 C7 CF FD 51 EF指定为&12&的文件夹,曲目为&1999&插播广告7E FF 06 13 00 00 01 FE E7 EF&ADVERT&文件夹,曲目为&0001&&7E FF 06 13 00 00 02 FE E6 EF&ADVERT&文件夹,曲目为&0002&&7E FF 06 13 00 00 FF FD E9 EF&ADVERT&文件夹,曲目为&0255&&7E FF 06 13 00 07 CF FE 12 EF&ADVERT&文件夹,曲目为&1999&&7E FF 06 13 00 0B B8 FE 25 EF&ADVERT&文件夹,曲目为&3000&返回忙7E FF 06 40 00 00 01 FE BA EF模块在文件系统初始化时当前处于睡眠模式7E FF 06 40 00 00 02 FE BA EF睡眠模式只支持指定设备串口接收错误7E FF 06 40 00 00 03 FE B8 EF串口一帧数据没接收完毕校验出错7E FF 06 40 00 00 04 FE B6 EF和校验出错[指定文件夹]7E FF 06 0F 00 01 01 FE EA EF指定为&01&的文件夹,曲目为&001&未找到指定的文件7E FF 06 40 00 00 06 FE B5 EF指定为文件没有被找到插播指令错误7E FF 06 40 00 00 07 FE B4 EF当前状态不接受插播查询文件夹总数7E FF 06 4F 00 00 00 FE AC EF查询当前设备的文件夹总数查询文件夹曲目总数7E FF 06 4E 00 00 01 FE AC EF查询01文件夹的总曲目数&7E FF 06 4E 00 00 0B FE A2 EF查询11文件夹的总曲目数查询当前状态7E FF 06 42 00 00 00 FE B9 EF&[查询音量]7E FF 06 43 00 00 00 FE B8 EF&[查询当前EQ]7E FF 06 44 00 00 00 FE B7 EF&停止播放广告7E FF 06 15 00 00 00 FE E6 EF停止当广告,回到背景音乐继续播停止播放7E FF 06 16 00 00 00 FE E5 EF停止软件解码设置DAC7E FF 06 1A 00 00 00 FE E1 EF开DAC&7E FF 06 1A 00 00 01 FE E0 EF关DAC[高阻][进入睡眠模式]7E FF 06 0A 00 00 00 FE F1 EF&[模块复位]7E FF 06 0C 00 00 00 FE EF EF&指定MP3文件夹中的文件7E FF 06 12 00 00 01 FE E8 EF指定为&MP3&的文件夹,曲目为&0001&&7E FF 06 12 00 00 02 FE E7 EF指定为&MP3&的文件夹,曲目为&0002&&7E FF 06 12 00 00 FF FD EA EF指定为&MP3&的文件夹,曲目为&0255&&7E FF 06 12 00 07 CF FE 13 EF指定为&MP3&的文件夹,曲目为&1999&&7E FF 06 12 00 0B B8 FE 26 EF指定为&MP3&的文件夹,曲目为&3000&五、应用场合& &1、车载导航语音播报& &2、公路运输稽查、收费站语音提示;& &3、火车站、汽车站安全检查语音提示;& &4、电力、通信、金融营业厅语音提示;& &5、车辆进、出通道验证语音提示;& &6、**边防检查通道语音提示;&&&&& &7、多路语音告警或设备操作引导语音;& &8、电动观光车安全行驶语音告示;&&& &9、机电设备故障自动报警;& &10、消防语音报警提示;& &11、自动广播设备,定时播报&&六、产品详细资料下载地址:
慧聪网厂家深圳市国彬电子有限公司为您提供TF卡U盘FLASH存储播放语音模块,MP3音频解码串口控制的详细产品价格、产品图片等产品介绍信息,您可以直接联系厂家获取TF卡U盘FLASH存储播放语音模块,MP3音频解码串口控制的具体资料,联系时请说明是在慧聪网看到的。
detail3e相关商品推荐¥1.00¥1.20¥2300.00¥1800.00¥1950.00¥240.00¥1.00¥1.00热门商品推荐 ¥110.00 ¥16000.00 ¥2.95 ¥0.55 ¥0.48 ¥7.00 ¥0.10 ¥2999.00
detail3e店内热门商品¥1200.00¥198.00¥15.00¥105.00
detail3ePLC相关资源PLC热门产品搜索更多&热门商机最新商机
提示:您在慧聪网上采购商品属于商业贸易行为。以上所展示的信息由卖家自行提供,内容的真实性、准确性和合法性由发布卖家负责,请意识到互联网交易中的风险是客观存在的。推荐使用,保障您的交易安全!
联系人:吴小姐 & 女士
075 ******
135 ******
请供应商联系我
手机号不能为空
姓名不能为空
请供应商联系我
您对该公司的咨询信息已成功提交请注意接听供应商电话。
detail3e关于音频
detail3e您是不是在找
您采购的产品:
请输入采购产品
您的手机号码:
请输入手机号码
*采购产品:
请输入采购产品
*采购数量/单位:
请输入采购数量
请选择单位
*采购截止日期:
请输入正确的手机号码
请输入验证码
*短信验证码:
<input id="valid_Code1" maxlength="6" placeholder="请输入验证码" name="VALIDCODE" class="codeInput" onkeyup="this.value=this.value.replace(/\D/g,'')" onkeypress="if(event.keyCode
57) event.returnValue =" type="text">
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
发送成功!
慧聪已收到您的需求,我们会尽快通知卖家联系您,同时会派出采购专员1对1为您提供服务,请您耐心等待!
135 ******
联系人:吴小姐&助理
公司名称:深圳市国彬电子有限公司
备注:点击关注按钮后才可自动收到卖家电话
请输入正确的手机号码
请输入验证码
*短信验证码:
免费获取验证码
为了安全,请输入验证码,我们将优先处理您的需求!
请输入验证码
按字母分类 :}

我要回帖

更多关于 如何将微信中的文件导出到U盘上 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信