Как распечатать последовательную передачу данных из Arduino

Я отправляю данные в Arduino, используя QtSerialPort. Когда я читаю данные, у выхода есть несколько символов принтера. Я использую QTexEdit (в левой руке) для вставки данных для отправки и других (в правой руке) для вставки данных для чтения.

введите описание изображения здесь>> </p>

<p> Вы можете видеть, что в принимаемых данных нет символа принтера. </p>

<h1> Рабочий процесс отправки и получения данных между QtSerialPort и Arduino </h1>

<h3> Отправка данных с помощью QtSerialPort </h3>

<pre><code>---- +: = 0 = + ----</code></pre>

<p> Я хочу отправить данные с размером буфера 24 байта. </p>

<h3> Чтение и отправка данных с помощью Arduino </h3>

<pre><code>---- +: = 1 = + ----</code></pre>

<p> Код Arduino прост. </p>

<h3> Получение данных с помощью QtSerialPort </h3>

<pre><code>---- +: = 2 = + ----</code></pre>

<p> Я пытаюсь прочитать те же данные, что и в Arduino. Какое конвертирование мне нужно сделать? </p></body></html>

2 голоса | спросил Robert 4 J0000006Europe/Moscow 2015, 20:39:28

1 ответ


2

У вас нет гарантий, что Qt получит все сообщение в одном Кусок. Он может получить «нет se» в качестве первого фрагмента, а затем «q pasa» как второй кусок. Поскольку dataBuffer динамически распределяется, он сначала содержит мусор, и вы печатаете часть этого мусор, который вы не перезаписывали.

Легким решением будет просто NULL-завершить буфер:

 dataBuffer = new char[size + 1];            // + 1 byte for '\0'
c = m_serialPort->read(dataBuffer, size);
dataBuffer[c] = '\0';                       // terminate the string
ответил Edgar Bonet 10 J0000006Europe/Moscow 2015, 18:35:58

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132