67 , m_sCollectorHost(QHostAddress(QHostAddress::LocalHost).toString())
68 , m_bIsMeasuring(false)
77 printf(
"About to connect to collector... ");
78 if(this->state() == QAbstractSocket::ConnectedState)
80 printf(
"Note: Tried to re-open an open connection... [done]\r\n");
84 this->connectToHost(m_sCollectorHost, COLLECTOR_PORT);
85 this->waitForConnected( -1 );
88 if (!this->
server_login(QString(COLLECTOR_PASS), QString(
"mne_rt_server"))) {
89 printf(
"Neuromag collector connection: Error\r\n");
127 QString t_sSend = QString(
"%1\r\n").arg(COLLECTOR_GETVARS);
130 if (!this->
server_send(t_sSend, t_buf, DACQ_KEEP_INPUT)) {
131 printf(
"Neuromag collector connection: Error\r\n");
135 QList<QByteArray> t_lLinesBuffer = t_buf.split(
'\n');
137 QByteArray bufVar1(COLLECTOR_BUFVAR);
138 QByteArray bufVar2(
"Vectors in a buffer");
139 for(qint32 i = 0; i < t_lLinesBuffer.size(); ++i)
141 if(t_lLinesBuffer[i].contains(bufVar1))
144 char var_value[1024];
146 sscanf(t_lLinesBuffer[i].data()+4,
"%s %s %s", var_name, var_value, var_type);
147 maxbuflen = QString(var_value).toInt();
150 else if(t_lLinesBuffer[i].contains(bufVar2))
152 QList<QByteArray> t_lMaxBuflen = t_lLinesBuffer[i].split(
':');
153 maxbuflen = t_lMaxBuflen[t_lMaxBuflen.size()-1].trimmed().toInt();
169 if (!this->
server_command(QString(
"%1 %2 %3\n").arg(COLLECTOR_SETVARS).arg(COLLECTOR_BUFVAR).arg(maxbuflen)) ||
172 printf(
"Neuromag collector connection: Error\n");
185 if (this->state() != QAbstractSocket::ConnectedState)
189 QByteArray t_arrCommand = p_sCommand.toLocal8Bit();
191 if(t_arrCommand.size() > 0)
193 this->write(t_arrCommand);
198 this->waitForReadyRead(-1);
211 QString t_sCommand = QString(
"%1 %2\r\n").arg(DACQ_CMD_PASSWORD).arg(p_sCollectorPass);
214 t_sCommand = QString(
"%1 %2\r\n").arg(DACQ_CMD_NAME).arg(p_sMyName);
217 printf(
"[done]\r\n");
227 if (this->state() != QAbstractSocket::ConnectedState)
230 QByteArray t_arrSend = p_sDataSend.toLocal8Bit();
232 if(t_arrSend.size() > 0)
234 this->write(t_arrSend);
238 this->waitForReadyRead(-1);
239 if ( p_iInputFlag == DACQ_DRAIN_INPUT )
243 else if( p_iInputFlag == DACQ_KEEP_INPUT )
245 p_dataOut = this->readAll();
258 printf(
"Start measurement... ");
260 QString t_sCommand = QString(
"%1\r\n").arg(
"meas");
263 m_bIsMeasuring =
true;
276 printf(
"Stop measurement... ");
278 QString t_sCommand = QString(
"%1\r\n").arg(
"stop");
281 m_bIsMeasuring =
false;
282 printf(
"[done]\r\n");
int setMaxBuflen(int maxbuflen)
bool server_send(QString &p_sDataSend, QByteArray &p_dataOut, int p_iInputFlag=DACQ_DRAIN_INPUT)
bool server_command(const QString &p_sCommand)
bool server_login(const QString &p_sCollectorPass, const QString &p_sMyName)
implementation of the CollectorSocket Class.
CollectorSocket(QObject *parent=0)