winform串口传文件

winform串口传文件,第1张

winform串口文件

两个计算机的users 通过使用SerialPort class 去进行聊天 ,两个电脑通过的是a null modem cable(这里应该指的是串口线,因为RS232线的名字是RS232 Cable (Null Modem Cable))进行连接。winform串口传文件我们现阶段主要实现的从串口中获取数据,写数据暂时不需要,所以我们可以在里面提取我们需要的部分。

先读取所有的行,然后遍历这些行,对第一个字符串进行验证即可。

StringBuilder

content

=

new

StringBuilder()

string[]

allLines

=

File.ReadAllLines(txtPath)

for

(int

i

=

1

i

<

allLines.Length

i++)

{

//

如果是用“Tab”隔开字符串

var

values

=

allLines[i].Split('\t')

if(string.Equals(values[0],你的验证字符串)

{

//

如果相等说明是符合条件的,则记录这一行

content.Append(allLines[i]+"\r\n")

}

}

//

写入新的txt文件

FileStream

fs

=

new

FileStream(newFilePath,

FileMode.Open,

FileAccess.Write)

byte[]

bytes

=

Encoding.Default.GetBytes(content)

fs.Write(bytes,

0,

bytes.Length)

fs.Close()

1)在Form1上布置一个PorgressBar,名称progressBar1

2)在Form1上布置一个Button,名称:button1, Text:导入

3)在Form1上布置一个Button,名称:button2, Text:取消导入

4)在Form1上布置一个BackgroundWorker,名称:backgroundWorker1

5)在Form1上布置一个Label,名称:label1

using System

using System.Collections.Generic

using System.ComponentModel

using System.Data

using System.Drawing

using System.Linq

using System.Text

using System.Windows.Forms

using System.IO

namespace WinFormBackgroundWorker

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent()

            //设置 backgroundWorker1

            //允许报告后台处理进度

            backgroundWorker1.WorkerReportsProgress = true

            //运行取消后台执行

            backgroundWorker1.WorkerSupportsCancellation = true

            //事件

            backgroundWorker1.DoWork += backgroundWorker1_DoWork

            backgroundWorker1.RunWorkerCompleted += 

                backgroundWorker1_RunWorkerCompleted

            backgroundWorker1.ProgressChanged += 

                backgroundWorker1_ProgressChanged

            //progressBar1

            progressBar1.Maximum = 100

            //按钮

            button1.Enabled = true

            button2.Enabled = false

            //lable1

            label1.Text=string.Empty

        }

        void backgroundWorker1_ProgressChanged(object sender, 

            ProgressChangedEventArgs e)

        {

            progressBar1.Value = e.ProgressPercentage

            label1.Text = (string)e.UserState

        }

        void backgroundWorker1_RunWorkerCompleted(object sender, 

            RunWorkerCompletedEventArgs e)

        {

            if (e.Cancelled)

            {

                label1.Text = "任务取消!"

                progressBar1.Value = 0

            }

            else

            {

                label1.Text = "任务完成!"

            }

            button1.Enabled = true

            button2.Enabled = false

        }

        void backgroundWorker1_DoWork(object sender, 

            DoWorkEventArgs e)

        {

            //获取文件夹中文件信息

            string[] files = Directory.GetFiles(@".")

            int i = 0

            foreach (var fs in files)

            {

                // 如果后台 *** 作处理过程中,用户按下取消键

                if (backgroundWorker1.CancellationPending)

                {

                    //停止后台处理

                    e.Cancel = true

                    break

                }

                

                i++

                string msg = "正在处理:" + fs

                backgroundWorker1.ReportProgress(i *100 /files.Length, msg)

                //用一个Sleeep,模拟处理文件的长耗时过程

                System.Threading.Thread.Sleep(2000)

            }

        }

        private void button1_Click(object sender, EventArgs e)

        {

            button1.Enabled = false

            button2.Enabled = true

            //异步启动后台任务(多线程方式)

            backgroundWorker1.RunWorkerAsync()

        }

        private void button2_Click(object sender, EventArgs e)

        {

            //取消后台 *** 作执行

            backgroundWorker1.CancelAsync()

        }

    }

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/tougao/11765804.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存