标签: com0com

未找到com0com虚拟端口

我已经在64位Windows 7机器上安装了com0com v2.2.2.0,显然是成功的.

我运行命令实用程序,如下所示:

command> install PortName=COM9 PortName=COM8
       CNCA0 PortName=COM9
       CNCB0 PortName=COM8
ComDB: COM8 - logged as "in use"
ComDB: COM9 - logged as "in use"

command> busynames COM?*
COM3
COM4
COM5
COM6
COM8
COM9
COMPOSITEBATTERY
Run Code Online (Sandbox Code Playgroud)

注意:记录为"正在使用"不是错误消息?

然后我尝试像这样打开COM8

m_hIDComDev = CreateFileA( szCodedPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
if( m_hIDComDev == NULL  || m_hIDComDev == INVALID_HANDLE_VALUE ) {

    wchar_t * lpMsgBuf;
    DWORD dw = ::GetLastError(); 
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dw, …
Run Code Online (Sandbox Code Playgroud)

winapi com0com

12
推荐指数
2
解决办法
1万
查看次数

在Linux中是否有像COM0COM这样的程序?

我在windows中使用com0com进行程序测试,是否有像linux中的com0com这样的程序?

我知道有pts/ptmx,但我想要的是一个独立的程序,提供2个虚拟串口...

然后我可以打开2个程序,每个注意一个...

linux serial-port com0com

7
推荐指数
1
解决办法
5711
查看次数

适用于Linux的Null调制解调器模拟器(com0com)

我有一个项目包含一些单一测试,用于测试使用COM端口的串行通信(在Windows中).我使用com0com创建一对虚拟端口并执行测试.

但是我不知道在Linux中如何在MACOS中做到这一点.我已经读过这个话题:在Linux中是否有像COM0COM这样的程序?答案建议使用socat.我尝试过这种方法,但它不起作用,我的应用程序没有检测到我刚刚在socat中定义的端口.

socat PTY,link=/dev/COM98 PTY,link=/dev/COM99
Run Code Online (Sandbox Code Playgroud)

我的理论是socat无法创建虚拟端口,它只能绑定现有端口.

我该如何解决这个问题?

谢谢!

编辑:

这是我在运行之前的socat命令后得到的.如果仔细观察,您会看到COM98和COM99端口位于/ dev /中.但是,如果我写入/ dev/COM98并使用tail -f跟随COM99,我不会从它获得任何输出.

在此输入图像描述

EDIT2:

好吧,如果我用猫而不是尾巴,我可以看到输出(为什么?!)

在此输入图像描述

"

"

"

EDIT3:

解决方案:不要将端口命名为COMxx而是命名为ttySxx!

例:

socat PTY,link=/dev/ttyS98 PTY,link=/dev/ttyS99
Run Code Online (Sandbox Code Playgroud)

原因:某些serial-comm库可能不支持其他命名法,例如RXTX 2.XX和以前的版本.

linux macos serial-port socat com0com

6
推荐指数
1
解决办法
7526
查看次数

C#打开虚拟串行端口会引发ArgumentException

我有一个通过串行端口连接到设备的实用程序。为了测试该应用程序,我正在为设备编写一个模拟器。

这两个应用程序都打算在同一Windows 7计算机上运行。

我正在用C#编写模拟器。我使用com0com创建了一对虚拟端口(在本例中为CNCA8和CNCB8,因为我已经有几个现有的端口对)。

我正在尝试在模拟器中打开CNCB8(应用程序尚未运行),但出现异常:

System.dll中发生了'System.ArgumentException'类型的未处理异常

附加信息:给定的端口名不能以COM / com开头或不能解析为有效的串行端口。

样例代码:

        SerialPort port = new SerialPort("CNCB8", 9600, Parity.None, 8, StopBits.One);
        port.Handshake = Handshake.None;            
        port.Open();
Run Code Online (Sandbox Code Playgroud)

此问题无关紧要,因为它是未使用的虚拟端口(如果重要,IsOpen将返回false): C#SerialPort#Open()方法由于端口名称而抛出ArgumentException?

编辑:我还确保端口名称出现在SerialPort.GetPortNames()中,并且它出现在Windows的“ com0com串行端口仿真器”下的设备管理器中。我还尝试使用CNCA代替B(具有几个现有的虚拟端口),尝试删除“ HandShake”行,并尝试将波特率更改为115200,以防万一(尽管最终我在那里需要9600)。

c# windows serial-port virtual-serial-port com0com

5
推荐指数
1
解决办法
2527
查看次数

在c#中创建批处理文件

这是我第一次创建批处理.基本上我想在命令Promt中写命令.所以我需要批处理文件,以便我可以在c#中完成任务.

命令如下所示:

install PortName=COM50-
bcdedit.exe -set TESTSIGNING OFF
Run Code Online (Sandbox Code Playgroud)

我如何创建批处理文件并使用c#代码运行它.

谢谢

细节:我使用com0com来创建虚拟端口,所以主要的想法是自动化进程,所以我可以创建端口而无需进入命令端口并编写命令.

c# batch-file com0com

3
推荐指数
2
解决办法
6585
查看次数