- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
我现在不得不使用一个相当尴尬的 API,坚持由我提供设备的地址,通过 USB 端口链接,格式为 通讯* .然而,在 Ubuntu 我正在使用并且必须使用的机器,如果我插入此设备,它将自动分配一个地址,格式为 /dev/ttyUSB* .
鉴于我无法修改 API 的源代码——我非常想这样做! - 让 API 与所述设备对话最不痛苦的方法是什么?
额外细节
如何使用手册中的 API 的示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.caen.RFIDLibrary;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
CAENRFIDReader MyReader = new CAENRFIDReader();
MyReader.Connect(CAENRFIDPort.CAENRFID_RS232, "COM3");
CAENRFIDLogicalSource MySource = MyReader.GetSource("Source_0");
CAENRFIDTag[] MyTags = MySource.InventoryTag();
if (MyTags.Length > 0)
{
for (int i = 0; i < MyTags.Length; i++)
{
String s = BitConverter.ToString(MyTags[i].GetId());
Console.WriteLine(s);
}
}
Console.WriteLine("Press a key to end the program.");
Console.ReadKey();
MyReader.Disconnect();
}
}
}
MyReader.Connect(CAENRFIDPort.CAENRFID_RS232, "COM3");
是我遇到问题的地方。
Connect
方法是有两个参数:
ConType: The communication link to use for the connection.
Address: Depending on ConType parameter: IP address for TCP/IP communications ("xxx.xxx.xxx.xxx"), COM port for RS232 communications ("COMx"), an index for USB communications (not yet supported).
最佳答案
鉴于我怀疑您可以将 ttyUSB 作为参数提供的新信息,mono 将正确处理连接。但是,对于下面的行尾,同样的警告仍然适用。您也可以考虑将参数设置为命令行参数,从而通过命令行参数提供 COM/USB,从而使您的代码在任何平台上运行。我没有看到使用此代码的其他问题。你试过了吗?
PS:我认为您的困惑实际上是 USB id 尚不受支持的说法,我怀疑这是因为该库依赖于(基于文本的)串行连接,这与处理的直接 USB 连接(驱动程序通常处理)根本不同以更直接的方式建立联系。 linux 上的 ttyUSB 端口确实代表(UART)串行连接,其方式与 Windows COM 端口相同,这些不是直接 USB 连接。
有关差异的一些方便信息:https://rfc1149.net/blog/2013/03/05/what-is-the-difference-between-devttyusbx-and-devttyacmx/
旧答案
我假设你在 Mono 上运行这个程序?
Mono 需要端口的路径,因此 COM* 不会。您可以尝试为 ttyUSB* 创建一个名为 COM* 的符号链接(symbolic link)。最好位于环境目录中。一旦你将它们链接起来,程序应该不会有任何区别。但是,数据/程序中的行尾可能与 Windows 上的不同。如果设备需要 CRLF 并且程序使用 Environment.NewLine 您也可能会出现意外行为。如果您拥有使用重新编译工具编辑程序集的权限/权限,这可能会更容易。
关于c# - 在 Ubuntu 中从 ttyUSB 端口创建 COM 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59267486/
我有 2 个 USB 设备连接到树莓派, CP2108 USB 转串口转换器,有 4 个端口,当我连接到 usb 时,我得到 4 个 ttyUSBx EC25 GSM 调制解调器,同样适用于此情况。当
我有两个 usb-> 串行适配器,都是 ftdi,我们将它们命名为 ftdiA 和 ftdiB。该设备(在本例中为 raspberry pi,但它有点无关紧要)有 2 个 USB 端口,我们将它们命名
我在 Linux 的守护进程中使用端口时遇到问题。我使用 fcntl.h 中的 open 就像 serHandle_ = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY)
我一直在 cubieboard 上使用 3G 适配器来连接互联网。我已经安装了 usb_modeswitch ,它基本上将加密狗从 USB 存储模式切换到 USB 调制解调器模式。我验证了启动后切换会
我刚开始使用我的 Raspberry Pi,我有一个项目,我想从 USB 端口读取数据。我安装了Java JDK8并编写了编译运行的程序。但是我收到/dev/ttyUSB1 不存在的消息。 我只有一根
我有一个程序,当计算机运行时,该程序将始终运行。它通过 USB 设备与串行接口(interface)连接。有时,当计算机打开时,该设备可能不存在。 我的问题是确认设备文件何时存在的好方法。我可以创建一
我有一个 USB 到 RS485 转换器连接到我的 linux 盒子: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port 目前正在使用
我正在为一个项目使用 Go,并通过串行端口 (ttyusb) 将数据传输到嵌入式设备。在快速和“大”传输期间,我注意到传输的数据与我想要发送的值不匹配。 我尝试了各种可用的库,最后它们都使用系统调用进
我的程序需要访问ttyUSB没有root权限。 我尝试用 chmod 777 /dev/ttyUSB0 更改它如您所知,当我重新启动时,此权限更改为默认值。如何为此配置我的 udev rules.d?
以下日志来自 TeraTerm,一个用于 windows 的终端仿真器。我想通过以下方式从我的 Linux 中的 ttyUSB0 获取日志。 [Thu Apr 14 15:08:14.410 2016
我在 Raspbian 上运行一个自定义 C++ 程序,它会每隔一段时间重新启动它的 USB 端口。但是,我注意到/dev/USB* 枚举在电源循环之间不一致,需要能够处理这个问题。 是否有任何优雅的
我有 USB 产品的供应商和产品代码:0403:6001 我想知道如何轻松地将 lsusb 命令的结果与 /dev/ttyUSB* 上的设备确定联系起来 lsusb 给我 Bus 001 Device
AM 有一个 C 程序,它使用系统列出/dev/ttyUSB* 设备,我如何将它们存储在数组中并进行处理。 #include #include int main() { system("l
我有一个设备不断地将一些数据爆破到通过 USB 连接到我的 PC 的 FTDI 中。我想使用简单的 bash 脚本将数据记录到 CSV 文件中。 当我 cat/dev/ttyUSB0 时,我得到了一些
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 11 年前。 Improve thi
获取 Linux 系统上所有可用串行端口/设备列表的正确方法是什么? 也就是说,当我遍历/dev/中的所有设备时,如何以经典的方式判断哪些是串口,即那些通常支持波特率和RTS/CTS流量的设备控制?
想在 Advanced Tomato 固件下将 gsm 调制解调器(华为 E160G)连接到路由器 ASUS RT-N18U。但是不知道在dongle配置文件dongle.conf中指定了什么usb设
问题 我现在不得不使用一个相当尴尬的 API,坚持由我提供设备的地址,通过 USB 端口链接,格式为 通讯* .然而,在 Ubuntu 我正在使用并且必须使用的机器,如果我插入此设备,它将自动分配一个
我正在尝试访问已经运行的特权 docker 容器中的串行端口(作为用户),但我收到“权限被拒绝”错误,而权限应该正确设置。作为最小的可重现示例(假设串行设备连接到/dev/ttyUSB0): # st
我是一名优秀的程序员,十分优秀!