gpt4 book ai didi

c# - 在 Ubuntu 中从 ttyUSB 端口创建 COM 端口

转载 作者:行者123 更新时间:2023-12-04 18:39:43 28 4
gpt4 key购买 nike

问题

我现在不得不使用一个相当尴尬的 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).



奖金问题

有问题的 API 似乎是在假设它将在 Windows 机器上运行的情况下编写的。 (它在 C# 中。)COM* 格式似乎受到 Windows 架构的青睐——我很高兴在这一点上得到纠正,而 Ubuntu 似乎更喜欢 ttyUSB* 格式。假设我可以将设备中的数据从 ttyUSB* 端口传输到 COM* 端口,那么 API 是否真的能够找到所述数据?还是会错误地遵循默认的 Windows 路径?

最佳答案

鉴于我怀疑您可以将 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com