问题标签 [usbserial]

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.

0 投票
2 回答
1589 浏览

windows-7 - 是否可以在没有管理员权限的情况下在 Windows 中安装 USB 串行转换器?

我有一个使用 FT2232C USB 串行转换器与我的程序通信的硬件。如果设备之前已经连接到计算机并且驱动程序是使用管理员帐户安装的,则一切正常。但这不是通常的情况。

这些设备将被随意连接和移除,并且它也不总是将连接到特定计算机的同一设备。此外,大多数用户没有管理员权限,并且计算机没有连接到 LAN。

可以自动将文件推送到这些计算机并添加注册表项。

是否有人对如何使 Windows 相信设备驱动程序已经安装有任何指示?我目前正在考虑跟踪驱动程序安装程序对 Windows 安装所做的所有更改,并在没有任何用户交互的情况下进行这些更改。但也许有更简单的方法?

我们目前谈论的是 Windows XP,但在不远的将来也会有越来越多的 Windows 7(64 位)计算机。

0 投票
1 回答
6493 浏览

android - 使用 controlTransfer 方法设置奇偶校验

有人知道如何在 Android 中设置与 controlTransfer 的奇偶校验吗?

我在任何地方都找不到此方法参数的解释 - 只是参考中的一些通用信息。

我发现的一个例子说:

但我需要改变平价。有人有想法吗?

非常感谢!

0 投票
2 回答
2693 浏览

macos - 为什么我的 USB 转串口适配器不工作?

我有一个 USB 到串行适配器,在我的 Mac 上的系统信息中被识别为连接到 USB 集线器,但是当我在终端中运行 ls /dev 时,usbserial 没有显示。它一直工作到今天早上,但现在不是。我试过重启,更换USB插槽等等。有什么建议么?

0 投票
3 回答
83426 浏览

linux - 如何找出哪个 USB-RS232 设备在哪个 tty 上?

我有两个基于相同 USB-RS232 芯片的不同 USB 设备。当我将它们插入 USB 时,它们会安装到 /dev/ttyUSB0...3

我的问题是,如何在脚本中找出哪个 tty 上是哪一个?

使用 lsusb 我可以区分它们:

并且使用 dmesg 我可以知道它们的安装位置:

但“usb 4-1”似乎与“Bus 004 Device 002”不对应。

我可以假设“总线 004 设备 001”将始终是“USB 根集线器”,因此 dmesg 将从 1 开始计数,而 lsusb 从 2 开始计数?

或者您对如何将设备 ID 与挂载点(在脚本内)相关联有其他建议吗?

我正在使用 Ubuntu 10.04 LTS。

0 投票
0 回答
594 浏览

windows - 为 Linux/Windows 开发自定义打印机驱动程序

我想将我设计的 USB/串行设备用作打印机,以便我的 Linux/Windows 上的“打印”操作将数据(要求打印)发送到连接在 USB/ 上的新打印机(我自己设计的设备/打印机)串行端口。

你能给我做的步骤吗?我不确定我应该从哪里开始以及如何继续这个项目?

我可以选择 Windows 或 Linux。

0 投票
0 回答
691 浏览

android - 从 Android 的 COM 端口读取/写入数据

我需要将 Android 平板电脑与一些 COM 端口设备连接并向它们发送命令。

我怎么理解,我需要 USB-COM 端口适配器。我需要什么类型的适配器?一些要求?当我通过 USB-COM 端口适配器连接设备时,我必须如何与他合作?也许有一些例子?

0 投票
1 回答
1820 浏览

c - 在 C 中写入串行适配器

我正在做一个项目,我试图弄清楚我将如何写入串行端口。由于我的笔记本电脑没有串口,所以我购买了一个 USB 转串口适配器。现在我需要将数据从我的 C 程序发送到串行端口,但我不知道如何寻址该端口。有谁知道这是怎么做到的?

当我在 Windows 98 上工作时,我使用outportb() to address the parallel port but this will not work on Windows 7.

(我使用的是 Windows 7 64 位。)

0 投票
3 回答
10323 浏览

c++ - 可怕的串行端口/USB 代码 (C++) - 修复建议?

我在串行 I/O 方面没有太多经验,但最近的任务是修复一些有严重缺陷的串行代码,因为最初的程序员已经离开了公司。

该应用程序是一个 Windows 程序,它通过在 USB 上运行的虚拟 COMM 端口与科学仪器进行串行通信。虚拟 COMM 端口 USB 驱动程序由 FTDI 提供,因为它们制造了我们在仪器上使用的 USB 芯片。

串行代码位于非托管 C++ DLL 中,由我们的旧 C++ 软件和新的 C# / .Net (WinForms) 软件共享。

有两个主要问题:

在许多 XP 系统上失败

当第一个命令发送到仪器时,没有响应。当您发出下一个命令时,您会得到第一个命令的响应。

这是一个典型的使用场景(调用方法的完整源代码如下):

在失败的系统上,ReadString 调用将永远不会收到任何串行数据,并且会超时。但是,如果我们发出另一个不同的命令,并再次调用 ReadString,它将返回来自第一个命令的响应而不是新命令!

但这只会发生在 Windows XP 系统的大部分子集上 - 而不会发生在 Windows 7 上。幸运的是,我们的 XP 开发机器工作正常,所以直到我们开始 beta 测试才发现问题。但我也可以通过在我的 XP 开发机器上运行 XP VM(VirtualBox)来重现该问题。此外,仅在将 DLL 与新的 C# 版本一起使用时才会出现问题 - 与旧的 C++ 应用程序一起工作正常。

当我在调用 ClearCommError 之前将 Sleep(21) 添加到低级 BytesInQue 方法时,这似乎得到了解决,但这加剧了另一个问题 - CPU 使用率。睡眠时间少于 21 毫秒会使故障模式重新出现。

高 CPU 使用率

进行串行 I/O 时 CPU 使用率过高 - 通常超过 90%。新的 C# 应用程序和旧的 C++ 应用程序都会发生这种情况,但在新应用程序中更糟。通常会使 UI 非常无响应,但并非总是如此。

下面是我们的 Port.cpp 类的代码,总之它是可怕的荣耀。对不起,这就是我正在使用的。最重要的方法可能是OpenConnection、ReadString、ReadChar 和 BytesInQue。

根据我的测试和阅读,我在这段代码中看到了几个可疑的地方:

  1. 永远不会设置 COMMTIMEOUTS。MS 文档说“如果您未能设置超时值,可能会出现不可预测的结果”。但是我尝试设置这个,它没有帮助。

  2. 许多方法(例如 ReadString)如果没有立即获得数据,就会进入一个紧密的循环并通过重复读取来敲击端口。这似乎可以解释高 CPU 使用率。

  3. 许多方法都有自己的超时处理,使用 GetTickCount()。这不是 COMMTIMEOUTS 的用途吗?

  4. 在新的 C# (WinForms) 程序中,所有这些串行例程都直接从主线程调用,来自 MultiMediaTimer 事件。也许应该在不同的线程中运行?

  5. BytesInQue 方法似乎是一个瓶颈。如果我在 CPU 使用率很高时中断调试器,那通常是程序停止的地方。此外,在调用 ClearCommError 之前向该方法添加 Sleep(21) 似乎可以解决 XP 问题,但会加剧 CPU 使用问题。

  6. 代码似乎不必要地复杂。

我的问题

  1. 谁能解释为什么这只适用于少数 XP 系统上的 C# 程序?

  2. 关于如何重写这个有什么建议吗?指向良好示例代码的指针将是最受欢迎的。

0 投票
1 回答
1331 浏览

java - 使用 rxtxComm 处理 RS232 DB9 中的握手线

我使用 rxtxComm 与 A​​rduino(USB 串行端口)进行通信(发送和接收数据)。如何使用 rxtxComm 库处理像 DTR 这样的握手线?你能给我一些关于这个的教程或一些示例代码吗???

  • 注意:我使用的是win7操作系统。我今天(21-4-2012)买了一个 USB-Serial(DB9)适配器;计划将 LED 阵列直接连接到 rs232...
0 投票
5 回答
19878 浏览

c# - 使用 VID 和 PID 识别连接到 x64 的 USB 设备的 COM 端口

如下所示,我能够通过给定的 pid 和 vid 获取连接到 32 位 win7OS 机器的 USB com 端口名称,但是在 x64 中运行时它卡在以下行:

这是我的代码

实际代码在这里,那么如何在 x64 中获取 com 端口名称,有什么建议吗?