javascript 系统文件夹文件操作(很强大哦)

STM32L451 UART DMA循环接收TC中断失效原因与IDLE解决方案 在嵌入式系统开发中,DMA循环接收是处理UART连续数据流的高效手段,它允许数据在内存与外设间自动搬运而无需CPU干预。然而,不少工程师在STM32L451上使用DMA循环模式时发现,预期的传输完成(TC)中断并不按理论触发,导致缓冲区满事件无法上报。这背后涉及HAL库对循环模式TC事件的特殊处理逻辑,以及DMA状态机与回调机制的交互约束。理解TC中断在循环模式下的行为特性,对规避数据覆盖风险至关重要。更通用的做法是借助IDLE空闲中断来界定数据帧边界,通过读取DMA计数器精确计算接收长度,从而稳定应对不定 阅读详情
前期在.net 下进行系统操作,同样的功能实现起来非常复杂,没想到用javascript竟然如此简单,所以在网上搜索了代码并加以改进。
function PathList(path) {
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            var fldr = fso.GetFolder(path);
            var fd = new Enumerator(fldr.SubFolders);

            for (; !fd.atEnd(); fd.moveNext()) {
                sd = fd.item();
                WScript.Echo(sd.path);
				//写入文件
				writeFile("a.text",sd.path);
                //document.write(sd.path);
                PathList(sd.path);
            }
        }
		
function FileList(path) {
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            var fldr = fso.GetFolder(path);
            var fd = new Enumerator(fldr.SubFolders);

            for (; !fd.atEnd(); fd.moveNext()) {
                sd = fd.item();
				var fc = new Enumerator(sd.files);
				for (; !fc.atEnd(); fc.moveNext())
				{
					WScript.Echo(fc.item());
					writeFile("B.text",fc.item());
				}
                WScript.Echo(sd.path);
				//写入文件
				writeFile("a.text",sd.path);
                //document.write(sd.path);
                FileList(sd.path);
            }
        }
//当前目录文件
function CurFileList(path) {
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            var fldr = fso.GetFolder(path);
				var fc = new Enumerator(fldr.files);
				for (; !fc.atEnd(); fc.moveNext())
				{
					WScript.Echo(fc.item());
					writeFile("c.text",fc.item());
				}
        }


/*
object.OpenTextFile(filename[, iomode[, create[, format]]])
参数
object
必选项。object 应为 FileSystemObject 的名称。
filename
必选项。指明要打开文件的字符串表达式。
iomode
可选项。可以是三个常数之一:ForReading 、 ForWriting 或 ForAppending 。
create
可选项。Boolean 值,指明当指定的 filename 不存在时是否创建新文件。如果创建新文件则值为 True ,如果不创建则为 False 。如果忽略,则不创建新文件。
format
可选项。使用三态值中的一个来指明打开文件的格式。如果忽略,那么文件将以 ASCII 格式打开。
设置
iomode 参数可以是下列设置中的任一种:
常数 值 描述
ForReading 1 以只读方式打开文件。不能写这个文件。
ForWriting 2 以写方式打开文件
ForAppending 8 打开文件并从文件末尾开始写。

format 参数可以是下列设置中的任一种:
值 描述
TristateTrue 以 Unicode 格式打开文件。
TristateFalse 以 ASCII 格式打开文件。
TristateUseDefault 使用系统默认值打开文件。
*/
//读文件
function readFile(filename){
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(filename,1);
var s = "";
while (!f.AtEndOfStream)
s += f.ReadLine()+"\n";
f.Close();
return s;
}		


//写文件
function writeFile(filename,filecontent){
var fso, f, s ;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.OpenTextFile(filename,8,true);
f.WriteLine(filecontent);
f.Close();
//alert('ok');
WScript.Echo("写入成功");
}

//删除文件
function deleteFile(filename,filecontent){
var fso, f, s ;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filename);
f.Delete();
//alert('ok');
WScript.Echo("删除成功");
}
//批量删除,未删除文件夹,删除不了当前目录文件
function DelFileList(path) {
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            var fldr = fso.GetFolder(path);
            var fd = new Enumerator(fldr.SubFolders);

            for (; !fd.atEnd(); fd.moveNext()) {
                sd = fd.item();
				var fc = new Enumerator(sd.files);
				for (; !fc.atEnd(); fc.moveNext())
				{
					WScript.Echo(fc.item());
					writeFile("B.text",fc.item());
					fc.item().Delete();
					WScript.Echo("删除成功");
				}
                WScript.Echo(sd.path);
				//写入文件
				writeFile("a.text",sd.path);
				writeFile("a.text","删除完毕");
                //document.write(sd.path);
                DelFileList(sd.path);
            }
        }

		
//删除当前目录文件
function CurDelFileList(path) {
            var fso = new ActiveXObject("Scripting.FileSystemObject");
            var fldr = fso.GetFolder(path);
				var fc = new Enumerator(fldr.files);
				for (; !fc.atEnd(); fc.moveNext())
				{
					WScript.Echo(fc.item());
					writeFile("c.text",fc.item());
					fc.item().Delete();
					writeFile("c.text","删除成功");
				}
        }
/*
Drive对象负责收集系统中的物理或逻辑驱动器资源内容,它具有如下属性:
l TotalSize:以字节(byte)为单位计算的驱动器大小。
l AvailableSpace或FreeSpace:以字节(byte)为单位计算的驱动器可用空间。
l DriveLetter:驱动器字母。
l DriveType:驱动器类型,取值为:removable(移动介质)、fixed(固定介质)、network(网络资源)、CD-ROM或者RAM盘。
l SerialNumber:驱动器的系列码。
l FileSystem:所在驱动器的文件系统类型,取值为FAT、FAT32和NTFS。
l IsReady:驱动器是否可用。
l ShareName:共享名称。
l VolumeName:卷标名称。
l Path和RootFolder:驱动器的路径或者根目录名称。
*/
function getDriveinfo()
{
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName("c:\\"));
s += "Drive C:" + " - ";
s += drv.VolumeName + "\n";
s += "Total Space: " + drv.TotalSize / 1024;
s += " Kb" + "\n";
s += "Free Space: " + drv.FreeSpace / 1024;
s += " Kb" + "\n";
WScript.Echo(s);
}
CurFileList("D:\web_01");
FileList("D:\web_01");
getDriveinfo();

STM32串口DMA模式配置问题与解决方案 DMA(直接内存访问)是嵌入式系统中实现高效数据传输的关键技术,通过绕过CPU直接在外设与内存间搬运数据,显著提升系统性能。其核心原理包括传输配置、触发机制和自动地址递增等特性。在STM32的HAL库开发中,DMA的循环模式(Circular)与普通模式(Normal)配置差异常引发串口通信异常,表现为数据重复发送。通过分析DMA控制器的工作机制和HAL库源码实现,可以定位到CubeMX工具配置与生成代码不一致等典型问题场景。掌握正确的DMA模式选择、传输完成回调设置和寄存器监控方法,能够有效解决串口通信中 阅读详情

相关推荐

STM32 DMA循环模式:从硬件原理到串口接收实战

DMA(直接存储器访问)是嵌入式系统中实现高效数据搬运的核心硬件模块,其核心价值在于将CPU从繁重的数据复制任务中解放出来。其工作原理是通过独立的控制器,在外设与内存之间直接建立数据传输通道,无需CPU介入。这项技术对于提升系统实时性和降低功耗具有重要意义,尤其适用于ADC连续采样、串口通信、音频流处理等持续数据流场景。其中,循环模式是DMA的一种高级工作方式,它通过硬件自动重置地址指针和数据计数器,实现了“永不停歇”的自动化数据传输流水线。本文将深入解析循环模式的硬件机制,特别是NDTR寄存器的自动重载行

cuibinmo3519的博客 353

js中new ActiveXObject("Scripting.FileSystemObject")等操作本地文件用法

工作中遇到js读取本地配置文件,然后读取一行,的用法。 在网上看到一篇好文章,转过来,原文地址:参考网址:http://www.jb51.net/article/48538.htm FileSystemObject 简称 FSO,文件系统组件。 FSO组件需要足够的权限。在JS客户端代码中,一般没有权限访问FSO组件。但是服务端可以,所以,如果是ASPJScript服务端程序,才可以调用

十年树木的博客 4万+

STM32串口高效接收不定长数据:空闲中断与DMA组合方案详解

在嵌入式系统开发中,串口通信是连接微控制器与外部设备的基础接口,广泛应用于调试、数据采集和上位机交互等场景。其核心原理是通过异步串行协议实现设备间的数据交换,涉及波特率、数据帧和中断机制等关键技术。传统查询或字节中断方式在处理高速、不定长数据流时面临CPU占用率高和中断风暴等挑战,难以满足实时性要求。为解决这一问题,结合DMA(直接存储器访问)和串口空闲中断的硬件级方案应运而生,它通过DMA自动搬运数据至内存,极大解放了CPU资源,同时利用总线空闲状态精准判定数据帧边界,实现了高效可靠的数据接收。这一技术方

weixin_34025151的博客 392

new ActiveXObject("Scripting.FileSystemObject") 时抛出异常

使用JScript读写本地文件时,会使用Scripting.FileSystemObject控件。 IE默认是不允许运行这类“未标记为安全执行脚本的ActiveX控件”的。 因此执行下行代码时: fso = new ActiveXObject("Scripting.FileSystemObject"); 会抛出“Automation 服务器不能创建对象”的异常。 解决方法是:

站在巨人的肩膀上 9684

DMA技术全解析:从工作原理到串口、ADC实战及避坑指南

直接存储器访问(DMA)是现代嵌入式系统中释放CPU负载的核心机制。它允许外设与内存直接交换数据,无需CPU逐字节干预,从而显著提升系统吞吐量与实时性。本文从DMA的四个工作阶段入手,解读外设请求、传输模式(单次/循环/突发)、以及半传输与全传输中断等关键技术点,并结合工程实践深入讨论串口DMA不定长接收、ADC多通道扫描采样、FreeModbus协议栈移植等高频应用场景。同时针对DMA发送等待、数据错位、缓存一致性等疑难杂症给出排查方法与解决代码。无论你是刚接触DMA的初学者,还是正在调试复杂问题的资深工

weixin_34176694的博客 317

嵌入式DMA驱动实践:从原理到STM32 UART内存传输代码实现

直接内存访问(DMA)是嵌入式系统中提升数据传输效率、解放CPU计算资源的核心技术。其原理是通过独立的DMA控制器在外设与内存之间直接搬运数据,无需CPU干预,从而让CPU专注于核心算法与任务调度。这项技术的核心价值在于解决高带宽、实时性要求严格场景下的性能瓶颈,广泛应用于UART、SPI、ADC等外设的数据收发以及内存间大数据块搬运。本文聚焦于**31 DMA 31DMA-16**这一具体配置场景,深入剖析DMA在STM32系列MCU中的工程化应用,提供从初始化配置、中断处理到常见问题排查的完整解决方案,

weixin_30681615的博客 426

new ActiveXObject("Scripting.FileSystemObject") 未能创建对象的解决方法

项目中有一个页面JavaScript代码通过ActiveXObject创建FileSystemObject实现文件的读取。 function Login() {       var fso;       var filePath;       try {           fso = new ActiveXObject("Scripting.FileSystemObject");  

qwdx1k2的专栏 1万+

STM32U5 GPDMA实战指南:从传统DMA到链表模式

在嵌入式开发中,DMA(直接存储器访问)是提升数据搬运效率的核心技术,而STM32U575/585系列搭载的GPDMA(通用DMA)则带来了全新的可编程数据搬运理念。与传统DMA的单次传输不同,GPDMA通过描述符和链表模式,让多个数据搬运任务自动串联执行,大幅降低CPU干预,特别适合SPI、ADC、串口等外设的连续数据流处理。理解GPDMA的请求、通道、描述符、FIFO等基础概念,掌握其在CubeMX中的配置方法,并结合LL库进行工程实践,是充分发挥这颗Cortex-M33芯片性能的关键。本文从DMA原理

weixin_30617695的博客 917

js创建、写入、读取文件。

原文链接:http://hi.baidu.com/lulufei/blog/item/876c66a72e4e9891d14358ae.html

Rotbing的博客 2万+

UART串口通信实战:从原理到代码,解决不定长接收与DMA应用难题

串行通信是嵌入式系统实现设备间数据交换的基础技术,其核心在于通过异步时序和约定的帧格式,在单对数据线上可靠传输信息。UART(通用异步收发器)作为最经典的串行通信接口,因其协议简单、通用性强,成为单片机、ARM等微控制器与传感器、模块及上位机通信的首选方案。其技术价值在于以极简的硬件连接(通常仅TX、RX、GND三线)实现全双工数据流,并通过波特率、数据位、停止位和校验位的灵活配置适应不同场景需求。在工程实践中,UART的应用不仅限于基础的轮询收发,更深入到通过中断机制高效处理不定长数据包,以及利用DMA(

weixin_30596343的博客 369

STM32 DMA传输模式原理与工程选型指南

DMA(直接内存访问)是嵌入式系统实现零拷贝、降低CPU负载的核心机制,其本质是在总线矩阵仲裁下由硬件自主完成内存与外设间的数据搬运。理解其普通模式与循环模式的差异,关键在于把握数据流生命周期管理与CPU资源释放粒度两大工程约束。普通模式适用于一次性、确定性任务(如Modbus帧发送),保障时序确定性;循环模式则面向持续性数据流(如ADC采样、UART环形接收),通过硬件自动回绕实现高效缓冲。结合STM32的AHB/APB总线架构、通道映射规则及地址对齐要求,合理选择传输方向(Mem-to-Mem/Peri

weixin_34718952的博客 36

STM32CUBE MX串口DMA+中断不定长接收详解

串口DMA+中断不定长接收详解 stm32cube mx作为ST官方生成固件极大的帮助了我们,不再为移植底层寄存器而浪费太多时间,但是在提高效率的同时,HAL库中还有一些莫名其妙的坑,需要我们自行解决的。对于只用中断接收数据不定长数据,作者还未使用过,还望大家能分享一下,本文只做简单的串口DMA+中断的形式接收不定长的数据接收,至于应用的话可以在这个的基础上自行发挥。 一目了然,这里开启RCC基本的高/低速外部时钟(HSE/LSE),调试的话使用的是SWO调试接口,接着就是使能我们所需要使用到的串口啦,这

qq_32650719的博客 1241

Dify 深度进阶:从入门到精通AI应用构建

《Dify进阶指南:从基础到高阶的AI应用开发技巧》 本文深入探讨Dify平台的高级功能与应用开发技巧。首先强调核心概念的深化,包括提示词工程进阶、知识库高效管理和模型参数优化。重点介绍智能体应用的开发方法,如何让AI具备自主规划与执行能力。同时讲解工作流编排、前端集成等实用技术,并分享应用运营优化、成本控制等实践经验。文章还展望了Dify生态的发展趋势,为开发者提供从基础到进阶的完整学习路径,助力打造更智能高效的AI应用。

同名公众号:dify实验室 1951

stm32f407zg跟ze的区别_STM32F103ZE和STM32F207ZG的芯片区别

前段时间以红牛开发板为主,在其上成功移植了.NET Micro Framework(请参见我以前写的系列移植文章:链接),最近开始在ST下一代Cortex-M3芯片STM32F207的平台上移植.NET Micro Framework(马上要推出的.NET Micro Framework教育箱第二代),由于目前STM32F207并没有公开发布,一般网友目前仅知道芯片的相关参数指标,而不知道相关寄存...

weixin_33824590的博客 2382

Python爬虫(一)京东商品价格及详情页抓取

这是一个以http://item.jd.com/2957726.html为例的单网页抓取案例 import urllib.request; #载入urllib.request,用于获取页面html源代码 from pandas import Series; #载入series包 from pandas import DataFrame; #载入dataframe包 from bs4 impo

Data Proc 1万+

基于OpenAI Agents构建多智能体工作流:从原理到实战

多智能体系统(Multi-Agent System)是人工智能领域的重要分支,它通过多个智能体(Agent)的协作与交互,解决单一智能体难以处理的复杂任务。其核心原理在于将任务分解、分配与协调,每个智能体具备特定能力,通过通信机制实现信息共享与决策协同。在工程实践中,多智能体框架的价值在于提升任务处理效率、增强系统鲁棒性,并支持模块化开发。典型的应用场景包括自动化工作流编排、复杂问题求解以及人机协同交互。本文以OpenAI Agents SDK为例,深入探讨如何利用其提供的智能体(Agent)、会话(Ses

weixin_28725959的博客 606

DMA工作原理与实战:从串口接收、ADC采样到缓存一致性避坑指南

在嵌入式系统开发中,数据搬运方式直接决定CPU的利用率。传统的轮询与中断模式在处理高频外设数据时,会因频繁的上下文切换而严重拖累系统性能。直接存储器访问(DMA)作为一种硬件级的数据搬运机制,无需CPU逐字节干预,即可实现外设与内存之间的高速数据传输,从根本上解放CPU算力。理解DMA的请求-仲裁-搬运-中断完整链路,以及普通模式、循环模式、突发传输等核心特性,是掌握现代MCU开发的关键。以STM32平台为例,串口不定长接收可借助循环DMA配合空闲中断实现,ADC多通道连续采样则依赖循环DMA构建稳定的数据

chubaisheng8627的博客 422

Zemax实战:手把手教你设计一个40倍、NA0.65的显微物镜(附初始结构文件)

本文详细介绍了使用Zemax设计40倍、NA0.65显微物镜的完整流程,从初始结构搭建到优化验证,涵盖光学设计的关键技巧和实战经验。通过分阶段优化策略和公差分析,帮助工程师快速掌握高倍显微物镜的设计方法,提升光学系统性能。

weixin_42525369的博客 344

STM32F103ZE和STM32F207ZG的芯片区别

前段时间以红牛开发板为主,在其上成功移植了.NET Micro Framework(请参见我以前写的系列移植文章:链接),最近开始在ST下一代Cortex-M3芯片STM32F207的平台上移植.NET Micro Framework(马上要推出的.NET Micro Framework教育箱第二代),由于目前STM32F207并没有公开发布,一般网友目前仅知道芯片的相关参数指标,而不知道相关寄...

mmdev 1385

ARM和FPGA之间的通信(硬件原理图篇)

设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP

屌yy的博客 5万+

解决Cursor AI工具地域限制报错的方法与原理

地理围栏(GEO-fencing)是现代云服务常用的访问控制技术,通过IP地址库匹配、支付系统验证等方式实现区域限制。在AI编程工具领域,这种技术常导致类似Cursor出现的'unsupported country region'报错。从技术实现看,服务商会综合HTTP头信息、时区设置等多维度数据进行地理位置判断。开发者可通过调整网络出口、配置本地模型或使用企业版等方案解决。本文以Cursor为例,详细分析了AI工具地域限制的底层原理,并提供了包括Ollama本地部署在内的多种工程实践方案,特别适合需要稳定

weixin_30820077的博客 974
上一篇: oracle dba 学习日志3(backup)
下一篇: javascript 获取系统硬件信息
少多慢快
博客等级 码龄17年 726粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值