網(wǎng)站首頁 編程語言 正文
一、界面設計
二、核心代碼
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); //實例化SerialPort并設置COM口
com.BaudRate = 9600;//波特率
com.Parity = Parity.None;//無奇偶校驗位
com.StopBits = StopBits.Two;//兩個停止位
com.Handshake = Handshake.RequestToSend;//控制協(xié)議
com.ReceivedBytesThreshold = 13;//設置 DataReceived 事件發(fā)生前內部輸入緩沖區(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)
{
//這里強調一下,線程里不可以直接對UI進行賦值,只能使用委托操作控件
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
原文鏈接:https://www.cnblogs.com/wml-it/p/15910557.html
相關推薦
- 2022-07-09 使用python獲取cpu每秒的使用率_python
- 2022-07-27 python?[::-1]?[::-1,::-1]的具體使用_python
- 2023-03-05 Suspend函數(shù)與回調的互相轉換示例詳解_Android
- 2022-10-09 .NET使用Moq進行單元測試_實用技巧
- 2022-09-08 Go語言通道之無緩沖通道_Golang
- 2022-06-16 Linux系統(tǒng)下Go語言開發(fā)環(huán)境搭建_Golang
- 2022-10-31 解決Python3中二叉樹前序遍歷的迭代問題_python
- 2022-04-08 Unity?UGUI?按鈕綁定事件的?4?種方式匯總_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支