程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> serial ort-C#serialPort實現串口通信

serial ort-C#serialPort實現串口通信

編輯:編程綜合問答
C#serialPort實現串口通信

我想實現的是上位機發送數據,然後接收數據,然後上位機處理數據,再繼續發送數據一直循環到結束。
目前的問題就是,我通過以下代碼實現的是在循環調用測試函數,循環運行完了以後,才開始讀取數據

 public Form1()
        {
            InitializeComponent();
            serialPort1.DataReceived += serialPort1_DataReceived;
        }

                 private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {

            this.Invoke(new EventHandler(Read));

        }

        private void Read(object s, EventArgs e)
        {
                    int n = serialPort1.BytesToRead;
            byte[] buf = new byte[n];
            serialPort1.Read(buf, 0, n);
                        data_catched=true;
                }
                public bool test_CA()
        {//測試CA

            //定義附加信息
            Byte[] test_CA_add = new Byte[1] { 0x00 };
            //發送命令幀
            Write(test_cmd_CA, test_CA_add);//發送數據函數測試無誤,並在發送完後立刻有數據返回

            byte test_CA_data;

            //時延等待接收數據
            for (int i = 0; !data_catched && i < 300; i++)
            {
                Thread.Sleep(10);
            }

            if (!data_catched)
            {
                        //處理數據
                        }
                        data_catched=false;
            }

最佳回答:


for (int i = 0; !data_catched && i < 300; i++)
{
Thread.Sleep(10);
Application.DoEvents();
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved