最近由于工作要求,需要对一个串口通讯设备进行压力测试,要求连续持续对串口设备发送指令,无间隔,测试设备是否会死机。

要求做到毫秒级,测试第三方的工具,基本上都无法达到毫秒级,最少的也是10毫秒。

于是就自己写代码测试。通过.net写,发现最少能达到1毫秒,但是有遗漏,看日志如下

2024-03-31 22:11:02 164 00 00
2024-03-31 22:11:02 165 00 00
2024-03-31 22:11:02 166 00 00
2024-03-31 22:11:02 167 00 00
2024-03-31 22:11:02 169 00 00
2024-03-31 22:11:02 170 00 00
2024-03-31 22:11:02 171 00 00
2024-03-31 22:11:02 172 00 00
2024-03-31 22:11:02 173 00 00
2024-03-31 22:11:02 175 00 00
2024-03-31 22:11:02 176 00 00
2024-03-31 22:11:02 178 00 00
2024-03-31 22:11:02 179 00 00
2024-03-31 22:11:02 181 00 00
2024-03-31 22:11:02 183 00 00
2024-03-31 22:11:02 184 00 00
2024-03-31 22:11:02 186 00 00
2024-03-31 22:11:02 188 00 00
2024-03-31 22:11:02 190 00 00
2024-03-31 22:11:02 191 00 00
2024-03-31 22:11:02 192 00 00
2024-03-31 22:11:02 194 00 00
2024-03-31 22:11:02 196 00 00
2024-03-31 22:11:02 198 00 00
2024-03-31 22:11:02 199 00 00
2024-03-31 22:11:02 201 00 00

时间后的三位数字是毫秒,发现偶尔会少一个毫秒。

用java写了一段测试,效果如下

2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401190]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401191]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401192]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401193]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401194]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401195]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401196]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401197]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401198]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401199]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401200]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401201]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401202]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401203]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401204]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401205]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401206]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401207]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401208]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401209]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401210]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401211]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401212]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.225 [main] DEBUG com.bonn.Test2 - [401213]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401214]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401215]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401216]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401217]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401218]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401219]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401220]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401221]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401222]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401223]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401224]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401225]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401226]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401227]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401228]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401229]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401230]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401231]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401232]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401233]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401234]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401235]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401236]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401237]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401238]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401239]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401240]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401241]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401242]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401243]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401244]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401245]---> 发送:FC FC FC 0A 00 02 20 00 28 2E
2024-03-31 22:05:20.226 [main] DEBUG com.bonn.Test2 - [401246]---> 发送:FC FC FC 0A 00 02 20 00 28 2E

会发现同一毫秒发了好多条。

我用了十多年的.net的,今年才开始用java,这差距就这么大吗?

.net部分源码

        static void Main(string[] args)
{
SerialPortHelper sp = new SerialPortHelper();
sp.Open();
for (int i = 0; i < 1000; i++)
{
byte[] bs = new byte[2];
sp.Send(bs);
Trace.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss fff} {bs.ByteToHexString()}");
}
}
            while (true) {
i++;
if (i > totalTimes) {
break;
}
synchronized (lock) {
try {
long curCommMillis = System.currentTimeMillis();
String[] strList = new String[2];
strList[1] = "FC FC FC 0A 00 02 20 00 28 2E"; byte[] sendBuff = ByteHelper.hex2byte(strList[1]); // Send(sendBuff);
sp.writeBytes(sendBuff, sendBuff.length);
logger.debug(String.format("[%s]---> 发送:%s ", i, byteToString(sendBuff))); } catch (Exception ex) {
logger.error("main exception 01:", ex);
}
}
}

关键代码已经发出来了,其他无关的不影响主没有发。

大家可以讨论一下,是我使用的方法不对吗,请指正。

.net和java串口通讯压力测试对比的更多相关文章

  1. 简单的Java串口通讯应答示例

    java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...

  2. ASP.NET 页面缓存OutputCache用法实例(附ab压力测试对比图)

    本文主要介绍Web窗体页面中的使用方法,MVC中使用方法,大家自行百度. 一.简单一行指令即可实现 <%@ OutputCache VaryByParam=" %> 这样整个页面 ...

  3. MongoDB3.2版本与3.0版本写场景压力测试对比

    我们主要是为了测试journal对写操作性能的影响.分别测试了3.2版本,3.0版本在ramdisk,hdd上有journal,和没journal的情况. 发现一个很怪异的现象,3.2版本时候,随着y ...

  4. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  5. java web下串口通讯

       最近在做java串口通讯,主要是用个人电脑通过串口从RS485读取数据,并通过crc循环冗余校验,把接收正确的数据解析,插入数据库mysql,并用SSH技术把数据库数据以表格以及图表形式显示   ...

  6. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  7. 使用 JMeter 完成常用的压力测试 [转]

    讲到测试,人们脑海中首先浮现的就是针对软件正确性的测试,即常说的功能测试.但是软件仅仅只是功能正确是不够的.在实际开发中,还有其它的非功能因素也起着决定性的因素,例如软件的响应速度.影响软件响应速度的 ...

  8. 使用 JMeter 完成常用的压力测试

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  9. 【转】使用 JMeter 完成常用的压力测试

    本文介绍了 JMeter 相关的基本概念.并以 JMeter 为例,介绍了使用它来完成最常用的三种类型服务器,即 Web 服务器.数据库服务器和消息中间件,压力测试的方法.步骤以及注意事项.      ...

  10. 【转】使用JMeter 完成常用的压力测试(三)

    使用JMeter 完成常用的压力测试 发布时间: 2008-9-27 15:33    作者: 未知    来源: 网络转载 字体:  小  中  大  | 上一篇 下一篇 | 打印  | 我要投稿 ...

随机推荐

  1. 程序员应具备的PS基本技能(三):程序员使用PSD源文件切图

    若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...

  2. 问题:AttributeError: module 'lib' has no attribute 'OpenSSL_add_all_algorithms'

    分析 在使用支付宝沙箱时,报了这个错误,该问题是没有安装openssl包 解决 pip3 install pyOpenSSL 安装后再次运行如果还是报错,请降低加密库 pip install cryp ...

  3. 【Azure 存储服务】Azure Blob下面是否可以创建子文件夹

    问题描述 如何在Azure Storage Account(存储账户) 门户上为 Container 创建子文件夹? 问题解决 经验证,没有办法在门户上直接创建文件夹,不过可以使用Azure Stor ...

  4. STM32标准库时钟树设置

    STM32的系统时钟大致可以分为以下流程 1.外部晶振提供HSE高速外部时钟信号 2.HSE经过PLL锁相环,倍频后得到PLL_CLK高速内部时钟信号 3.PLL_CLK经过分频后得到系统时钟SYSC ...

  5. [Python] 子线程退出孙线程不退出

    遇到了一个大坑! 如图,在子线程ThreadFunc退出之后,ThreadFunc2依旧在运行... 根本不会结束 但是官方文档中说明了,只要设置了daemon不为None 就能设置子线程是守护线程, ...

  6. Java-- Arrays操纵数组的工具类

    1 //操作数组的工具类 java.util.Arrays :操作数组的工具类 里面定义了很多操作数组的方法 2 public static void main(String[] args) 3 { ...

  7. C++ //常用集合算法 //set_intersection //求俩个容器的交集 //set_union //求两个容器的并集 //set_difference //求两个容器的差集

    1 //常用集合算法 2 //set_intersection //求俩个容器的交集 3 //set_union //求两个容器的并集 4 //set_difference //求两个容器的差集 5 ...

  8. Cordova下载文件,监听进度,退出疯狂报错

    如题. 报错如下: W/cr_AwContents: Application attempted to call on a destroyed WebView java.lang.Throwable ...

  9. SQLServer 导入 Excel 表数据报错“文本被截断。。。”

    报错详情(关键信息就是:文本被截断) 错误 0xc020901c: 数据流任务 1: 输出"Excel 源输出"(9) 上的 输出列"xxxxx"(78) 出错 ...

  10. 基于python的环境噪声实时监测系统

    一 系统简介 1.简介 该系统可以实时显示噪声量大小,并进行一段时间的噪声统计. 2.特性 实现噪声值的统计 实现了噪声显示 完整的主题和样式控制 简单的内置日志窗口 二 源码解析   1.噪声分贝的 ...