0
我想获得当前正在使用它们在我的GUI呈现它们的列表。 我使用下面的代码:阅读comport与QT通过winapi
TCHAR szComPort[8];
HANDLE hCom = NULL;
char str[20];
for (int i = 1; i <= 255; ++i)
{
if (i < 10)
wsprintf(szComPort, ("COM%d"), i);
else
wsprintf(szComPort, ("\\\\.\\COM%d"), i);
hCom = CreateFile(szComPort,
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
0,
NULL);
if (INVALID_HANDLE_VALUE != hCom)
{
sprintf_s(str,"COM%d",i);
ui->COMLIST->addItem(str);
}
CloseHandle(hCom);
}
这工作对我的笔记本电脑不错,但由于某种原因,它崩溃QT我的电脑上相称10及更高版本(这意味着如果我< = 255改变我对我< = 9它工作正常),
任何想法?
谢谢!
谢谢,但不是它7,我的意思是每个\\实际上是一个\在字符串中(它确实工作,但是...) – BioSP
%d扩展为两个字符i> = 10,三个字符对于i> = 100。使用调试器,如果您不确定,请亲自查看。 –
@HelloWorld:我知道如何计算“\\”。但它是11:2 \,1'.',1 \,3个字母'COM'(这使得7个字符前缀),从%d的3位数字(您的最高数字是255),非常重要**终止0 ** 。这是11个字符。 –