C#串口接收程序的實(shí)現(xiàn)
1.代碼
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); CheckForIllegalCrossThreadCalls = false; serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived); serialPort1.Encoding = Encoding.GetEncoding("GB2312"); System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; } /// /數(shù)據(jù)接收部分 private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)//接收函數(shù) { try { string recive_data; recive_data = serialPort1.ReadExisting(); recive_data = returnData.ToString(); textBox1.Text += recive_data; textBox1.AppendText("\r\n"); } catch { } } /// //搜索串口部分 private void button1_Click(object sender, EventArgs e) { SearchAnAddSerialToComboBox(serialPort1, comboBox1); } private void SearchAnAddSerialToComboBox(SerialPort MyPort, ComboBox MyBox)//搜索串口函數(shù) { //將可用的串口號(hào)添加到ComboBox string[] NmberOfport = new string[20];//最多容納20個(gè),太多會(huì)卡,影響效率 string MidString1;//中間數(shù)組,用于緩存 MyBox.Items.Clear();//清空combobox的內(nèi)容 for (int i = 1; i < 20; i++) { try //核心是靠try和catch 完成遍歷 { MidString1 = "COM" + i.ToString(); //把串口名字賦給MidString1 MyPort.PortName = MidString1; //把MidString1賦給 MyPort.PortName MyPort.Open(); //如果失敗,后面代碼不執(zhí)行?? NmberOfport[i - 1] = MidString1; //依次把MidString1的字符賦給NmberOfport MyBox.Items.Add(MidString1); //打開成功,添加到下列列表 MyPort.Close(); //關(guān)閉 MyBox.Text = NmberOfport[i - 1]; //顯示最后掃描成功那個(gè)串口 } catch { }; } } /// 打開串口部分 private void button2_Click(object sender, EventArgs e) { if (button2.Text == "打開串口")//為0時(shí),表示關(guān)閉,此時(shí)可以進(jìn)行打開操作 { try { serialPort1.PortName = comboBox1.Text;//獲取端口號(hào) serialPort1.BaudRate = Convert.ToInt32(comboBox2.Text);//設(shè)置波特率 //serialPort1.Parity = Parity.None; //serialPort1.DataBits = 8; //serialPort1.StopBits = StopBits.One; serialPort1.Open();//打開串口 button2.Text = " 關(guān)閉串口"; } catch { MessageBox.Show("串口打開錯(cuò)誤"); } } else //為1時(shí),表示開啟,此時(shí)可以進(jìn)行關(guān)閉操作 { try { serialPort1.Close();//關(guān)閉串口 button2.Text = "打開串口";//置位為0,表示狀態(tài)為關(guān)閉 } catch { } } } /// <summary> /// /清空顯示部分 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button3_Click(object sender, EventArgs e) { textBox1.Clear(); } } }
2.工具
串口虛擬軟件
串口軟件,發(fā)送數(shù)據(jù)
3.效果
到此這篇關(guān)于C#串口接收程序的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# 串口接收內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用timer實(shí)現(xiàn)的簡(jiǎn)單鬧鐘程序
這篇文章主要介紹了C#使用timer實(shí)現(xiàn)的簡(jiǎn)單鬧鐘程序,涉及timer控件的使用及音頻文件的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03C#檢測(cè)遠(yuǎn)程計(jì)算機(jī)端口是否打開的方法
這篇文章主要介紹了C#檢測(cè)遠(yuǎn)程計(jì)算機(jī)端口是否打開的方法,實(shí)例分析了C#實(shí)現(xiàn)檢測(cè)遠(yuǎn)程端口開啟的技巧,需要的朋友可以參考下2015-03-03利用C#實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)查詢
利用C#實(shí)現(xiàn)分布式數(shù)據(jù)庫(kù)查詢...2007-03-03C#中使用ArrayPool和MemoryPool實(shí)例
對(duì)資源的可復(fù)用是提升應(yīng)用程序性能的一個(gè)非常重要的手段,比如本篇要分享的 ArrayPool 和 MemoryPool,它們就有效的減少了內(nèi)存使用和對(duì)GC的壓力,從而提升應(yīng)用程序性能。感興趣的可以了解一下2021-05-05C#爬蟲基礎(chǔ)之HttpClient獲取HTTP請(qǐng)求與響應(yīng)
這篇文章介紹了C#使用HttpClient獲取HTTP請(qǐng)求與響應(yīng)的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05