我想从 3G 调制解调器中提取和记录各种参数,因为存在间歇性丢失。因此,我使用 wget3Ginfo.html
从 3G 调制解调器读取并将内容放入文件contents.txt
中。使用 Notepad++ 打开此文件会显示所有数据。
由于我的声誉,我无法发布图片,因此下面的代码是我能做的最好的;从记事本++(打开查看所有字符),我得到:
<tr>[LF]
<td class='hd'>Signal Strength:</td>[LF]
<td>[LF]
-72[CR]
 (dBm) (High)</td>[LF]
</tr>[LF]
但是,当从 Perl 逐行读取文件时,很明显行数少于 Notepad++ 报告的行数,并且数据丢失。在这种情况下,缺少实际信号强度值。
这是读取文件的 Perl 代码:
open hLOGFILE, "<output.txt";
while (<hLOGFILE>)
{
print "Line no $. Text is $_ ";
}
这是输出(作为文本,因为我还不能发布图片):
Line no 98 Text is <tr>
Line no 99 Text is <td class='hd'>Signal Strength:</td>
Line no 100 Text is <td>
 (dBm) (High)</td>
Line no 102 Text is </tr>
很明显,有缺失的行,它与<cr>
行结束符有关。我试过啜饮文件,但这些行仍然丢失。
除了逐字节读取然后尝试以这种方式解析文件(这不是很吸引人)之外,我找不到解决方案。
我的计划是每分钟左右简单地提取和记录感兴趣的行。
我尝试打开指定各种编码的文件,但仍然没有乐趣。如果 Notepad++ 可以读取并显示所有数据,为什么它在 Perl 中不起作用。从 Windows XP 命令行使用more
时,它显示数据也丢失了。
当我从 chrome 查看源代码时,我得到了,
<tr>
<td class='hd'>Received Signal Code Power(RSCP):</td>
<td align='center'> -78 dBm</td>
</tr>