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—串口通讯的更多相关文章

  1. Winform 串口通讯之地磅

    继上次的读卡之后,要做一个地磅的读取. 下面是我在读卡Demo上改的读取地磅的. 地磅是一直向串口发送数据的,所以需要截取数据来一直判断数据是否合法,然后计算出结果. 其中遇到了一个小问题,文末有介绍 ...

  2. Winform 串口通讯之读卡器

    老板给我的第一个硬件就是一个读卡器, 说让我做一下试试,于是从网上查了查就写了出来,相当的简单. 但是后来还有一个地磅的串口通讯,我整整搞了一天. 在窗体类的构造函数中写入 Form.CheckFor ...

  3. C#串口通讯

    本文提供一个用C#实现串口通讯实例,亲自编写,亲测可用! 开发环境:VS2008+.net FrameWork3.5(实际上2.0应该也可以) 第一步 创建一个WinForm窗体,拉入一些界面元素 重 ...

  4. C#串口通讯概念以及简单实现

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...

  5. 嵌入式Linux学习笔记(六) 上位机QT界面实现和串口通讯实现

    目录 (1).参考资料 (2).QT界面布局实现 (3).数据和操作逻辑 在上一章我们实现了下位机的协议制定,并通过串口通讯工具完成了对设备内外设(LED)的状态修改,下面就要进行上位机软件的实现了( ...

  6. C#串口通讯实例

    本文参考<C#网络通信程序设计>(张晓明  编著) 程序界面如下图: 参数设置界面代码如下: using System; using System.Collections.Generic; ...

  7. delphi之动态库调用和串口通讯

    串口通讯: Spcomm 控件属性: CommName  :表示COM1,COM2等串口的名字: BaudRate:设定波特率9600,4800等 StartComm StopComm 函数Write ...

  8. 用SPCOMM 在 Delphi中实现串口通讯 转

      用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序.利用API编写串口通信程序较为复杂,需要掌握大量通信 ...

  9. 西门子plc串口通讯方式

    西门子plc串口通讯的三种方式 时间:2015-10-25 14:31:55编辑:电工栏目:西门子plc 导读:西门子plc串口通讯的三种方式,分为RS485 串口通信.PPI 通信.MPI 通信,自 ...

随机推荐

  1. IntelliJ IDEA 2017版 使用笔记(四) 模板 live template自定义设置;IDE快捷键使用

    1.File ---> setting ---->Live Template                2.添加模板 3.添加模板组 4.模板组命名 5.填写配置 6.Template ...

  2. 一文读懂:超详细正态分布方差等于o的推导

    (uv)' = [(u+△u)(v+△v) - uv] /△x = (v△u+u△v +△u△v)/△x = v(△u/△x) + u(△v/△x) +(△u△v)/△x =u'v+uv'

  3. MATLAB中的快捷键

    Ctrl + c  中止程序的运行,鼠标要点到命令窗内.

  4. (水题)987654321 problem -- SGU 107

    链接: http://vj.acmclub.cn/contest/view.action?cid=168#problem/G 时限:250MS     内存:4096KB     64位IO格式:%I ...

  5. http://blog.csdn.net/zgl07/article/details/43491399

    转载申明:本文转载自http://www.brendangregg.com/perf.html   请大家看了之后如果要转载一定要注上这个地址!!! ========================= ...

  6. UniGUI的TUniLoginForm窗口自定义背景色

    uniGUI的TUniLoginForm类创建的登录窗口默认是不带颜色,可以自定义css风格来改变背景颜色. 一般是通过在UniServerModule中,在CustcomSS属性中,修改extjs的 ...

  7. html.EditorForModel自定义模版

    https://www.cnblogs.com/lori/p/5969658.html  http://www.cnblogs.com/yinzixin/archive/2012/12/18/2821 ...

  8. jquery chosen 插件多选初始化

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. C# 读取Excel表格内容,以及NPOI的使用

    在实际的开发中,我们可能需要读写word或者Excel的内容,在我开发的项目中,需要读取Excel的内容,并将相对应的内容存储到数据库中,这里简单跟大家分享一下,希望能够帮助一些人. 我相信在读写wo ...

  10. SQL导入的方法,网上看到的

    -------这是一个新表,准备用来导入的表 CREATE TABLE CSVTable( Name NVARCHAR(MAX), Email NVARCHAR(MAX), Area NVARCHAR ...