
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.75] |
![]() |
|
![]() |
|
|
Здравствуйте!
Пытаюсь получить данные с АЦП (https://www.chipdip.ru/product/usb-da10, https://www.titan.tw/product/usb-da10/). К порту 6 подключил батарейку 1,5В. Результаты измерения программой для этого АЦП на первом скриншоте, на втором скриншоте команды для 5-7 контактов АЦП. В методе: ![]() ![]() void MainWindow::Start() { char cmdAInp[10] = {'Z', 'X', 'C', 'V', 'B', 'N', 'M', ',', '.', '/'}; QSerialPort serial; QString portName = cmbComPort->currentText(); serial.setPortName(portName); // Открытие порта if (!serial.open(QIODevice::ReadWrite)) { // Обработка ошибки QMessageBox::critical(nullptr, "Ошибка", "Не удалось отрыть COM-порт! Проверьте подключение АЦП!"); return; } // Установка параметров serial.setBaudRate(QSerialPort::Baud38400); serial.setDataBits(QSerialPort::Data8); serial.setParity(QSerialPort::NoParity); serial.setStopBits(QSerialPort::OneStop); serial.setFlowControl(QSerialPort::NoFlowControl); uint valIn = spbChannelInput->value(); QString dataRead; char wr = cmdAInp[valIn - 1]; uint nwr = serial.write(&wr, 1); dataRead.append(serial.readAll()); lblInfo->setText(dataRead); serial.close(); } ![]() ![]() $port = New-Object System.IO.Ports.SerialPort "COM3", 38400, None, 8, One $port.Open() $port.WriteLine("N") Write-Output $port.ReadLine() $port.Close() Прикреплённая картинка
Прикреплённая картинка
|
Сообщ.
#2
,
|
|
|
Разобрался.
|
Сообщ.
#3
,
|
|
|
Через пару лет только теперь сюда не приходи с тем же вопросом.
|
Сообщ.
#4
,
|
|
|
Пришлось сюда опять прийти с вопросом. Консольная программа работы с АЦП
![]() ![]() #include <QCoreApplication> #include <QSerialPort> #include <QSerialPortInfo> #include <QDebug> int main (int argc, char *argv[]) { QCoreApplication a (argc, argv); QSerialPort serial; serial.setPortName("COM3"); if (serial.isOpen()) serial.close(); if (!serial.open(QIODevice::ReadWrite)) { qDebug() << "Не удалось отрыть COM-порт! Проверьте подключение АЦП!"; return 1; } serial.setBaudRate(QSerialPort::Baud38400); serial.setDataBits(QSerialPort::Data8); serial.setParity(QSerialPort::NoParity); serial.setStopBits(QSerialPort::OneStop); serial.setFlowControl(QSerialPort::NoFlowControl); QByteArray temp, res; temp.resize(1); temp.append('N'); res.resize(10); for(int i = 0; i < 20; ++i) { serial.write(temp); serial.waitForBytesWritten(); res.clear(); res.append(serial.readAll()); serial.waitForReadyRead(); qDebug() << res; } serial.close(); return 0;} ![]() ![]() "" "1.32V\n\r" "1.3" "5V\n\r" "1.44V\n\r" "1.31V\n\r" "1.36V\n\r" "1.42V\n\r" "1.39V\n\r" "1.35V\n\r" "1.38V\n\r" "1.51V\n\r" "1.37V\n\r" "1.36V\n\r" "1.46V\n\r" "1.44V\n" "\r" "1.40V\n\r" "1.36V\n\r" "1.38V\n\r" |
Сообщ.
#5
,
|
|
|
Снова появился вопрос. Мне нужно записать в порт один символ. Делал так:
![]() ![]() QByteArray temp, res; temp.resize(1); temp.append('N') serial.waitForBytesWritten(); serial.write(temp); ![]() ![]() int main() { QByteArray res; for(int i = 0; i < 10; i++) { res.clear(); res.resize(1); res.append('R'); qDebug() << res; } return 0; } ![]() ![]() "PR" "PR" "PR" "PR" "PR" "PR" "PR" "PR" "PR" "\x00R" |
Сообщ.
#6
,
|
|
|
Ну смотрите. res.resize(1); устанавливает длину res в 1 байт
Скрытый текст Цитата https://doc.qt.io/qt-6/qbytearray.html#resize If newSize is greater than the current size, the byte array is extended to make it newSize bytes with the extra bytes added to the end. The new bytes are initialized to c. т.е. после clear длина res = 0 и там пусто, а после resize длина res = 1 и там "extra bytes added to the end". Это тот самый P в выводе перед вашим R |
Сообщ.
#7
,
|
|
|
macomics Спасибо большое, теперь понятно.
|