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. failed to start process with commandline '%LAUNCHER_PATH% %LAUNCHER_ARGS%', ErrorCode = '0x80070002

    在dotnet core进行开发的时候,需要开发目录直接iis进行部署,然而启动的时候,报异常,我们查看windows下的应用日志发现有个这样的错误信息 Application 'MACHINE/WE ...

  2. java DOM

    使用DOM解析XML文档的步骤 1.创建解析器工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 2 ...

  3. Python 常见字符串常量和表达式

    常见字符串常量和表达式 操作 解释 s = '' 空字符串 s = "spam's" 双引号和单引号相同 S = 's\np\ta\x00m' 转义序列 s = "&qu ...

  4. GDB程序调试

    GDB使用流程 1.编译生成可执行文件: gcc -g tst.c -o tst2.启动GDB gdb tst3. 在main 函数处设置断点 break main4. 运行程序 run GDB 命令 ...

  5. Python 列表(List)

    Python 列表(List) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型 ...

  6. redis数据库可视化工具(RedisDesktopManager)

    RedisDesktopManager下载地址:https://redisdesktop.com/download 使用过程中可能会遇到的问题我在文后有所总结 我下载Windows版的: 我的redi ...

  7. 学习flask需要用到的包

    Flask 需要下载的包 1.pip install flask 2.pip install flask-script 3.pip install flask-sqlalchemy 4.pip ins ...

  8. java的AES对称加密和解密,有偏移量

    import java.math.BigDecimal; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; i ...

  9. [spoj Favorite Dice ][期望dp]

    (1)https://vjudge.net/problem/SPOJ-FAVDICE 题意:有一个n面的骰子,每一面朝上的概率相同,求所有面都朝上过至少一次的总次数期望. 题解:令dp[i]表示 i ...

  10. 将连接数据库的JDBC提成BaseDao

    package com.shangke; import java.io.FileReader;import java.io.IOException;import java.io.InputStream ...