2017-01-19 2 views
0

qt5.7 auf FilzhutQIODevice :: writedata für Mikrofon

diesen audio-to-chart example Geprüft und stellten fest, dass QIODevice :: writedata zum Lesen Mikrofoneingang verwendet wird. Da es funktioniert und Daten vom Mikrofon geplottet werden, schreibt die Funktion offensichtlich nicht, sondern liest die Daten. Aber QIODevice doc Seite eindeutig fest:

[pure virtual protected] qint64 QIODevice::writeData(const char *data, 
qint64 maxSize) 

Schreibt bis zu maxSize Bytes von Daten an das Gerät. Gibt die Anzahl der geschriebenen Bytes zurück, oder -1, wenn ein Fehler aufgetreten ist.

Also meine Frage ist warum/wie funktioniert das?

Antwort

1

Betrachtet man den Code, ist der einzige QIODeviceXYSeriesIODevice, der für das Plotten der Daten zuständig ist.

Sie haben auch eine QAudioInput zum Lesen vom Mikrofon.

XYSeriesIODevice::writeData() wird von QAudioInput aufgerufen, um Daten in das Diagramm zu schreiben.

m_audioInput = new QAudioInput(inputDevices,formatAudio, this); 

m_device = new XYSeriesIODevice(m_series, this); 
m_device->open(QIODevice::WriteOnly); 

m_audioInput->start(m_device); 

void QAudioInput::start(QIODevice *device)

Die Übertragung beginnt Audio Daten aus dem Audioeingang des Systems an das Gerät. Das Gerät muss in den Modi WriteOnly, Append oder ReadWrite geöffnet haben.