1

我的目标是在两台远程计算机之间创建串行连接。我想从虚拟串行端口发送的消息将被重定向到使用 TCP 协议的门户。然后门户网站发送接收到的消息并将其重定向到另一台电脑的串行端口。
为此,我进行了测试,我想使用 c++模拟程序串行到以太网连接器。该程序允许我创建客户端连接,该连接将使用 TCP/IP 协议启动本地真实或虚拟串行端口数据重定向到远程服务器。客户端必须在 Windows 操作系统上运行. 现在,我使用 QT 创建了一个简单的 TCP 客户端,我可以将 QString 发送到服务器(门户),但我想要的是从虚拟串行端口(COMx)中打开的超级终端(例如 Putty)写入一些字符串我必须创建
服务器是由这个 socat 命令创建的:

socat -d -d pty,link=/dev/ttyS0,raw,echo=0 tcp-listen:1234

所以我可以将收到的字符串转发到 Fedora 操作系统中的串行端口/dev/ttyS0
现在,为了创建一个虚拟串口,我在网上搜索,我找到了CreateFile函数。使用这个函数,我在 QT 中编写了这段代码:

#include <windows.h>

HANDLE driver = CreateFileA("\\.\COM15", GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_NEW, 0, 0);
driver = CreateFileA("\\.\COM15",  GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if(driver == INVALID_HANDLE_VALUE)
{
    qDebug() << GetLastError();
    CloseHandle(driver);
    return;
}
else
{
    qDebug("Open");
    qdebug() << driver;
    return;
} 

如果我进入设备管理(在 Windows 10 中),我在端口(COM 和 LPT)部分下找不到新设备 COM15。为什么?
我使用的功能不正确?
我应该使用什么函数来创建允许我使用 C++ 创建虚拟 com 端口的驱动程序?

4

0 回答 0