写一个BAT语言 自动识别串口是否被占用,不占用打开串口,读取串口指定字符串,把字符串写入excel保存,然后关闭串口等待30S重复上面操作
时间: 2023-12-10 18:02:46 浏览: 69
串口数据写入到excel
4星 · 用户满意度95%
以下是一个实现该功能的BAT语言程序:
```
@echo off
setlocal EnableDelayedExpansion
set "port=COM1" // 串口号
set "baudrate=9600" // 波特率
set "timeout=30" // 等待时间
set "string=Hello World!" // 指定字符串
:loop
REM 检测串口是否被占用
mode %port% >nul 2>&1
if %errorlevel% equ 0 (
REM 串口未被占用,打开串口
mode %port%:%baudrate%,n,8,1 >nul 2>&1
if %errorlevel% equ 0 (
REM 读取串口数据
set "data="
for /f "tokens=1,2 delims=:" %%a in ('mode %port%') do (
if "%%a"=="Status" set "data=%%b"
)
set "data=!data: =!"
set "data=!data:,=!"
set "data=!data:*=!"
set "data=!data:~=!"
set "data=!data:(=!"
set "data=!data:)=! "
set "data=!data:!^!=!"
set "data=!data: ==!"
set "data=!data: =!"
set "data=!data: =!"
set "data=!data:,=!"
set "data=!data:~=!"
set "data=!data:(=!"
set "data=!data:)=! "
set "data=!data:!^!=!"
set "data=!data: ==!"
set "data=!data: =!"
REM 将读取到的数据写入Excel
set "excel=C:\path\to\file.xlsx" // Excel文件路径
set "worksheet=Sheet1" // 工作表名称
set "column=A" // 列
set "row=1" // 行
set "value=!data!"
set "cmd=powershell -Command ""& {Add-Type -AssemblyName Microsoft.Office.Interop.Excel; $excel = New-Object -ComObject Excel.Application; $workbook = $excel.Workbooks.Open('%excel%'); $worksheet = $workbook.Worksheets.Item('%worksheet%'); $cell = $worksheet.Cells.Item(%row%, '%column%'); $cell.Value2 = '%value%'; $workbook.Save(); $excel.Quit()}"""
cmd /c %cmd%
REM 关闭串口
mode %port%:off >nul 2>&1
)
) else (
REM 串口被占用,等待一段时间后重试
timeout /t %timeout% >nul
)
goto loop
```
该程序会不断循环执行以下操作:
1. 检测串口是否被占用;
2. 如果串口未被占用,则打开串口,读取串口数据,将数据写入Excel,最后关闭串口;
3. 如果串口被占用,则等待一段时间后重试。
你可以将程序中的参数(串口号、波特率、等待时间、指定字符串、Excel文件路径、工作表名称、列、行)根据需要进行修改。
阅读全文