无法使用 File.ReadAllLines 读取文件



我正在尝试让一个按钮检查openFileDialog1.FileName中文件的每一行,检查它是否包含同一行上的字符串"LCD"或"laser"one_answers"on",或者它是否包含相同行上的"laser"one_answers"off"以及字符串".end",然后做点什么。

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

我的目标是让我的Arduino机器人手臂(我的第一个构建非常简单)有点可编程,只是为了控制LCD和打开或关闭激光(到目前为止)。

顺便说一句,这只是模拟器,所以它从不发送任何串行数据。

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

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

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

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

timer1间隔为1000(1秒)

  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);
        }

这里的问题是,您希望将执行File.ReadAllLines()的代码放在每秒调用一次timer1_Tick()的代码之外。每当计时器滴答作响时,你就会读取整个文件,而你真正想做的只是处理文件的一行。

相关内容

  • 没有找到相关文章

最新更新