无法使用File.ReadAllLines读取文件

时间:2014-11-06 22:32:13

标签: c# .net loops for-loop file.readalllines

我正在尝试按一个按钮检查openFileDialog1.FileName中文件的每一行,如果它包含其中一个字符串," LCD"或者"激光" " on"在同一条线上,或者它包含" laser"和"关"在同一行和字符串" .end"然后做点什么。

我是C#的新手(本周开始),也不是母语为英语的人。

我的目标是让我的Arduino Robot手臂(我的第一个版本非常简单)可编程,只是为了控制LCD并打开或关闭激光(到目前为止)。

BTW这只是模拟器,这就是为什么它永远不会发送任何串行数据。

以下是问题代码的片段,问题是当我"运行"它在模拟器中的代码似乎是一次检查所有行,因为在它检查的代码中,这是

LCD = hello  
laser = on  
LCD = 000  
laser = off

它只将LCD设置为000,我之前单独检查过laser = on代码并且它没有在那里工作但是当我在private void Form3_Load(object sender, EventArgs e)中尝试它时它工作得很好,所以底线最后每个代码中的LCD命令都有效,激光代码不起作用。

我也想让每一行代表1秒,所以每一行都需要一秒钟才能继续下一行。

timer1间隔为1000(一秒)

  private void timer1_Tick(object sender, EventArgs e)
    {

        int lineNumber = richTextBox1.GetLineFromCharIndex(richTextBox1.TextLength);


        string[] lines = File.ReadAllLines(openFileDialog1.FileName);

        try
        {

            for (int i = 0; i < lineNumber; i++)
            {
                if (lines[i].Contains("LCD"))
                {
                    label1.Text = lines[i].Remove(0, 6);
                }
                if (lines[i].Contains("laser") && lines[i].Contains("On"))
                {
                    pictureBox4.Show();
                }
                if (lines[i].Contains("laser") && lines[i].Contains("Off"))
                {
                    pictureBox4.Hide();
                }
                if (lines[i].Contains(".end"))
                {
                    button2.PerformClick();
                } 

            } 
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Form3", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

1 个答案:

答案 0 :(得分:2)

这里的问题是,您希望将File.ReadAllLines()之外的代码置于代码之外,每秒调用timer1_Tick()一次。每次计时器打勾时你都会读取整个文件,当你真正想要做的只是处理文件的一行时。