问题标签 [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 投票
0 回答
39 浏览

networking - 是否可以让 USB 控制器也桥接连接?

我只是想知道我是否可以将两个都连接到同一台电脑的 USB 设备连接在一起。我希望将设备连接在一起,就像它们通过电缆直接连接一样,而不是连接 PC。我问这个是因为我现在实际上没有电缆转换器来将我的 Android 连接到 PS3 控制器,然后我突然想到这样做。就像网桥一样。

0 投票
1 回答
850 浏览

c# - USB UART 速度错误

PC 上的 GUI 向嵌入式系统发送一组字节。

  • 蓝牙适配器,一切正常
  • USB线,都错了。

设备是 FTDI USB TTL 串行电缆

供应商的产品页面在这里

我们需要一个可预测的速度。我从 PC 发送了一件东西,但我在嵌入式系统的 UART(接收缓冲区)中看到了一个0x00或一个0x80字节。

这是发送字节的 C# 语句...

115200 有效,但速度不够快。

我需要让它看起来像一个 921600 bps 的信号。460800 bps 可能会让我通过;也许。我们在嵌入式系统的这个端口上使用流控制(CTS/RTS)。

有没有办法用 C# 让 UART 达到其中一种速度?如何 ?

0 投票
3 回答
9738 浏览

c - 检索用户空间 Linux C 代码中 USB 串行写入传输的缓冲区/数据包/有效负载大小

提前道歉我将无法立即在这里接受答案 - 只是想我想记下来,而我有问题......

简而言之:当我在 Linux 下使用用户空间 C 代码启动对 USB 串行端口的写入时,我可以观察到三种不同的缓冲区大小 - 问题是,我想从用户空间 C 中检索所有这些大小代码本身。


假设,我有一个带有 FTDI FT232 芯片的 Arduino Duemillanove - 被编程为从 PC 的 USB/串行连接读取传入字节,然后丢弃它们。当我在系统中插入此设备时(在 Ubunty 11.04 Natty 上执行此操作),我可以通过以下方式观察到以下内容tail -f /var/log/syslog

这首先告诉我驱动程序(内核模块)usbserialftdi_sio已被挂钩/加载以处理设备;这些创建了一个名为的文件(设备节点)/dev/ttyUSB0- 从操作系统的角度来看,本质上是一个串行端口。它还告诉我有MaxPacketSize64 个字节归因于设备的端点。我也可以通过以下方式查询获得 MaxPacketSize lsusb

现在,假设我想/dev/ttyUSB0使用以下 C 程序写入设备节点testusw.c

该程序故意在一次调用中写入大量数据。要查看发生了什么,首先让我们通过 Linux 的usbmon工具捕获 USB URB 请求 - 所以在一个终端中,我们运行:

...在另一个终端中,编译并运行 testusw 后,我们得到:

(请注意,testusw上面的调用可能会重置 Arduino)。之后testusw,我们可以回到第一个终端,并用+中断cat进程;我们留下了一个日志文件,. 我们可以使用Virtual USB Analyzer打开此日志文件:CTRLCtestusw.2u.mon

...并获得以下可视化:

vusb-analyzer.png

请注意,执行写入的“EP2 OUT”显示了 2*9 = 18 个 URB 请求,每个请求携带 0x0100 = 256 个字节;所以总共写入了 18*256 = 4608 个字节 - 正如上面的“写入的字节数”所报告的那样testusw。此外,忽略 EP1 IN 上的数据(这是我的 Arduino 代码发送的一些垃圾 - 以“状态:-2”错误结束)。


因此,我可以观察到以下内容:

  • 从 C 程序中,我发起 100000 字节的写入
  • 结果,只4608写入字节 - 有效地充当第一个缓冲区大小
  • usbmon然后报告这个块被排序成 18256个字节的 URB 请求
  • 最后,MaxPacketSize 告诉我每个 URB 请求(可能)被排序为(四个)64USB 线上的字节包

实际上,我有三个缓冲区大小:4608256字节64;类似于Serial HOWTO: Serial Port Basics: 4.7 Data Flow Path 中提到的内容;缓冲器

所以,我的问题是:如何从用户空间 C 代码本身检索这些缓冲区大小 - 但是,只能从设备节点路径/dev/ttyUSB0作为唯一的输入参数?

我可以通过系统popen命令运行外部程序并解析输出。例如,我可以通过lsusb -v -d 0403:6001 | grep MaxPacketSize- 获得 MaxPacketSize ,但这需要供应商/产品 ID,如果只有一条信息是设备节点路径,我不知道如何获得它/dev/ttyUSB0

鉴于它/dev/ttyUSB0本质上被视为串行端口,我认为通过查询stty会提供一些东西 - 但是,我看不到任何与缓冲区大小相关的内容:

我也知道我可以udevadm用来查询与设备节点路径相关的数据/dev/ttyUSB0

...但同样,我看不到与遇到的缓冲区大小相关的太多内容。

总结一下,再次提出问题:我能否从用户空间 C 应用程序检索遇到的与 USB 串行写入传输相关的缓冲区大小?如果是这样 - 如何?

非常感谢您的任何答案,
干杯!

0 投票
2 回答
1512 浏览

java - Java 将字节写入串行端口 USB

我在下面有一个代码,我正在发送到串行 USB 端口......它正在工作,现在它没有!akber()如果发送了错误的字符串,函数就会死掉......

如果我发送akber("1.0.0.0.1.5")- 它可以完美运行,

如果我发送akber("23.0.128.0.0.5")- 它不起作用......

请参阅下面的代码


从函数调用:

我需要它来处理“数据”字符串中的任何数字组合,因此它将它们转换为正确的字节类型并写入端口……这不是我的代码,我不太明白,但是仍然需要修复它:-)

0 投票
1 回答
916 浏览

c# - 异常后 SerialPort 不存在

我正在使用 C# 的 SerialPort 类通过 USB COM 端口进行通信。SerialPort 可以正常打开并正常工作,直到发生异常。当我尝试通过我的应用程序使用端口时出现异常后,我得到另一个异常:“端口'COM6'不存在。” 关闭应用程序、重新启动 Visual Studio 等后,我不断收到异常。恢复端口的唯一方法是重新启动计算机。

有没有人看到这个问题并知道解决方法?我需要这个更耐用。

0 投票
1 回答
3627 浏览

linux - 用于全双工通信的 USB 转串口适配器

我有一个带串口的调制解调器,但我的电脑没有串口。因此,我买了一个如下图所示的适配器。一旦调制解调器切换到传输模式,它可以发送一些东西,但它永远无法切换回接收模式,并且它的数据灯变红。这样的适配器是否会导致此故障?我不熟悉这些通信内容,例如全双工等。

在此处输入图像描述

0 投票
2 回答
1479 浏览

c++ - 识别 USB 转 RS422 连接器所连接的 COM 端口名称的逻辑(适用于 Windows 应用程序)

我有一个应用程序,我通过 USB 到 RS422 转换器将数据写入串行端口。此转换器电缆通过 USB 集线器连接到我的 PC。我面临的问题是,每次更改运行应用程序的 PC 时,COM 端口的名称都会更改。所以我将不得不在我的代码中更改它并重新编译代码以运行应用程序。目前以下是我用来初始化串口的代码:

这里我只提到 COM 端口的名称。我想知道是否有一个 API 可以知道 COM 端口的状态并即时识别我的转换器所连接的 COM 端口?

0 投票
2 回答
1840 浏览

c++ - 在 C++ (Windows) 中自动检测 Arduino

我正在尝试编写一个 C++ 程序,它会自动检测所有连接的 arduino 的 COM 端口号。

我已经发现我可以获得所有可用 COM 端口设备的列表,HKLM/HARDWARE/DEVICEMAP/SERIALCOMM但没有关于正在那里监听的设备的信息。有没有办法获得例如 GUID 或设备描述来检测哪个是 Arduino?我看到的唯一另一种方法是尝试向每个端口发送一些东西并监听先前定义的响应。谢谢您的反馈 :)

编辑:我想我应该提到我使用 g++ 作为编译器和 MinGW。syam 已链接我这个如何自动检测 Arduino COM 端口?这似乎实现了我想要的,但它是用 C# 编写的,当我需要纯 Win32 时使用.Net 特定的 API。

0 投票
1 回答
898 浏览

linux-device-driver - 以纯数据读取多路串口usb

我有来自 8 通道 ADC 芯片的多通道串行数据,我通过串行 USB 电缆连接到我的计算机。我想在 Pure Data 中使用这些单独的通道,但是 pd_comport 对象不读取多通道串行数据。我已经搜索了 Pd 讨论论坛,但没有提到如何做到这一点。关于我该如何去做的任何想法?

0 投票
1 回答
596 浏览

android - 警告:找不到 UsbSerialLibrary.apk

我正在研究 USB 串行。我想做一个 Nexus 从 USB 读取数据。

我找到了示例项目来做到这一点。这里

所以,我克隆了这个项目并遵守了eclipse。一切正常,但我收到了这个警告,我试图通过串口将我的 USB 连接到 Nexus。但是,它找不到我的usb。我不知道也许是因为警告。

我搜索并找到了一些建议,但它们对我不起作用。

此外,我已将我的 USB 产品 ID 和供应商 ID 添加到 xml 文件中。

你能帮我找出来吗?

在此处输入图像描述

预先感谢!