找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4319|回復(fù): 2
收起左側(cè)

C#實(shí)現(xiàn)串口通訊源碼

[復(fù)制鏈接]
ID:830600 發(fā)表于 2020-10-16 13:49 | 顯示全部樓層 |閱讀模式
667.jpg
主源碼:

  private void Form1_Load(object sender, EventArgs e)
        {
            for (int i = 1; i < 20; i++)
            {
                comboBox1.Items.Add("COM" + i.ToString());
            }
            comboBox1.Text = "COM4"; //串口號默認(rèn)值
            comboBox2.Text = "9600";  //波特率默認(rèn)值

            /************非常重要***************/
            serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); //必須手動添加事件
        }

        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)   //串口數(shù)據(jù)接收事件
        {
            if (!radioButton3.Checked) //如果接收模式為字符模式
            {
                string str = serialPort1.ReadExisting(); //字符串方式讀
                textBox1.AppendText(str);  //添加內(nèi)容
            }
/*           
              else //如果接收模式為數(shù)值接收
                        {
                            //易出現(xiàn)異常:由于線程退出或應(yīng)用程序請求,已中止 I/O 操作
                            //加入異常處理
                            try
                            {
                                int data;
                                data = serialPort1.ReadByte();
                                string str = Convert.ToString(data, 16).ToUpper();//轉(zhuǎn)換為大寫十六進(jìn)制字符串
                                textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");  //空位補(bǔ)“0”               
                            }
                            catch
                            {
                                this.Close();//關(guān)閉當(dāng)前窗體
                            }

                        }   
    */        

           else
            {   //如果接收模式為數(shù)值接收
                byte data;
                data = (byte)serialPort1.ReadByte();  //此處需要強(qiáng)制類型轉(zhuǎn)換,將(int)類型轉(zhuǎn)換為(byte類型數(shù)據(jù),不
                string str = Convert.ToString(data, 16).ToUpper();  //轉(zhuǎn)換為大寫十六進(jìn)制字符串
                textBox1.AppendText("0x" + (str.Length == 1 ? "0" + str : str) + " ");  //空位補(bǔ)“0”
                //上一句等同於:
                //          if (str.Length == 1)
                //        {
                //            str = "0" + str;
                //        }
                //          else
                //        {
                //            str = str;
                //            textBox1.AppendText("0x" + str);
                //}
            }   
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.PortName = comboBox1.Text;   //設(shè)置串口號
                serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text, 10); //十進(jìn)制數(shù)據(jù)轉(zhuǎn)換,設(shè)置波特率
                serialPort1.Open();  //打卡串口
                button1.Enabled = false; //打卡串口不可用
                button2.Enabled = true;  //關(guān)閉串口

            }
            catch
            {
                MessageBox.Show("端口錯(cuò)誤,請檢查串口", "錯(cuò)誤");
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.Close();  //關(guān)閉串口
                button1.Enabled = true;   //打卡串口按鈕可用
                button2.Enabled = false;  //關(guān)閉串口按鈕不可用

            }
            catch   //一般情況下關(guān)閉串口不會出現(xiàn)錯(cuò)誤,所有不需要加處理程序
            {
                MessageBox.Show("串口關(guān)閉錯(cuò)誤", "錯(cuò)誤");
            }
        }
51hei.png

BBT6.zip

60.17 KB, 下載次數(shù): 88, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:635564 發(fā)表于 2020-10-25 13:39 | 顯示全部樓層
程序運(yùn)行正常,剛好用到串口學(xué)習(xí)一下,非常感謝樓主分享這么好的資料。
回復(fù)

使用道具 舉報(bào)

ID:794979 發(fā)表于 2020-10-27 09:27 | 顯示全部樓層
用的vc還是vs
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表