亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

寫入串行 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 關注
  • 117 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號