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. java中对类中成员的排序

    要求:编写一个程序.程序中定义一个类circle,其中有数据成员radius:创建一个有5个circle型元素的数组,其radius值分别为2.10.8.4.121.调用Arrays.sort()给这 ...

  2. java中的i++与++i的区别以及除法、模的用法(基础)

    java中i++与++i的区别: 例如:int i=3; (先运算再赋值)j=++i; i的值先变成4,再赋给j,j的值为4: (先赋值再运算)j=i++; 先将i的值3赋给j,j的值为3,然后i变成 ...

  3. header头参数 确定该文件类型

    'chm'=>'application/octet-stream', 'ppt'=>'application/vnd.ms-powerpoint', 'xls'=>'applicat ...

  4. ssm登录与退出

    ssm整合比较好的实例 http://how2j.cn/k/ssm/ssm-tutorial/1137.html?tid=77#nowhere ssm登录后台用户检测(此实例注销有问题):http:/ ...

  5. mysql数据库的增量备份和全备

    还有一种简单的方法 参考 https://blog.csdn.net/u010098331/article/details/50932064 (注意:5.6版本以上新加了gtid 功能,gtid开启之 ...

  6. python 类的定义 实例化 实例完后初始化

    先来看看 类的__init__, 类的__new__ , 元类的__new__的执行顺序 class TMetaclass(type): def __new__(cls,name,bases,attr ...

  7. Servlet抽取的问题-method传递问题+表单提交的问题

    隐藏域解决该问题: 其中,hidden就是隐形域. 表单提交的问题: 1.通过按钮实现: 2.通过function中,获取页面元素.submit方法

  8. React-redux深入理解

    首先,一张 Redux 解释图镇楼: [回顾]Redux 的核心: store 是什么?(createStore 函数的实现) const store = createStore(reducer); ...

  9. python 9

    一.常识 在制作统计表时,要创建一个listname_list,来存放列明,这样以后进行列明删减的更新时,比较方便. 二.函数的初识 代码遇到def就跳过,把函数内容放到内存中,遇到函数名再来执行函数 ...

  10. Centos7编译opencv3.4.1

    Centos7编译opencv3.4.1 参考博客 https://blog.csdn.net/wjbwjbwjbwjb/article/details/79111996 1.配置epel源 yum ...