问题标签 [virtual-serial-port]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# 串行 IO.port:串行数据解析响应不够快?
大家好,
首先让我说我是 C# 新手,因为我更喜欢嵌入式 C。
我正在尝试使用 MSP430FR5739(TI 微控制器)从信号发生器读取 2Hz 信号。我使用板载 ADC 以 1MHz 周期以 1024 个样本对模拟值进行采样,并使用 USB 转串口以 9600 波特率通过 UART 通信发送。我让这一切工作得非常完美......(因为我已经通过超级终端和arduino的串行监视器对此进行了测试)
发送的数据,如下所示:(每个都换行)
0
0
0
16
51
123
157
227
250
315
338
384
404……
如您所见,每个数据都显示在一个新行上......但这是我的问题。
目前,我正在使用此 C# 代码在显示数据的应用程序中读取和解析数据,如下所示:
[接收数据][1]
这是UI应用程序的问题:
当 2Hz 信号发生变化时(例如从正弦波变为方波,或峰峰值发生变化),我的应用程序中的数据需要永远发生变化。如果我通过超级终端或 arduino 的串行监视器读取信号数据,一旦信号值发生变化,数据也会发生变化……但不在此应用程序中。我认为,我正在正确读取串行端口,但我认为有某种缓冲区已填满,然后该缓冲区需要永远到达信号更改的点,然后显示它。我真的需要了解发生了什么......我试图在互联网上找到可能的解决方案以寻求解决方案,但我没有找到任何有意义的解决方案。
为什么我不能像串行控制台那样实时读取它?
android - 在 Android 上使用虚拟串行通信在两个进程(应用程序)中读取/写入字节
我为 Android 编写了一个 C/C++ 应用程序 (NDK),它可以打开一个虚拟端口进行串行通信。它在同一进程中从端口写入和读取字节。到目前为止,这是可行的,我不必为了做到这一点而根植我的设备。这是一个简单的程序,它执行以下操作:
现在的问题是,如果我想在两个进程(两个应用程序)中做同样的事情,它就行不通了。一个进程打开 /dev/ptmx,另一个进程应该打开 /dev/pts 目录。每次从服务器尝试打开 /dev/pts 目录时,我都会收到错误“错误打开文件”(-1)。我已经植根了我的设备,但这仍然无法正常工作。打开 /dev/ptmx 目录后我有一个睡眠功能,以便等待从机。
我应该怎么办?有任何想法吗?
c - 微控制器通过虚拟串口连续接收值“255ld”
我希望这不是一个愚蠢的问题,但我自己无法找到问题的答案。
我正在开发一个 Atmega32U4 微控制器设备,它应该接收一系列字节并存储它们。我的代码基于 LUFA-Library 151115 中的 CDC Virtual Serial 驱动程序模板。为了测试我的代码,我使用了非常有用的工具 ScriptCommunicator 04.11。微控制器单元 (MCU) 通过 USB 连接到 PC,并被 PC 主机视为串行 com 端口设备。我的操作系统是 Windows 7 64 位。
目前,我正在编写一个函数,其中应接收和存储六个值。为此,我使用以下代码:
我以前使用过类似的代码片段,一切似乎都运行良好。现在我发现了以下问题:设备不断接收值“255ld”。因为当我用 ScriptCommunicator 测试上面的代码时,我收到了六次这个值(这就是上面代码中包含 printf 语句的原因)。
我怀疑发生这种情况是因为 Windows 将 MCU 视为常见的 USB 设备,例如鼠标?会是这样吗?
或者这可能是什么原因?
我该如何解决我的问题?
提前感谢任何提示和答案!
c# - 在真实和虚拟串行端口之间创建一对
我正在开发一个可以自动测试遗留应用程序的实用程序。旧版应用程序在 Windows 2000 上运行,并使用通过串行 (COM) 端口连接的 3 个设备。
我可以访问应用程序的源代码,但无权进行任何更改。但是,源代码允许我验证设备 COM 端口名称是否已作为 COM1(打印机)、COM2(钞票阅读器)和 COM3(条形码/OMR 阅读器)硬编码到应用程序中。我还可以看到发送到每个设备的字节,以及应用程序如何处理返回。
现在,我想编写有关钞票阅读器的测试。我在这里阅读了各种问题(例如,伪造 RS232 串行端口),我可以使用 com0com 来伪造串行端口。我希望有一种方法可以代表应用程序接收的真实 COM 端口设备发送字节。
安装实用程序后,我将一对配置为“COM2”到“COM6”。COM2 标签显示为红色,当我按 OK 时,我收到以下消息:
端口名称 COM2 已用于其他设备 \Device\Serial1
然后我可以按取消、重试或继续。
按继续我得到:
端口名称 COM2 已在 COM 端口数据库中记录为“正在使用”
我再次按继续。
我用 C# 编写了一个小应用程序来测试 COM2 和 COM6 端口配对。当我向 COM2 发送有效字节时,我得到了预期的 11 个字节(这正好反映了遗留应用程序中的一个场景)。COM6 上没有收到任何内容。当我向 COM6 发送相同的字节时,COM2 或 COM6 都没有响应。
我尝试重新启动机器,再次设置配对,尝试不同的 COM 端口(COM1 到 COM6,COM3 到 COM6),但从未在这些虚拟端口上得到响应(COM1 和 COM3 也是红色的,并给我同样的错误通过 com0com)。
测试 C# 应用程序如下:
当我使用超级终端时,我可以看到在 2 个虚拟端口之间发送消息,但在真实端口和虚拟端口之间没有发送任何消息。
是否可以通过 com0com 或其他方式配对真实和虚拟 COM 端口?
如果是这样,我该如何解决我的问题?
是否有替代真实串行端口输出的替代方法?
c - 如何打开读/写线反转的串口?
我知道如何使用“打开”功能打开串行端口:
但我想要两个程序打开这个端口,但读/写行相反。例如,当程序 2 向端口写入内容时,程序 1 可以读取它。
c# - 如何为蓝牙设备创建虚拟 COM 端口
按照RFCommChat 示例,我可以获得可用蓝牙设备的 DeviceInformation 参考列表,用户可以选择一个。我的问题是我需要使用的内部 SDK 需要设备的虚拟 COM 端口号;我不能使用套接字。我以前使用过 32feet,但它与我的项目不兼容。我知道这可以在蓝牙设置中提前设置,但为了节省用户时间并更容易连接多个设备,我想以编程方式进行。
如何使用 UWP 中的设备观察程序提供的 DeviceInformation 创建虚拟 COM 端口并获取其端口号?
c# - 我必须使用在 C# .NET 4.5 中的两个 UI 之间共享的串行端口
我有一个 C# 应用程序,它在启动时打开两个 GUI。其中一个 GUI 打开三个虚拟 COM 端口。我希望作为同一应用程序一部分的其他 GUI 显示在这些虚拟 COM 端口上发送的数据。无论如何要共享我在打开的主/第一个 GUI 中所做的这个 COM 端口声明。
macos - 如何在mac上创建虚拟串口
我想创建可用于在两个应用程序之间进行通信的虚拟串行端口。我曾在 mac 上尝试过使用 pty/tty 对(伪终端)。它也起作用了。但是我需要它,我想以其他应用程序可以在进行串行端口搜索时找到它的方式对其进行配置。我在这里卡住了。
有谁知道如何使这对可配置,以便它们可以充当串行端口并在进行串行端口搜索时列出。
java - java.lang.UnsatisfiedLinkError:仅在调试期间找不到依赖库
我正在研究学生项目,该项目需要通过 USB 读取从 AtMega 发送的数据(使用虚拟串行端口)。要访问串行端口,我使用的是 NeuronRobotics 的 nrjavaserial ( https://github.com/NeuronRobotics/nrjavaserial ),它是 RXTX 的一个分支。为了管理我的依赖项,我使用了 maven。这是我运行CommPortIdentifier.getPortIdentifiers();
(或任何静态CommPortIdentifier
函数)时得到的结果:
这是我的依赖项:
奇怪的是,这只发生在调试期间,当我正常运行程序时,它就像魅力一样。任何想法为什么?
我发现人们对其他库也有类似的问题,但是所有这些库的解决方案都是移动 DLL 或更新类路径,但是当我使用 maven 时,我怀疑在这种情况下解决方案会有所不同。
c++ - 使用 C++ 在 Windows 中为虚拟 com 端口创建驱动程序
我的目标是在两台远程计算机之间创建串行连接。我想从虚拟串行端口发送的消息将被重定向到使用 TCP 协议的门户。然后门户网站发送接收到的消息并将其重定向到另一台电脑的串行端口。
为此,我进行了测试,我想使用 c++模拟程序串行到以太网连接器。该程序允许我创建客户端连接,该连接将使用 TCP/IP 协议启动本地真实或虚拟串行端口数据重定向到远程服务器。客户端必须在 Windows 操作系统上运行. 现在,我使用 QT 创建了一个简单的 TCP 客户端,我可以将 QString 发送到服务器(门户),但我想要的是从虚拟串行端口(COMx)中打开的超级终端(例如 Putty)写入一些字符串我必须创建。
服务器是由这个 socat 命令创建的:
所以我可以将收到的字符串转发到 Fedora 操作系统中的串行端口/dev/ttyS0。
现在,为了创建一个虚拟串口,我在网上搜索,我找到了CreateFile函数。使用这个函数,我在 QT 中编写了这段代码:
如果我进入设备管理(在 Windows 10 中),我在端口(COM 和 LPT)部分下找不到新设备 COM15。为什么?
我使用的功能不正确?
我应该使用什么函数来创建允许我使用 C++ 创建虚拟 com 端口的驱动程序?