我的目标是在两台远程计算机之间创建串行连接。我想从虚拟串行端口发送的消息将使用TCP协议重定向到门户。然后门户网站发送收到的消息并将其重定向到另一个PC的串行端口。
为此我测试了,我想用c ++模拟程序Serial to Ethernet Connector。该程序允许我创建客户端连接,该连接将使用TCP / IP协议启动本地实际或虚拟串行端口数据重定向到远程服务器。客户端必须在Windows操作系统上运行。现在我用QT创建了一个简单的TCP客户端,我可以将QString发送到服务器(门户网站),但我想要的是从虚拟串口(COMx)中打开的超级终端(如Putty)写一些字符串我必须创建。
服务器由此socat命令创建:
socat -d -d pty,link=/dev/ttyS0,raw,echo=0 tcp-listen:1234
所以我可以将我收到的字符串转发到Fedora OS中的串口 / 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端口的驱动程序?