我有一个串行设备的文件名字符串。它可以是Windows COM端口,也可以是UNIX /dev/
字符设备文件。
所以我正在寻找类似的东西:
bool isCharDevice(QString name) {
// something like
return QFileInfo(name).isSomething();
// or
return QFile(name).isSomething();
}
我追求的是同样的事情,我会在unix shell中使用test -c $name
,或使用stat
的C代码(以下参考代码片段)。但我希望它也适用于Windows,我更喜欢简单的Qt解决方案。我在QFile和QFileInfo文档中找不到答案。
这可以用普通的Qt吗?
如果没有,我需要沿着#ifdef
路线走下去,如何在Windows中测试大致相同的东西(验证文件名是指可能是串口的东西)?
供参考,POSIX代码片段:
struct stat st;
stat(name_cstr, &st);
if (S_ISCHR(st.st_mode)) {...}
更新:经过更多调查后,似乎无法使用QFile
访问Windows COM端口:QFile("COM4:").exists()
即使该COM端口存在且命令也将返回false提示命令type COM4:
有效。因此,在Windows上看起来根本不可能使用普通的Qt,无论如何都需要使用串口库。