C#實(shí)現(xiàn)連接電子秤串口自動稱重
更新時(shí)間:2022年04月27日 11:24:58 作者:農(nóng)碼一生
這篇文章介紹了C#實(shí)現(xiàn)連接電子秤串口自動稱重的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
一、界面設(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;//兩個(gè)停止位
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)文章
C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實(shí)例詳解
這篇文章主要介紹了C#數(shù)據(jù)結(jié)構(gòu)之單鏈表(LinkList)實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了單鏈表的原理、定義與C#具體實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
Unity UI實(shí)現(xiàn)循環(huán)播放序列圖
這篇文章主要為大家詳細(xì)介紹了Unity UI實(shí)現(xiàn)循環(huán)播放序列圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
C#?WPF實(shí)現(xiàn)播放音頻文件的示例詳解
這篇文章主要為大家詳細(xì)介紹了利用C#?WPF實(shí)現(xiàn)播放音頻文件的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03

