WinForm—串口通讯
ialPort(串行端口资源)
常用属性:
BaudRate 此串行端口上要使用的波特率
DataBits 每发送/接收一个字节的数据位数目
DtrEnable 在通讯过程中是否启用数据终端就绪(Str)行
PortName 要打开的通讯端口的名称
RtsEnable 在通讯过程中是否启用请求发送(Rts)行
StopBits 每发送/接收一个字节的停止位数
常用事件:
DataReceived 每次从SerialPort接收数据时引发
应用:
0、查询串口 并加载

1、打开串口

2、发送数据


3、接收数据
//SerialPort数据读取
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//此项目接收数据每12位为一组,并以“02”为开始标识符,第2到第7位的最后一个数字为传输的数据 //延迟100ms执行,为了防止SerialPort获取数据时,获取到的数据少于12位,显示框不显示数据问题
Thread.Sleep();
//当接收到的数据>=12位,即一个完整的数据时,再进行数据读取分析
if (serialPort1.BytesToRead >= )
{
try
{
//将缓存区的数据放入by数组中
byte[] by = new byte[serialPort1.BytesToRead];
while (serialPort1.BytesToRead > )
{
//★★★端口控件读取数据★★★
serialPort1.Read(by, , by.Length);
}
//result为最终显示结果
string result = "";
//循环判断by数组,找到开始标识符“02”
for (int j = ; j < by.Length; j++)
{
//将当前数据转换为16进制字符串后,不足2位的向左用“0”补齐
string currentby = Convert.ToString(by[j], ).PadLeft(, '');
//如果当前为数据开始标识符,则读取分析数据
if (currentby == "")
{
//当剩余数据包换一个完整的12位数据时进行读取分析
if (by.Length - j > )
{
//第2位开始到第7位结束,共6位为传输的数据
for (int k = j + ; k <= j + ; k++)
{
currentby = Convert.ToString(by[k], ).PadLeft(, '');
result += currentby.Substring(, );
//前三位为整数部分,后三位为小数部分
if (k == j + )
{
result += ".";
}
}
}
//展示数据
txt_Weight.Text = (Convert.ToDecimal(result)).ToString();
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
SerialPort控件数据读取
4、数据接收错误
错误:将返回的数据处理后倒入指定的文本框,因线程问题出现错误

解决方案:Form.CheckForIllegalCrossThreadCalls = false;

WinForm—串口通讯的更多相关文章
- Winform 串口通讯之地磅
继上次的读卡之后,要做一个地磅的读取. 下面是我在读卡Demo上改的读取地磅的. 地磅是一直向串口发送数据的,所以需要截取数据来一直判断数据是否合法,然后计算出结果. 其中遇到了一个小问题,文末有介绍 ...
- Winform 串口通讯之读卡器
老板给我的第一个硬件就是一个读卡器, 说让我做一下试试,于是从网上查了查就写了出来,相当的简单. 但是后来还有一个地磅的串口通讯,我整整搞了一天. 在窗体类的构造函数中写入 Form.CheckFor ...
- C#串口通讯
本文提供一个用C#实现串口通讯实例,亲自编写,亲测可用! 开发环境:VS2008+.net FrameWork3.5(实际上2.0应该也可以) 第一步 创建一个WinForm窗体,拉入一些界面元素 重 ...
- C#串口通讯概念以及简单实现
最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...
- 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现
目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...
- C#串口通讯实例
本文参考<C#网络通信程序设计>(张晓明 编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...
- delphi之动态库调用和串口通讯
串口通讯: Spcomm 控件属性: CommName :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...
- 用SPCOMM 在 Delphi中实现串口通讯 转
用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...
- 西门子plc串口通讯方式
西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...
随机推荐
- 2018.09.10 loj#10172. 涂抹果酱(状压dp)
传送门 三进制状压感觉有点难写啊. 不过这题状态转移方程挺简单的. 就直接f[i][j]表示前i行第i行状态为j时的选法总数,分情况转移就行了. 代码: #include<bits/stdc++ ...
- 2018.08.22 codves2370 小机房的树(lca+树上差分)
传送门 一道板子题. 直接树链剖分维护树上lca然后差分就行了. 代码: #include<bits/stdc++.h> #define N 50005 #define lc (p< ...
- VHDL的库
STD_LOGIC_ARITH 扩展了UNSIGNED.SIGNED.SMALL_INT(短整型)三个数据类型,并定义了相关的算术运算和转换函数. --======================== ...
- jdbcmysql
做java开发难免会用到数据库,操作数据库也是java开发的核心技术.那我们现在就来谈谈javajdbc来操作mysql数据库吧 第一步:我们需要把mysql的驱动引进来这里引驱动就是把mysql-c ...
- 10.N个整数中查找是否相加为K[深度搜索]
/*摘自书本,这种算法很绕!*/ #include <iostream> using namespace std; ,,,}; ; bool dfs(int i,int sum) { if ...
- 添加安全认证的webservice
添加个Key类继承SoapHeader public class KEY : SoapHeader{ public KEY() { // //TODO: 在此处 ...
- 最佳编程字体:M+
英文原文:The Best Font for Programming: M+ 程序员的最佳等宽字体是 M+. 一个偶然机会遇到了这个字体,在命运多舛的 kod 编辑器体验了.这个字体非比寻常,我坚持 ...
- Ubuntu14.04下Pycharm3.4 字体渲染
在ubuntu下搭建了django的开发环境,搭建过程十分简单,Pycharm的安装更简单,下载tar包解压并执行bin目录下的脚本即可,但是看着那个字体真心不爽.于是开始搜索调教. 1.安装打了渲染 ...
- django分页及搜索后如何翻页
django自带了Pagnator 导入 from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage 分页 def ...
- C#开发微信小程序
个人见解,欢迎交流,不喜勿喷. 微信小程序相比于微信公众号的开发,区别在于微信小程序只请求第三方的数据,整个界面的交互(view)还是在微信小程序上实现,前后端完全分离,说白了,微信小程序开发与具 ...