Czy istnieje sposób na wysłanie sygnału lub w inny sposób stwierdzenia, czy kabel szeregowy USB jest odłączony, używając Qt?Wysyła sygnał, gdy odłączony jest kabel szeregowy USB
Odpowiedz
Można użyć sygnału error
klasy QSerialPort w dodatku QtSerialPort. Zobacz szczegóły tego w naszej dokumentacji.
http://qt-project.org/doc/qt-5.1/qtserialport/qserialport.html#error-prop
Trzeba napisać to zasadniczo:
connect(mySerialPort, SIGNAL(error(QSerialPort::SerialPortError)), this,
SLOT(handleError(QSerialPort::SerialPortError)));
...
void MyClass::handleError(QSerialPort::SerialPortError error)
{
if (error == QSerialPort::ResourceError) {
QMessageBox::critical(this, tr("Critical Error"), serial->errorString());
closeSerialPort();
}
}
QtSerialPort mogą być łatwo instalowane z Qt 5.1 < jak pakiety są dystrybuowane. Upewniliśmy się jednak, że QtSerialPort działa z wcześniejszymi wersjami, w tym Qt 4.8.X. Tutaj można znaleźć instrukcje do Qt 4, aby uzyskać ten zainstalowany dla Ciebie:
git clone [email protected]: qt/qtserialport.git
cd qtserialport
QMake
zrób
sudo zainstaluj.
Następnie trzeba będzie następujące linie w pliku projektu QMake jeśli zdarzy ci się użyć qmake:
Qt 5: QT += serialport
Qt 4: COMFIG += serialport
Korzystanie QSerialPortInfo
osiągnie wynik:
bool MyClass::checkPort()
{
QSerialPortInfo *portInfo = new QSerialPortInfo(ui->serialDevice->currentText());
// ui->serialDevice being a combobox of available serial ports
if (portInfo->isValid())
{
return true;
}
else
{
return false;
}
}
isValid()
jest teraz przestarzałe. isBusy()
może być użyty zamiast tego, ponieważ zwróci true
po otwarciu portu i false
, gdy port już nie istnieje (i nadal jest otwarty). Dzieje się tak również wtedy, gdy availablePorts()
powraca nieistniejący, ale otwarty port, ponieważ zachowujesz port na liście, otwierając go.
- 1. Wykrywanie "Kabel sieciowy odłączony" w Compact Framework
- 2. Port USB na port szeregowy
- 3. Jak obsługiwać wyjątek, gdy port szeregowy USB zostanie nieoczekiwanie usunięty?
- 4. Jakiej klasy USB używa port szeregowy COM?
- 5. Dostęp USB lub szeregowy w C#
- 6. Django wysyła sygnał post_save nieaktualne formsets inline
- 7. Otrzymuj powiadomienia, gdy internet jest podłączony lub odłączony
- 8. Powiadomienie, gdy wyświetlacz zostanie podłączony lub odłączony
- 9. Port szeregowy lub port USB za pomocą D?
- 10. Moc pobierana z urządzenia USB do tabletu z Androidem przez kabel OTG
- 11. Application.ThreadException: wyciek pamięci, jeśli nie jest odłączony?
- 12. Określić, czy port szeregowy jest normalny COM lub SPP
- 13. RxTx na komputerze Mac - port szeregowy jest już używany
- 14. PHPMailer wysyła z TLS nawet gdy szyfrowanie nie jest włączona
- 15. Facebook wysyła pustą podpisaną prośbę, gdy włączone jest bezpieczne przeglądanie.
- 16. Retrofit 2 nie wysyła danych, gdy ProGuard jest włączony
- 17. Emulacja UART przez USB
- 18. C# tylko do odczytu Port szeregowy, gdy dane przychodzą
- 19. Debugowanie USB przez Wifi
- 20. Django: Sygnał na queryset.update
- 21. Utwórz podpis odłączony PKCS # 7
- 22. Czy kabel akcji jest tym samym co Faye?
- 23. Poinformowany, kiedy kabel sieciowy jest podłączony/podłączony do Wi-Fi
- 24. Jak określić, czy podłączone urządzenie USB jest dyskiem flash USB?
- 25. Gniazdo jest wywoływane wiele razy za każdym razem, gdy emitowany jest sygnał.
- 26. Uzyskiwanie połączenia za pomocą kabla usb z wejściem IN/OUT przy użyciu EXTRA_PLUGGED nie działa
- 27. Szyny 5, kabel akcji i current_user
- 28. Jak wymusić na gitarze myślenie, że plik jest odłączony?
- 29. Aktywne stowarzyszenia warunkujące model szeregowy
- 30. Sygnał, gdy wybór QListView zmienia się z powodu działania klawiatury?
Wreszcie udało się znaleźć rozwiązanie. Skończyło się na używaniu 'QSerialPortInfo' do sprawdzenia poprawności portu przed jego użyciem. –
Wskazałeś mi właściwy kierunek. Potrzebowałem tylko czegoś, aby sprawdzić, czy port szeregowy został rzeczywiście podłączony, zanim spróbował zrobić coś z otwartym portem. Zrobiłem coś, co różniło się od tego co robię. –
Czym dokładnie * jest * "ResourceError"? Czasami widzę to w połowie komunikacji szeregowej, ale wciąż mogę wysyłać i odbierać dane na porcie. (Moja warstwa komunikacyjna zaczyna się źle zachowywać, ale nie wydaje się być całkowicie zepsuta - niektóre prawidłowe pakiety nadal są przesyłane.) –