SerialTool与其他软件的比较
描述和比较表
为什么会有这个页面?
如果您来到这个页面,您可能在考虑使用哪个软件来进行串行端口(也称为COM端口)通信以供您的应用程序使用。
您可能还会想知道为什么有一个用于使用串行端口的软件的比较表。答案很简单:在SerialTool,我们非常自信,您会认识到SerialTool是与串行端口通信的最先进的软件之一,它在与其他更知名和广泛使用的程序的比较中表现出色。
SerialTool的历史
让我们从这样一个事实开始,SerialTool诞生于对串行端口的长达十年的日常和密集使用经验之中,可以追溯到它仍然作为大多数PC和笔记本电脑上的RS-232物理可用之时,后来被广为人知和广泛使用的USB-串行转换器所取代。
我们经常注意到串行端口软件通常强调他们也可以与RS-422和RS-485一起工作。
让我们马上澄清一下:RS232、RS422、RS423和RS485本质上都是物理层协议。它们都是用于普遍设备的串行通信协议和接口。串行接口广泛用于电子和嵌入式系统,通常用于从设备进行远程数据采集或远程控制。它们改变了信号传输的方式,无论是PC、微控制器还是串行通信协议或TTL级传输的串行通信。它们都需要通过通信转换芯片将其转换为RS232、RS422、RS423或RS485信号。
为什么要澄清这一点?与串行端口或COM端口通信的任何软件都可以接收和发送RS-232、RS-422和RS-485,具有与通信物理层中固有的距离和速度限制相适应的限制。
对于SerialTool是否适用于与RS-485一起使用的问题,答案是肯定的。与所有与串行端口通信的软件一样。
不要被强调与RS-422和RS-485兼容性的软件所误导。它们无论如何都是兼容的!
支持Windows、Linux和Mac OS的多平台串行软件
正是从那些遥远的日子开始,开发了一个专门用于内部使用的SerialTool的私有版本,它汇集了在嵌入式环境中工作的日常需求。在嵌入式环境中,您主要使用除了最流行的Windows之外的操作系统,例如Linux和越来越多的Mac OS。
SerialTool是使用多平台框架开发的,并且串行端口连接例程是使用三个操作系统的本机功能编写的,这些操作系统是SerialTool分发的三个操作系统。
没有使用公共库,尽管这些库稳定,但不允许对串行端口支持的所有参数进行灵活和全面的控制。因此,有必要以能够达到某些IDE提供的库不允许的地方来编写源代码。SerialTool所提供的功能和性能已经很好地回报了这一努力。
SerialTool适用于谁?
您可能想知道这个软件是否只针对专业使用而开发的。
答案是否定的。它适用于所有类型的应用程序,从在业余、学校和学术环境中与Arduino板进行通信的简单示例,到涉及多个串行连接的复杂系统,需要同时监视所有这些连接并可靠、持久和灵活地记录串行流量。
由于这些原因以及许多其他原因,SerialTool从2009年以来在Duolabs实验室内部开发,并被称为SerialTalk。现在,让我们详细看看在专业和爱好背景下使用串行端口时经常出现的需求。
什么使SerialTool独特?
首先,SerialTool是迄今为止唯一能够在单个应用程序启动中同时处理多个多个串行端口的软件。因此,每个串行端口或COM端口都必须有一个分配。实质上,可以在单个应用程序内同时在多个串行端口上进行操作,为每个串行端口分配递增的编号并配置各种特性,而无需同时启动多个软件。
这个功能在内部管理起来非常复杂,需要经过多个月的开发才能在SerialTool中实现。现在,让我们看看如何简单地向串行端口发送字节。
向串行端口发送数据(ASCII和十六进制模式)
最常见的两种模式是发送ASCII字符串或十六进制的字节数组。SerialTool将允许您以高效、直观和快速的方式以这两种模式发送字节。
您还可以自动发送预定义的字节结束字符串,例如CR = 回车符(\r,在十六进制中为0x0D,在十进制中为13)和LF = 换行符(\n,在十六进制中为0x0A,在十进制中为10),或两者都可以。
带CRC的自动完成
在某些情况下,特别是在工业领域,需要在字节末尾发送CRC(循环冗余校验)。CRC计算基于您打算发送的字节,并且是一种校验和的形式之一。在某些通信协议中,例如MODBUS,通常需要CRC,以确保接收到的字节的正确性。SerialTool提供了可以在实际负载的末尾发送的各种CRC多项式的最广泛选择。
使用快速缓冲区
实际的负载传输是通过名为Quick Buffer的快速发送面板完成的,专为允许即时发送字节而设计,而无需深入复杂的选项或创建混乱的窗口。通过直接键入键盘键,类似于典型的通信终端,也可以发送ASCII字节。我们强调,目前SerialTool不能执行典型终端(例如VT100)的所有功能,因为它定位为管理应用程序的主要方面,而不是终端模式的软件(当前可用)。未来的开发中不排除扩展并使其与VT100编码兼容。
问:但是我在哪里以及如何查看我接收和发送的字节?
许多软件程序都有一个终端屏幕,允许您发送和接收字节,类似于经典终端如TeraTerm。如上所述,SerialTool提供了混合终端模式。
问:十六进制字节如何处理?
情况变得复杂,因为十六进制字节并不总是可以用ASCII表示,因此可能生成不可显示的字符或在实际终端中创建看似异常的行为。在经典终端中,接收到与键盘上的DEL键相对应的字节时,终端将删除上次发送的字符。如果我们从远程源接收十六进制字节并需要截获该字节作为数据包的一部分,那么这种情况并不理想。
SerialTool以两种方式解决了这个问题。首先,它有一个经典的终端屏幕,可以以各种模式显示发送和接收的字节。纯ASCII、仅可打印的ASCII或十六进制(具有不同的格式类型)。在这里阅读。
如果您不打算使用经典终端模式,SerialTool还提供了十六进制终端模式。
在十六进制终端模式中,每个字节或字节包将显示在编辑表格中,允许快速、直观、精确地查看接收和发送的负载。
问:但是字节或字节包的确切含义是什么?
可以发送或接收单个字节,经过预定义的时间后,可以将传输视为完成,生成一个包。在这种情况下,包含单个字节的数据包。
问:我如何确定一个包和下一个包之间的间隔?
通常情况下,需要使用示波器或逻辑状态分析仪来确定数据包之间的间隔。但是,可能不总是方便或实际(即使您拥有其中一个工具)进行物理连接并观察位之间的时间来确定远程设备发送字节或数据包的频率。SerialTool提供了精确确定自接收到单个字节以来的经过时间并设置字节之间的毫秒数以界定数据包的能力,例如。
此外,SerialTool还提供了记录并监视自上次接收或发送的数据包以来经过的时间的功能。
问:有多少次您不得不复制和粘贴缓冲区以发送到串行端口,并且可能会犯错或忘记某些字节?
对于许多人来说,这是一个常见的障碍。与Quick Buffers相符,SerialTool提供了具有预加载缓冲区的能力,始终可编辑以进行快速和可靠的发送。
经过几个小时的工作,可能会发生一些错误,SerialTool将帮助您避免这些错误。 多个缓冲区功能将帮助您轻松获取缓冲区,无论它们是以ASCII还是十六进制格式存在。
串行数据记录到文件
这已经足够了吗?一些用户可能会满意,而大多数可用的软件程序仅提供其中一些功能。但是,与或对嵌入式世界或涉及大量发送和接收数据的业余应用程序进行工作的任何人都将意识到需要更多的功能。
当涉及大量数据时,有必要保存传入和传出的数据以分析流程或用于潜在的逆向工程操作。SerialTool允许您将数据日志保存到文件,以便以后进行有组织和精确的分析,使您能够验证实际通过特定串行端口传递了什么。该日志可以以文本模式查看或直接保存为二进制文件。
例如,如果您通过连接USB串行适配器到发送和接收信号来监控将固件下载到远程设备,您可以被动观察两个设备正在交换的所有流量。对于固件下载,能够直接将数据流保存到文件以供以后更详细的分析可能非常有用。
串行过滤器和警报功能
您可能需要拦截仅感兴趣的某些数据包并分析其内容。
在编写此文档时,还没有专门的商用软件程序可以根据接收到的预定义数据包或简单字节序列过滤数据包并相应生成警报。SerialTool允许您分析一个或多个串行端口上的传入流量,并在接收到预定义数据包或简单字节序列(无论是ASCII还是十六进制格式)时生成警报。SerialTool对这些数据包应用过滤器,并在传入流量期间显示或阻止它们。此外,您可以仅保存特定的数据包或字节序列到单独的文件中。SerialTool中提供的警报功能使这一功能成为可能。
将串行端口数据发送到服务器或云端
SerialTool提供了许多其他商用软件程序没有或只在部分形式中具有的功能:通过网络发送串行流量的能力。SerialTool允许您使用TCP或UDP协议将双向流量(接收和发送)发送到服务器,使用Network Packet Sender。它支持IPv4和IPv6。
问:我可以将数据发送到云吗?
当然可以!SerialTool还允许您使用Network Packet Sender将流量发送到云端。您可以进行GET或POST调用以更好地分析、过滤和存储串行数据。
在专业环境中,例如,可以在运行Linux的小型PC上安装SerialTool,并将其连接到远程机器,将所有流量发送到云后端。想象一下,即使没有本地云连接,也可以远程监视工业机器,或者安装传感器并直接将数据发送到云,而无需开发各种通信协议。
可能还需要将串行端口流量连接到外部软件以进行实时分析。SerialTool提供了用于通过专有软件进行分析的所有串行端口流量的功能。
SerialTool开发了一个小的php script,可用于测试此功能,可以在Network Packet Sender页面找到。
将文件发送到串行端口
SerialTool提供了直接将文件(即使是大文件)发送到串行端口的能力。无论文件类型是文本还是二进制,SerialTool都将自动将文件分割成可定义的字节数据包,并以特定间隔发送它们。
自动响应
问:如果我想测试我开发的Arduino串行协议,并在发送数据包后接收到数据包的响应,我该怎么办?
SerialTool包括一项可以自动响应接收到的数据包的功能。这对于模拟远程设备的行为非常有用。通过在串行端口上发送特定数据包,并使用预定义的响应,可以测试和验证接收设备的行为。当接收到特定数据包时,SerialTool将自动发送响应。自动响应功能在串行端口测试、仿真和验证中非常有用,因为它允许您控制远程设备的响应,以确保您的系统按预期运行。
硬件流控制
SerialTool允许您配置硬件流控制参数,如数据位、停止位和奇偶校验位。这使得SerialTool非常灵活,可以适应各种串行通信要求。
数据位、停止位和奇偶校验位
SerialTool允许您配置数据位、停止位和奇偶校验位,以满足不同串行通信协议的要求。
支持多种串行端口类型
SerialTool支持多种串行端口类型,包括标准RS-232串行端口、USB串行适配器和虚拟串行端口。这使得SerialTool适用于各种不同的硬件配置。
其他功能
SerialTool还提供了许多其他功能,如串行端口自动检测、发送文件、脚本执行、数据转换、定时发送等等。这些功能使SerialTool成为一个强大而灵活的串行通信工具,适用于各种不同的应用场景。