2017-04-06 7 views
0

안녕하세요, 내 프로젝트는 데스크톱 응용 프로그램을 만드는 것입니다. 이 응용 프로그램을 사용하면 usb 포트를 통해 PC에서 stm32 마이크로 컨트롤러로 통신 할 수 있습니다. 내 PC에 연결된 USB 포트의 수를 알고 싶어 Qt는Qt가 연결된 모든 포트를 감지하지 못했습니다.

에 QSerialPort 사용할 수 :

나는 클래스가 사용합니다. 그래서 난 내 마이크로 컨트롤러 stm32f4, USB 케이블을 외장 하드 드라이브를 연결

#include <QCoreApplication> 
#include <QDebug> 
#include <QSerialPort> 
#include <QSerialPortInfo> 


Int main (int argc, char * argv []) 
{ 
    QCoreApplication a (argc, argv); 

    QDebug() << "Number of serial ports:" << QSerialPortInfo :: availablePorts(). Count(); 

Return 0; 
}  

이 ... 내 문제는 이것이다 : 여기

내 코드입니다 내가 Qt는에서 프로그램을 실행할 때이있다 컴파일 문제는 있지만 디버그 결과에 다음 줄이 표시됩니다. "직렬 포트 수 : 0"USB 포트가 연결되었습니다.

블루투스를 활성화하거나 3g 키를 삽입하면 이러한 포트가 감지되지만 나머지는 감지되지 않습니다.

나는 실수가 어디서 왔는지 이해하지 못했다 !!

+0

OS가 무엇입니까? 드라이버를 설치 했습니까? – eyllanesc

+0

내 OS는 Windows 7입니다. 드라이버를 설치했고 장치 관리자가 STM을 감지했습니다. – oumaima

+0

USB와 COM 포트가 같은 것은 아닙니다. QSerialPort는 COM 포트에서 작동합니다. 블루투스 및 3g 키는 USB를 통해 COM 포트를 에뮬레이션하지만 STM32는 그렇지 않을 수 있습니다. –

답변

0

Qt 만 USB 직렬 포트를 기본적으로 지원합니다. (예 : COM/TTY)

STM이 연결된 USB 포트의 하위 레벨 세부 정보 (예 : 물리적 포트 번호)를 알고 싶다면 플랫폼 특정 코드를 사용해야합니다.

Libusb 당신을 도울 수 있습니다.

+0

카드가 COM 포트로 감지되는지 확인하기 위해 STM32 Virtual Com Port 예제를 시도했습니다. 이를 위해 나는 https://youtube.com/watch?v=Dy8CcO5i42Y라는이 비디오를 따라 갔지만 여전히 장치 관리자에서 USB로 감지되어 문제가 지속됩니다. – oumaima

+0

"USB"장치로 간주되며 "포트 (COM 및 LPT)"아래에도 올바른 드라이버가 설치되어있는 경우입니다. ST의 가상 COM 드라이버를 다시 설치하는 것이 좋습니다. – Jeroen3