Lexsion 发布的文章

测音量不能只看分贝!声音大小的衡量与单位dB、dB(A)、dB(C)的概念

你有没有想过?为什么指甲刮过黑板那微弱的刺啦声,能让你瞬间全身起鸡皮疙瘩。而远处滚滚而来的雷声虽然震得窗户乱颤,你却能安然入睡?

如果说声音的能量值,肯定是撼动窗户的低沉雷声更强。但刮黑板的高频声音却更让我们人耳难以忍受。由此我们知道了,人耳对不同频率声音的感知能力是不一样的。

声压(Sound Pressure):

声压表示声音在空气中传播时引起的空气压强变化,这是一个客观的物理量,其单位是帕斯卡 (Pa)。

响度(Loudness):

响度是人耳对声音强弱的主观感觉,也就是你觉得它“有多响”。基于进化的选择,同样声压下,我们的耳朵对中高频(如人声、婴儿哭声)极为敏感,但对低频(如低音炮的震动、远处的空调外机声)较为钝感。为了衡量人耳的感受,人们引入了响度这一概念。

声压级 (SPL):

声压级它表示当前声压是基准声压(20uPa)的多少倍。用分贝(dB)表示,它实际不是一个物理单位,更不能称为声音大小的单位,而是一个比例关系。
之所以要把声压转换成声压级的表示方法,是因为耳朵能听到的最小到最大的声压,相差百万倍。人们为了少写点零,引入了对数运算。

声压级 $L_{p}$ 的计算公式如下:

$L_{p}=20\log _{10}\left(\frac{p_{rms}}{p_{ref}}\right)\text{\ dB}$

其中各个字母代表:

$p_{rms}$ (待测声压): 你实际测量到的空气压力波动值(单位:帕斯卡 Pa)。
$p_{ref}$ (基准声压): 人耳刚能听到的声音压力,是一个固定值:$2\times 10^{-5}$ Pa(即 20微帕)。
$\log _{10}$: 以10为底的对数运算,负责把巨大的倍数关系“压缩”成小的数值。 

计权(Weighting):

A 计权 (A-Weighting):模拟“普通耳朵”

dB (A) 是通过 A 计权网络 修正后的声压级,核心是模拟人耳对中高频敏感、对低频不敏感的听觉特性(贴近人类日常环境中对声音的主观感受)。
人耳在较低声压级(约 40 dB)下的听觉反应。在这一曲线中,低频部分的凹陷非常明显,意味着人耳对低频非常迟钝。

“虽然大家都叫它单位,但 dB(A)其实更像是一个带了‘人耳美颜滤镜’的数值评分。”

C计权一般用于测量:语音与话音、环境噪声、职业健康。

C 计权 (C-Weighting):模拟“大声状态”

dB (C) 是通过 C 计权网络 修正后的声压级,核心是模拟高声压环境下人类的听觉特性—— 此时人耳对低频的敏感度提升,听觉响应接近线性。
大音量(>85dB)下人耳对低频更敏感(听觉变平坦了),所以 C 计权的曲线也更平直。

C计权一般用于测量:重工业噪声、音响系统、峰值冲击。

A计权与C计权衰减情况对比:

频率 (Hz) A 计权衰减 (dB) C 计权衰减 (dB) 差距(A比C多减)
31.5 -39.4 -3.0 ~36 dB
63 -26.2 -0.8 ~25 dB
125 -16.1 -0.2 ~16 dB
250 -8.6 0 8.6 dB
500 -3.2 0 3.2 dB
1000 0 0 一致
2000 +1.2 -0.2 +1.4 dB
4000 +1.0 -0.8 +1.8 dB
8000 -1.1 -3.0 -1.9 dB

行业测试注意事项:

  • 标准优先原则:某些行业标准中有自己的计权方式选择要求。如自动电话技术标准中明确指出,要使用A计权测量。
  • 数值对比前提:不同加权的声压级不可直接对比,加权不同没有可比性。例如,某个话机振铃最大声音 dB (A)=80dB、dB (C)=85dB,不能说“C计权测到的声音更大”,而是C计权计入了更多低频部分贡献。
  • 测试条件标注:撰写报告时,必须写明测试条件,否则数据没有意义。比如65dB(A)@1m ,表示 “使用A计权方式在1m处测到的声压级数值”(针对计权标注,国际标准(如 ISO 80000-8)建议的严谨写法应该是 $L_{pA}=65\text{\ dB}$)
  • 特殊情况下的灵活变通:有时我们测的产品明显有低频噪声时,我们要测量其具体情况,便可能需要补充测量C计权下的声压级数值,以备参考。

总结:

  • 声压级(SPL)不是声音大小的物理单位,它只是表示声压大小的方法。
  • dB:反映了声压相对基准的倍数(声压级),是未加权的原始值。
  • dB(A):模拟人耳常规声压级感受的 “实用指标”,多用于合规性测试、反映实际体验的测试(最常用);
  • dB(C):模拟人耳高声压下感受,因为低频衰减小,也可以认为是完整能量的测量。用于大功率设备或要关注低频部分的测试中。

MinGW编译Windows程序添加文件属性中的版本信息

Windows应用程序或DLL文件,通过Windows资源管理器查看文件属性,其中可以看到文件说明、产品名称与版本、版权等信息,Microsoft官方称之为VERSIONINFO(版本信息资源)。本文讲述在使用MinGW编译Windows程序时如何添加此版本信息资源。

Windows应用程序开发中,版本信息定义于VersionInfo.rc文件中。因此我们首先需要一个文件模板:
以下两个分别来源于微软官方和网络:

微软:

#define VER_FILEVERSION             3,10,349,0
#define VER_FILEVERSION_STR         "3.10.349.0\0"

#define VER_PRODUCTVERSION          3,10,0,0
#define VER_PRODUCTVERSION_STR      "3.10\0"

#ifndef DEBUG
#define VER_DEBUG                   0
#else
#define VER_DEBUG                   VS_FF_DEBUG
#endif

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
FILEFLAGS       (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
FILEOS          VOS__WINDOWS32
FILETYPE        VFT_DLL
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",      VER_COMPANYNAME_STR
            VALUE "FileDescription",  VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",      VER_FILEVERSION_STR
            VALUE "InternalName",     VER_INTERNALNAME_STR
            VALUE "LegalCopyright",   VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
            VALUE "ProductName",      VER_PRODUCTNAME_STR
            VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        /* The following line should only be modified for localized versions.     */
        /* It consists of any number of WORD,WORD pairs, with each pair           */
        /* describing a language,codepage combination supported by the file.      */
        /*                                                                        */
        /* For example, a file might have values "0x409,1252" indicating that it  */
        /* supports English language (0x409) in the Windows ANSI codepage (1252). */

        VALUE "Translation", 0x409, 1252

    END
END

第二个模板:

1 VERSIONINFO
 FILEVERSION ${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}
 PRODUCTVERSION ${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x0L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "FileDescription", "MyLibrary Binary"
            VALUE "FileVersion", "${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}"
            VALUE "InternalName", "MyLibrary"
            VALUE "LegalCopyright", "Copyright (C) 2019"
            VALUE "OriginalFilename", ""
            VALUE "ProductName", "MyLibrary"
            VALUE "ProductVersion", "${PROJECT_VERSION_MAJOR}, ${PROJECT_VERSION_MINOR}, ${PROJECT_VERSION_PATCH}"
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

按照以上两个模板生成的exe文件,语言会显示英语,如果需要修改为中文,则需要对以下两个地方进行修改:

BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "080404b0"
    . . .

    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x804, 1200

可见前面的0804是语言代码,后面是字符集标识,Translation部分的1200,其十六进制就是上面StringFileInfo04b0,上下两处的值要对应,否则编译出的exe文件,版本信息会显示错误)

VersionInfo.rc文件如果包含中文,则需要使用GB2312编码保存。若使用UTF-8,则中文会乱码。

按照模板修改得到资源文件后,需要首先编译资源文件为.o文件。MinGW存在一个专门用于编译资源文件的windres程序,使用以下命令将其编译为VersionInfo.o

windres VersionInfo.rc -O coff -o VersionInfo.o

然后通过在GCC编译程序命令中添加VersionInfo文件进行目标程序编译:

gcc -o MyAPP.exe MyAPP.c VersionInfo.o

参考资料:

VERSIONINFO 资源 - Win32 apps | Microsoft Learn
https://learn.microsoft.com/zh-cn/windows/win32/menurc/versioninfo-resource

VarFileInfo BLOCK 语句 - Win32 apps | Microsoft Learn
https://learn.microsoft.com/zh-cn/windows/win32/menurc/varfileinfo-block

StringFileInfo BLOCK 语句 - Win32 apps | Microsoft Learn
https://learn.microsoft.com/zh-cn/windows/win32/menurc/stringfileinfo-block

CMake为DLL添加版本信息 - 知乎
https://zhuanlan.zhihu.com/p/97512450

办公椅年久失修时的拆卸技巧

拆卸办公椅坐垫与气压杆连接

方法一:

找一位好朋友协助你进行拆卸。两人分别按住办公椅的左右一侧,然后像压跷跷板一样,你向下用力按压时,对方用力向上提;然后你用力向上提时对方用力向下压。不断重复几十秒一般就能拆下来。如果拆不下来,休息一会继续重复压跷跷板的游戏即可。
拆卸前可用用记号笔在气压杆上描一个位置,用来在拆卸过程中确认有没有效果。上面的方法适合没有或不方便使用锤子的场合,而椅子坐垫的托盘断裂等情况,不适应此方法。

方法二:

找一把比较重的锤子。气压杆升到最高,一手握气压杆倒提椅子,另一手拿锤子用力敲打金属托盘靠近气压杆连接的位置,担心掉漆可以垫一点纸皮。注意不能只敲击一侧,要延气压杆转圈敲打以保持平衡,如果敲歪了会更难取下。此方法讲究大力出奇迹,也可找一位朋友,一人提椅子一人砸,注意配合过程不要砸到手。

拆卸气压杆与五星脚的连接

需要拆卸气压杆与五星脚连接,常见情况下是气压杆损坏,需要更换气压杆。通过上面方法拆下坐垫后,手提五星脚倒置,通过转圈敲击气压杆外壳的边缘,将其从五星脚中敲出。担心刮到的位置可以垫一点纸皮。注意避免砸到气压杆中间的部分,以免损坏气压杆结构,造成爆炸。

BL-RM7620N折腾笔记

事情起因是这样的。公司搬家捡垃圾,捡到了一路由器,看网口四根针,确认是百兆的垃圾路由器。本想丢掉,但后面标签写的制造商不太常见,所以捡回来拆了看什么方案。拆开看了眼板号是BL-RM7620N,布线一眼就知MT7620N,但串口上焊了一枚CC2530模组,看起来与Zigbee有关。那我必须登上管理页面看看。

OpenWrt 安全模式

通过自动获取IP,获得了路由器管理页面地址,登上去看到是运行的OpenWrt 14(Barrier Breaker)。尝试使用常见的弱口令登录,发现都登不上。接下来能做的就是清除掉密码啦。

与常见的消费级路由器相比,OpenWrt不能通过长按Rest恢复默认设置(这种自定义固件恢复默认设置后,它的密码可能我也不知道)。经过一番搜索,了解到OpenWrt内置了安全模式(failsafe mode)用于在忘记密码或配置错误后进行恢复,如果编译时不取消掉,默认该模式是提供的。

进入安全模式的方式有两种:在系统的启动过程中按下物理按键不松手、通过串口在系统提示按 f 和 Enter 进入 failsafe mode时输入按键。一旦进入安全模式,OpenWrt会绕过几乎所有的配置,使用192.168.1.1作为IP地址启动必要的服务。然后手动设置计算机IP为192.168.1.2,即可无需密码使用 telnet 连接并修复某些错误。

第一种方式通过按键进入。这很难把握时机,按键过早会进入Bootloader,按键晚了进不去安全模式。笔者试了几次没成功就放弃啦。

第二种方式通过串口进入。把上面的ZigBee模组拆除,暴露串口。通过USB2TTL线连接到计算机,注意只连接GND、TXD、RXD就好,TXD与RXD要交叉连接呦。波特率57600,打开串口,路由器插电开机,没一会儿,串口开始打印SPI Flash分区布局等启动信息,然后就看到了期望的failsafe mode提示信息:

Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level

此时,通过键盘输入 f ,然后按 Enter 键,就会看到 - failsafe - 的提示信息,然后显示BusyBox shell界面,成功进入安全模式。

进入安全模式后,我们需要通过 mount_root 命令重新挂载分区才可以写入配置文件,否则就会提示要修改的文件是Read-only file system。

root@(none):/# mount_root
jffs2 is ready

然后输入 passwd 根据提示两次输入同一密码即可更改密码。

root@(none):/# passwd
Changing password for root
New password:
Retype password:
Password for root changed by root

然后通过 reboot -f 命令重启OpenWrt,即可使用新设置的密码登录。

注:通过 uci get network.lan.ipaddr命令可以获取路由器IP地址配置,通过 mtd -r erase rootfs_data命令可以恢复默认配置。

刷机

登录管理页面后大失所望,Luci的界面干净的很,没有什么好康的。考虑这玩意儿不知道里面有啥东西,打算刷个机丢公司让他继续发热。就用SNR CPE-W4N rev. M的固件,他们PCB、Flash容量一毛一样。

通过密码登录Luci后,直接固件升级新的OpenWrt sysupgrade文件就可以。或者按住RESET键上电在Bootloader里面升级也可以。

# Stable Release 版本下载地址:
https://downloads.openwrt.org/releases/
# Development Snapshot 版本下载地址:
https://downloads.openwrt.org/snapshots/targets/

SSH登录

刷完机发现打不开管理页面了,不慌,SSH上去看看。然后我丢,SSH怎么也上不去,仔细一看,是本地计算机发现对端的验证信息改变了:

C:\Users\Lexsion>ssh root@192.168.1.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.

那我们就使用 ssh-keygen -R XXX.XXX.XXX.XXX 把之前缓存的验证信息删除,XXX.XXX.XXX.XXX是对端的IP地址。

C:\Users\Lexsion>ssh-keygen -R 192.168.1.1
# Host 192.168.1.1 found: line 5
C:\Users\Lexsion/.ssh/known_hosts updated.
Original contents retained as C:\Users\Lexsion/.ssh/known_hosts.old

然后我们就成功使用 ssh USERNAME@HOST_IP命令连接路由器的shell。

C:\Users\Lexsion>ssh root@192.168.1.1
The authenticity of host '192.168.1.1 (192.168.1.1)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxx/xxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.1' (ED25519) to the list of known hosts.


BusyBox v1.36.1 (2023-12-15 10:44:38 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r24661-a14240d384
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:~#

安装LUCI与中文语言包

通过执行 opkg list-installed命令查看已经安装的软件包,发现果然没有Luci,那二话不说,给它WAN口插网线,装一个Luci。

root@OpenWrt:~# opkg update
Downloading https://downloads.openwrt.org/snapshots/targets/ramips/mt7620/packages/Packages.gz
Updated list of available packages in /var/opkg-lists/openwrt_core
Downloading https://downloads.openwrt.org/snapshots/targets/ramips/mt7620/packages/Packages.sig
Signature check passed.
······
Downloading https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/telephony/Packages.sig
Signature check passed.
root@OpenWrt:~# opkg install luci
Installing luci (git-23.051.66410-a505bb1) to root...
Downloading https://downloads.openwrt.org/snapshots/packages/mipsel_24kc/luci/luci_git-23.051.66410-a505bb1_all.ipk
······
Configuring ······
······
Configuring luci.

然后网页就有了,登录后发现系统的语言只有英语,那就去system-->Software下搜索zh-cn,下载中文语言包就变成中文啦。

普源MSO5000系列示波器破解选件

前言

几年前,笔者有幸听闻民族品牌 日狗(RIGOL-普源)有一个系列高低配版本通过软件限制,硬件完全一样,国外有大神购买低配版本,对其系统进行破解。因去年双十一京东折扣较大,今年早早便开始关注该机器的价格变化。果不其然,在今年双十一期间MSO5074价格美丽。你买了么?

首先介绍一下该系列的命名规则。型号中的MSO5表示其属于MSO5000系列,07表示带宽为70MHz,4表示四个通道。该系列型号命名MSO表示它属于混合信号示波器(Mixed Signal Oscilloscope),它将数字存储示波器(DSO)与逻辑分析仪(LA)的部分测量功能整合在一台仪器中,以能够在同一显示屏幕上看到多个时间对齐的模拟和数字波形。

尽管混合信号示波器的优势在于混合信号的分析,但MSO5000系列的LA探头(PLA2216)并非标配,而是以选件形式存在,价格当然是非常昂贵。而国外有大神自行设计了较低成本的探头方案,本文暂不讨论,有需要的朋友可以自行搜索。

本文是对EEVblog社区的Hacking the Rigol MSO5000 series oscilloscopes帖子中最新固件的破解内容整理。

备份

一份成熟的固件破解方案少不了备份,通过大佬tv84提供的备份脚本可以快速对MSO5000进行备份。

首先下载解压第一个文件中的DS5000Update.GEL文件到一个FAT32 U盘(空间>1GB)中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 ->本地升级,点击确定以开始运行并等待脚本执行结束。结束后关闭电压拔下U盘,在电脑上检查备份文件并将其转移至安全的位置存储,最后删除文件。

然后下载解压第二个文件中的DS5000Update.GEL文件,重复上一步骤的操作。

破解步骤

大佬qali.pro提供了本破解。

  1. 升级系统

笔者到手的固件版本是v00.01.03.00.03,发布时间是2021/10/18,这是目前的最新版本。查看固件版本请按 Utility 键,然后在弹出的辅助菜单中选择 系统 -> 帮助 -> 关于此示波器。如果您的系统不是该版本,使用本破解需要先升级到该版本。如果您的系统是该版本,请跳过这一步。

访问RIGOL官方固件下载链接获取固件。解压DS5000Update.GEL文件到一个FAT32 U盘中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 本地升级,点击确定以开始运行升级。等待完成升级。

  1. 破解固件

下载Patch.zip文件并将其中的三个文件解压到一个FAT32 U盘中,插入示波器。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 本地升级。点击确定开始破解流程。

等待示波器进入白屏命令行界面,然后在屏幕显示 Press any key on the scope to continue...时按屏幕右侧任意按键,整个过程中该提示会出现两次。之后示波器会黑屏几十秒,等其自动重启即可完成破解,不需要按电源键。

此时按 Utility 键,在弹出的辅助菜单中选择 系统 -> 帮助 -> 选件列表,即可看到选件的License全部显示Forever,这表示您已破解了所有选件。

  1. 自校正

最后,按大佬的说法,需要重新运行示波器的自校正。在自校正前需要保证示波器已经热机,即开机运行了半个小时以上。按 Utility 键,在弹出的辅助菜单中选择 系统 -> 自校正,然后点击开始键进行自校正,整个过程可能需要几十分钟。

如果您需要去除破解状态,您可以使用官方升级文件运行本地升级流程。

参考

Hacking the Rigol MSO5000 series oscilloscopes-EEVblog

H3C WA4320H-SI-FIT USB 连接串口按键无效踩坑记

前言:

今天与新华三的技术支持一起研究给H3C的一个墙面AP刷固件,AP型号是WA4320H-SI-FIT,瘦AP。我们要做的是通过串口命令刷固件,这个机型的串口是通过Micro USB接口连接到电脑识别的。通过数据线连接电脑后,电脑顺利的出现了一个COM口,使用MobaXterm顺利连接串口,也看到了串口打印的日志。但在提示 Press ENTER to get started 时,按ENTER键却没有任何反应,我们尝试重启后在前面的 Press Ctrl-B to ...时按Ctrl+B,也没有任何反应。新华三技术支持表示遇到过数据线不良导致此问题的,但我这换了几根线后依然如此,可以排除线的问题。

故障原因:

在一切陷入僵局后,向公司的大佬求助。大佬插到他的笔记本上,Ctrl+B一按下去,启动过程就被终止了。本来我想的是机器原始固件有限制,不识别按键输入,大佬上肯定也补星。大佬成功后我当即傻眼,随后脑子里放电影似的回忆大佬操作过程和我哪里不一样,发觉在大佬笔记本的设备管理器里,串口设备名称貌似和我不一样,这说明串口驱动不一样! 如此说来,会不会是驱动不兼容导致的呢?事实证明,确实如此!

故障处理:

于是,我求大佬让我再看了一眼他的设备管理器,记下了大佬的串口名称是 XR21V1410后马不停蹄跑回自己电脑旁 ,看我的电脑则是什么Microsoft USB Serial Port。至于XR21V1410 是什么,我是从未听说过,于是我去搜索了一番,发现这是MaxLinear公司的一款USB转串口芯片。

立刻从官方产品页下载了最新的Windows驱动程序,然后解压。在串口上右击,更新驱动,定位到刚解压的驱动,进行更新,完事儿就能正常使用了!

其他原因:

此处列出其他可能的原因:

  1. 数据线不良导致传输数据不稳定。

    更换更好的数据线。

  2. 串口配置信息错误。

    波特率9600,数据位8,停止位1,无奇偶校验与流控。某些Shell默认打开流控,需要取消掉。