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. 2018.08.27 rollcall(非旋treap)

    描述 初始有一个空集,依次插入N个数Ai.有M次询问Bj,表示询问第Bj个数加入集合后的排名为j的数是多少 输入 第一行是两个整数N,M 接下来一行有N个整数,Ai 接下来一行有M个整数Bj,保证数据 ...

  2. hdu-2955(01背包+逆向思维+审题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 思路:注意p和m[i]是被抓的概率,不能直接用,要转换为逃跑的概率,然后将得到的钱视为背包体积再 ...

  3. gj6 深入python的set和dict

    6.1 collections中的abc from collections.abc import Mapping, MutableMapping #dict属于mapping类型 a = {} pri ...

  4. ansible-playbook api 2.0 运行项目

    上篇 api 的文章 <ansible-playbook api 2.0 直接运行> 介绍的是直接将 tasks 直接写在 代码中的,本文介绍 api 运行整个项目 [root@10_1_ ...

  5. 2015 - 4- 21 iOS开发越狱环境的搭建1

    2015 - 4- 20   1. 越狱环境的搭建   http://www.iduuke.com/2030.html http://www.cnblogs.com/xiongwj0910/archi ...

  6. (KMP)剪花布条 -- hdu -- 2087

    http://acm.hdu.edu.cn/showproblem.php?pid=2087 剪花布条 Time Limit: 1000/1000 MS (Java/Others)    Memory ...

  7. poj3321-Apple Tree(DFS序+树状数组)

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 36442   Accepted: 10894 Desc ...

  8. setTimeout问题

    function fn(argu1){ alert(argu1); } setTimeout(fn, 1000, 12); setTimeout从第三个参数开始,之后的参数都是fn的.fn不用加(), ...

  9. eclipse/myeclipse清除workspace

    打开Eclipse后,选择功能菜单里的 Windows -> Preferences->, 弹出对话框后,选择 General -> Startup and Shutdownwor ...

  10. ActiveMq 总结(二)

    4.2.6 MessageConsumer MessageConsumer是一个由Session创建的对象,用来从Destination接收消息. 4.2.6.1 创建MessageConsumer ...