为了账号安全,请及时绑定邮箱和手机立即绑定

写入串行 COM 端口时如何实现异步功能?

写入串行 COM 端口时如何实现异步功能?

C#
呼啦一阵风 2021-06-30 16:40:23
我有一个程序每 X 秒报告一次串行 COM 上的文件夹结构的大小。当用户也通过串行 COM 发送命令时,它还能够报告文件夹结构中所有文件的列表。例如:用户每 10 秒获取一次大小信息,在某些时候他们想知道文件列表。所以他们通过 COM 端口发送一个“1”,然后程序开始报告文件。我遇到的问题是两个函数不能同时写入 COM 端口,因此它开始抛出异常。我想做的是让两个功能等到另一个完成。这是我的代码。这是写入 COM 端口的简单功能:private void ComWrite(string msg){    ComPort.Write(msg);}我从这两个功能中调用它:这个报告文件名:private void GetFileNames(){    fileNames = Directory.GetFiles(textBox1.Text, "*.wav", SearchOption.AllDirectories);    for (int i = 0; i < fileNames.Length; i++)    {        ComWrite((fileNames[i] + "\r\n"));    }}这是一个计时器并报告文件夹大小:public void OnTimedEvent(object source, ElapsedEventArgs elapsed){    folderSize = DirSize(new DirectoryInfo(textBox1.Text)) / 1000000;    string labelText = folderSize.ToString() + "Mb";    label3.Text = labelText;    if (checkBox1.Checked)    {        try        {            ComWrite(labelText + "\r\n");            label9.Text = labelText;        }        catch (Exception)        {            MessageBox.Show("Please Open COMPORT before sending command");        }    }}我怎样才能实现异步函数,或者其他一些阻止它们相互摔倒的方法?编辑:请求的代码。这是在表单加载时设置 COM 端口。    private void Form1_Load(object sender, EventArgs e)    {        label5.Text = "Idle";        ComPort.BaudRate = Convert.ToInt32("9600");        ComPort.DataBits = Convert.ToInt16("8");        ComPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), "One");        ComPort.Handshake = (Handshake)Enum.Parse(typeof(Handshake), "None");        ComPort.Parity = (Parity)Enum.Parse(typeof(Parity), "None");    }然后您打开您通过组合框选择的 COM 端口,单击此处:   private void btnPortState_Click(object sender, EventArgs e)    {        try        {            if (btnPortState.Text == "COMPort Closed / Click to Open")            {                btnPortState.BackColor = Color.Green;                btnPortState.Text = "COMPort Open / Click To Close";                ComPort.PortName = Convert.ToString(cboPorts.Text);                ComPort.Open();            }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信