私はその時点まで行くでしょう。 arduinoはADCポートから値を読み取り、シリアルポート(0〜255の値)で値を送信します。私はバイト型ベクトルでそれらを保存します。 Arduinoに特定の信号を送信した後、ベクトルに保存されたデータをQt appに送信し始めます。 Arduinoが800の値を送信し、アプリがそれよりも少ない値を受け取ることを除いて、すべてが機能しています。シリアルボーレートを9600に設定すると、220の値が得られます。代わりに、ボーレートを115200に設定した場合、私は20個の値しか得られません。この問題を解決する手助けをしてくれますか?私はこのプロジェクト(リアルタイムのリニアCCD)で良いtrasmision速度が必要なので、私は115200のボーレートを使用したいと思います。私は以下のいくつかのコードを残しておきます:私のQtアプリはarduinoによって送信されたすべてのデータを受信しません
Arduinoのコード:
void sendData(void)
{
int x;
for (x = 0; x < 800; ++x)
{
Serial.print(buffer[x]);
}
}
これは値を送信する機能です。私は十分な情報だと思いますので、私はそれを要約しました。より多くのコードが必要な場合は、私にお知らせください。
Qtのシリアルポートの設定コード:
...
// QDialog windows private variables and constants
QSerialPort serial;
QSerialPortInfo serialInfo;
QList<QSerialPortInfo> listaPuertos;
bool estadoPuerto;
bool dataAvailable;
const QSerialPort::BaudRate BAUDRATE = QSerialPort::Baud9600;
const QSerialPort::DataBits DATABITS = QSerialPort::Data8;
const QSerialPort::Parity PARITY = QSerialPort::NoParity;
const QSerialPort::StopBits STOPBITS = QSerialPort::OneStop;
const QSerialPort::FlowControl FLOWCONTROL = QSerialPort::NoFlowControl;
const int pixels = 800;
QVector<double> data;
unsigned int dataIndex;
QByteArray values;
double maximo;
...
// Signal and slot connection.
QObject::connect(&serial, SIGNAL(readyRead()), this,SLOT(fillDataBuffer()));
...
// Method called when there's data available to read at the serial port.
void Ventana::fillDataBuffer()
{
dataIndex++;
data.append(QString::fromStdString(serial.readAll().toStdString()).toDouble());
if(data.at(dataIndex-1) > maximo) maximo = data.at(dataIndex-1);
/* The following qDebug is the one I use to test the recieved values,
* where I check that values. */
qDebug() << data.at(dataIndex-1);
}
おかげで、申し訳ありません、それはない場合とても明確で、疲れていました。 Y:P
コードはどのようにしてアナログ/デジタル変換器からデータを読み込みますか?おそらくそれはあなたが思っているように速く読むことができません.... – wallyk
私はADCからすべての値を読んで、ベクトルに保存し、ベクトルトラフのシリアルポートを送信します。それは独立しているので、adcを読むことについては問題ではありません。 –