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個字符。 –