void SftpSession::handleLsOutput(SftpJobId jobId, const QByteArray &output) { QList<SftpFileInfo> allFileInfo; for (const QByteArray &line : output.split('\n')) { if (line.startsWith("ls") || line.isEmpty()) continue; const QByteArrayList components = line.simplified().split(' '); if (components.size() < 9) { qCWarning(sshLog) << "Don't know how to parse sftp ls output:" << line; continue; } const QByteArray typeAndPermissions = components.first(); if (typeAndPermissions.size() != 10) { qCWarning(sshLog) << "Don't know how to parse sftp ls output:" << line; continue; } SftpFileInfo fileInfo; fileInfo.type = typeFromLsOutput(typeAndPermissions.at(0)); fileInfo.permissions = permissionsFromLsOutput(QByteArray::fromRawData( typeAndPermissions.constData() + 1, typeAndPermissions.size() - 1)); bool isNumber; fileInfo.size = components.at(4).toULongLong(&isNumber); if (!isNumber) { qCWarning(sshLog) << "Don't know how to parse sftp ls output:" << line; continue; } // TODO: This will not work for file names with weird whitespace combinations fileInfo.name = QFileInfo(QString::fromUtf8(components.mid(8).join(' '))).fileName(); allFileInfo << fileInfo; } emit fileInfoAvailable(jobId, allFileInfo); }
void GsmTrack::slReadSerial() { QByteArray data = gsmSerial->readAll().trimmed(); //qDebug() << "the date:: " << data << endl; emit sendData(data); if(data.contains("+CSQ: ")){ int csq; int csq_tail; std::sscanf(data.data(), "+CSQ: %d,%d", &csq, &csq_tail); qDebug("the csq is:: %d\n", csq); if(csq <= 10 || csq > 31){ emit sendCsq(0); return; } emit sendCsq(csq); } // 读取网络类型与网路配置 if(data.contains("^SYSCFG: ")){ int type; std::sscanf(data.data(), "^SYSCFG: %d", &type); if(type == 13){ emit sendText("2G network it is!!"); }else if(type == 2){ emit sendText("3G network it is!!"); } } // 基站信息 // BASE:: "AT+CREG=2;+CREG?" // OUT :: +CREG: 2,1,"A5D3","19E420F",2 if(data.contains("+CREG: ")){ qDebug() << data << endl; QByteArrayList cregList = data.split(','); emit sendBase(QLatin1String( cregList.at(2) + "," + cregList.at(3) )); } }