C#實(shí)現(xiàn)連接電子秤串口自動稱重
一、界面設(shè)計(jì)
二、核心代碼
private SerialPort com; private void FormCheck_Load(object sender, EventArgs e) { //初始化COMList initCOMList(); } #region private void initCOMList() { ManageCOM com = new ManageCOM(); List<string> s = com.AutoGetCOM(); string[] comNames = s.ToArray(); comboxCOM.Items.Clear(); comboxCOM.Items.Add("請選擇COM"); comboxCOM.SelectedIndex = 0; foreach (string portName in comNames) { //添加COM口到界面下拉框 comboxCOM.Items.Add(portName); } } #endregion private void btnStart_Click(object sender, EventArgs e) { getWeightfromCOM(); } #region private void getWeightfromCOM() { int selectIndex= comboxCOM.SelectedIndex; if (selectIndex!=0) { string COM = comboxCOM.Items[selectIndex].ToString(); com = new SerialPort(COM); //實(shí)例化SerialPort并設(shè)置COM口 com.BaudRate = 9600;//波特率 com.Parity = Parity.None;//無奇偶校驗(yàn)位 com.StopBits = StopBits.Two;//兩個停止位 com.Handshake = Handshake.RequestToSend;//控制協(xié)議 com.ReceivedBytesThreshold = 13;//設(shè)置 DataReceived 事件發(fā)生前內(nèi)部輸入緩沖區(qū)中的字節(jié)數(shù),我這里是13字節(jié)為一組 com.Open(); //打開串口 com.DataReceived += new SerialDataReceivedEventHandler(Com_DataReceived); //接受數(shù)據(jù)線程 } else { MessageBox.Show("請選擇COM"); } } /// <summary> /// 監(jiān)聽串口數(shù)據(jù)線程 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Com_DataReceived(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(500);//線程休眠500毫秒,方便接收串口的全部數(shù)據(jù) try { if (com.IsOpen) { byte[] readBuffer = new byte[com.ReadBufferSize + 1]; try { int count = com.Read(readBuffer, 0, com.ReadBufferSize); //讀取串口數(shù)據(jù)(監(jiān)聽) String SerialIn = System.Text.Encoding.ASCII.GetString(readBuffer, 0, count);//將字節(jié)數(shù)組解碼為字符串 if (count != 0) { //這里強(qiáng)調(diào)一下,線程里不可以直接對UI進(jìn)行賦值,只能使用委托操作控件 this.BeginInvoke(new System.Threading.ThreadStart(delegate () { rbResult.Text = SerialIn; })); } } catch (TimeoutException) { } } else { TimeSpan waitTime = new TimeSpan(0, 0, 0, 0, 50); Thread.Sleep(waitTime); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } #endregion
到此這篇關(guān)于C#實(shí)現(xiàn)連接電子秤串口自動稱重的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Repeater中添加按鈕實(shí)現(xiàn)點(diǎn)擊按鈕獲取某一行數(shù)據(jù)的方法
這篇文章主要介紹了Repeater中添加按鈕實(shí)現(xiàn)點(diǎn)擊按鈕獲取某一行數(shù)據(jù)的方法,是非常實(shí)用的一個技巧,需要的朋友可以參考下2014-08-08淺析c#范型中的特殊關(guān)鍵字where & default
以下是對c#范型中的特殊關(guān)鍵字where和default進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下2013-09-09C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法示例
這篇文章主要介紹了C#使用FileStream循環(huán)讀取大文件數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了FileStream文件流的形式循環(huán)讀取大文件的相關(guān)操作技巧,需要的朋友可以參考下2017-05-05Unity實(shí)現(xiàn)移動物體到鼠標(biāo)點(diǎn)擊位置
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)移動物體到鼠標(biāo)點(diǎn)擊位置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08C#中this用法系列(二) 通過this修飾符為原始類型擴(kuò)展方法
定義一個靜態(tài)類,類中定義靜態(tài)方法,方法中參數(shù)類型前邊加上this修飾符,即可實(shí)現(xiàn)對參數(shù)類型的方法擴(kuò)展,下面通過實(shí)例代碼給大家介紹下,需要的朋友參考下吧2016-12-12C#操作DataTable方法實(shí)現(xiàn)過濾、取前N條數(shù)據(jù)及獲取指定列數(shù)據(jù)列表的方法
這篇文章主要介紹了C#操作DataTable方法實(shí)現(xiàn)過濾、取前N條數(shù)據(jù)及獲取指定列數(shù)據(jù)列表的方法,實(shí)例分析了C#操作DataTable的各種常用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04.NET使用IResourceMonitor實(shí)現(xiàn)獲取資源信息
在 Microsoft.Extensions.Diagnostics.ResourceMonitoring 包提供了一系列定制 API,專用于監(jiān)視 .NET 應(yīng)用程序的資源利用率,本文將利用IResourceMonitor來實(shí)現(xiàn)獲取資源狀態(tài)信息,感興趣的可以了解下2024-01-01