private void Form1_Load(object sender, EventArgs e)
{
var s = SerialPort.GetPortNames().OrderBy(r => r);
foreach (var item in s)
{
comCOM.Items.Add(item);
}
if (comCOM.Items.Count > )
comCOM.SelectedIndex = ; var rates = new object[] { , , , , , , };
comBaudRate.Items.AddRange(rates);
comBaudRate.SelectedIndex = ; txtDataBits.Text = ""; var paritys = Enum.GetNames(typeof(Parity));
comParity.Items.AddRange(paritys);
comParity.SelectedIndex = ; var stops = Enum.GetNames(typeof(StopBits));
comStopBits.Items.AddRange(stops);
comStopBits.SelectedIndex = ;
} private void btnOpen_Click(object sender, EventArgs e)
{
ClostCom();
toolInfo.Text = string.Empty;
try
{
serialPort1.PortName = comCOM.Text;
serialPort1.BaudRate = Math.Max(, ConvertHelper.ToInt(comBaudRate.Text));
serialPort1.DataBits = Math.Max(, ConvertHelper.ToInt(txtDataBits.Text));
serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), comParity.Text);
serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits), comStopBits.Text);
serialPort1.Open();
toolComState.BackColor = Color.Green;
txtInfo.Text = DateTime.Now.ToString("HH:mm") + " 打开串口成功!\r\n";
}
catch (Exception ex)
{
toolInfo.Text = "打开串口失败!";
txtInfo.Text = DateTime.Now.ToString("HH:mm") + " 打开串口失败:" + ex.Message + "\r\n";
}
} private void ClostCom()
{
try
{
serialPort1.Close();
toolComState.BackColor = SystemColors.Control;
}
catch { }
} private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep();
byte[] buffer = new byte[serialPort1.ReadBufferSize];
int len = serialPort1.Read(buffer, , buffer.Length); Invoke((MethodInvoker)delegate
{
toolInfo.Text = string.Empty;
if (txtInfo.Lines.Length > )
txtInfo.Text = string.Format("{0} {1} 接收到:{2}", DateTime.Now.ToString("HH:mm"), serialPort1.PortName, GetByte(buffer, len));
else
{
var s = txtInfo.Text;
txtInfo.Text = string.Format("{0} {1} 接收到:{2}\r\n{3}", DateTime.Now.ToString("HH:mm"), serialPort1.PortName, GetByte(buffer, len), s);
}
});
} private string GetByte(byte[] buffer, int len)
{
StringBuilder sb = new StringBuilder();
for (int i = ; i < len; i++)
{
var item = buffer[i];
sb.Append(item.ToString("x2") + " ");
}
sb.AppendLine();
sb.Append(Encoding.Default.GetString(buffer));
sb.AppendLine();
return sb.ToString();
}

有个 BUG:文本框始终只有一行内容。

虚拟串口工具下载:下载地址

[转][SerialPort]测试用例的更多相关文章

  1. TFS 测试用例步骤数据统计

    TFS系统集成了一套BI系统,基于SQL Server的Analysis Service进行实现的.通过这几年的深入使用,能够感触到这个数据数据仓库模型是多么的优秀,和微软官方提供的数据仓库示例Adv ...

  2. 如何使用RobotFramework编写好的测试用例

    如何使用Robot Framework编写优秀的测试用例 概述 命名 测试套件命名 测试用例命名 关键字命名 setup和teardown的命名 文档 测试套件文档 测试用例文档 用户关键字文档 测试 ...

  3. Vertica 导出数据测试用例

    需求:构建简单的测试用例,完成演示Vertica导出数据的功能. 测试用例:导出test业务用户t_jingyu表中的数据. 一.初始化测试环境 二.导出数据 2.1 vsql命令说明帮助 2.2 导 ...

  4. Appium简单测试用例

    工程目录如下: 封装初始化androiddriver 方法 import org.openqa.selenium.remote.DesiredCapabilities; import java.io. ...

  5. SerialPort 串口开发

    private SerialPort sPort = new SerialPort(); //串行端口资源 /// <summary> /// 函数功能:打开串口/关闭串口 /// < ...

  6. C#SerialPort如何读取串口数据并显示在TextBox上

    SerialPort中串口数据的读取与写入有较大的不同.由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取.一.线程实时读串口:二.事件触发方式实现. 由于线程实时读串口的效率不是十分高 ...

  7. qunit 前端脚本测试用例

    首先引用qunit 测试框架文件 <link rel="stylesheet" href="qunit-1.22.0.css"> <scrip ...

  8. [注意]SerialPort操作PCI-1621D多串口卡,出现异常"参数不正确"

    开发LED大屏显示.40-20mA模拟量输出的时候,经常要与串口打交道.但是Windows自带的SerialPort串口操作组件貌似兼容性 不是太好,或是SerialPort本身有BUG,在操作PCI ...

  9. .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上下文环境检查(实战)

    Microsoft.NET 解决方案,项目开发必知必会. 从这篇文章开始我将分享一系列我认为在实际工作中很有必要的一些.NET项目开发的核心技术点,所以我称为必知必会.尽管这一系列是使用.NET/C# ...

随机推荐

  1. 【linux】State : Uninterruptible, pid: 3936

    运行centos7中yum命令时提示: Existing lock /var/run/yum.pid: another copy is running as pid 3936.Another app ...

  2. MVCC(Multi-version Cocurrent Control)多版本并发控制协议

    MVCC相比2PC是一种更简单有效的分布式事务解决方案. 假设一种场景,一个分布式事务在A,B两个节点更新数据,要么同时成功,要么同时失败. MVCC 中,为每个事务分配一个递增的事务编号,有一个中心 ...

  3. 2.ReactJS基础(虚拟DOM,JSX语法)

    将脚手架(create-react-app)创建的todolist项目精简为hello world示例 即,删除自动生成的样式文件.logo.svt.App.test.js.serviceWorker ...

  4. 从hivesql结果中读取数值到shell变量的方法

    为了检查hive表中的数据,并统计展现,需要将查出的结果传入到shell变量,然后统一输出到文本. 最后使用了以下两个方法: 方法一 QUAN=$(hive -S -e "select co ...

  5. Spark读HBase写MySQL

    1 Spark读HBase Spark读HBase黑名单数据,过滤出当日新增userid,并与mysql黑名单表内userid去重后,写入mysql. def main(args: Array[Str ...

  6. Python全栈之路----常用模块----软件开发目录规范

    目录基本内容 log  #日志目录 conf  #配置目录 core/luffycity  #程序核心代码目录  #luffycity 是项目名,建议用小写 libs/modules  #内置模块 d ...

  7. linux压缩、解压缩和归档工具

    linux基础之压缩.解压缩和归档工具 1.压缩工具 基本介绍 为了减少文件的原来的文件大小而过多的浪费磁盘的存储空间,我们使用压缩后多文件进行存储 压缩工具的介绍 compress:把文件压缩成以. ...

  8. 12集合(1)-----List

    一.总体分类 Collection(包括方法add,remove,contains,clear,size) List(接口) LinkedList ArrayList Vector---Stack 2 ...

  9. LeetCode 104. Maximum Depth of Binary Tree C++ 解题报告

    104. Maximum Depth of Binary Tree -- Easy 方法 使用递归 /** * Definition for a binary tree node. * struct ...

  10. systemd的新特性及unit常见类型分析与awk用法示列

    简述systemd的新特性及unit常见类型分析,能够实现编译安装的如nginx\apache实现通过systemd来管理 系统引导的新特性 系统引导时实现服务启动: 按需激活进程: 系统状态快照: ...