바로 그 지점으로갑니다. 내 arduino는 ADC 포트에서 값을 읽고 직렬 포트 (0에서 255 사이의 값)를 통해 값을 보냅니다. 바이트 형식 벡터로 저장합니다. Arduino에 특정 신호를 보내면 벡터에 저장된 데이터를 Qt 앱에 보내기 시작합니다. arduino가 800 개의 값을 보내야하고 앱이 그보다 적은 값을 받는다는 것만 제외하면 모든 것이 작동합니다. 직렬 보오율을 9600으로 설정하면 220 값을 얻습니다. 대신 보오율을 115200으로 설정하면 20 개의 값만 얻습니다. 이 문제를 해결하도록 도와 줄 수 있습니까? 이 프로젝트 (실시간 선형 CCD)에서 좋은 전송 속도가 필요하기 때문에 나는 115200 전송 속도를 사용하고 싶습니다.내 Qt 앱이 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를 읽는 것에 대해 문제가되어서는 안됩니다. –