Почему arduino не передает все данные через модуль bluetooth HC-06, как это, и есть ли "исправление" ?
Привет. У меня есть крошечный эскиз Arduino, который отправляет случайные данные через модуль Bluetooth (я использую HC-06) каждые 5 секунд, и у меня есть VB.NET приложение windows, которое получает данные и управляет ими. Данные будут выглядеть следующим образом например: "(255**255**255)"
Мой VB.Сетевое приложение получает текущие данные, отправляемые модулем Bluetooth, всплывает окно сообщения с текущими полученными данными и добавляет эти данные в элемент управления RichTextBox. Так что весь процесс должен выглядеть примерно так:
1. Строку: "(100**390**222)" передаются через Bluetooth в код Arduino
2. появится окно сообщения с текущими данными "(100**390**222)"
3. Строка добавляется в элемент управления richtextbox
...
Вместо этого он фактически не отправляет всю строку в одном экземпляре, вот фактический процесс:
1. Строку: "(100**390**222)" передаются через Bluetooth в код Arduino
2. появится окно сообщения с текущими данными "("
3. Строка добавляется в элемент управления richtextbox
4. появится окно сообщения с текущими данными "100**390**222)"
5. Строка добавляется в элемент управления richtextbox
...
Иногда он посылает первые два символа, а затем остальные. Почему он не отправляет всю строку в одном экземпляре и есть ли исправление для этого?
Что я уже пробовал:
Вот мой скетч:
#include <SoftwareSerial.h> SoftwareSerial BTserial(15, 17); uint8_t SomeFirstNumber, SomeSecondNumber, SomeThirdNumber; void setup() { BTserial.begin(38400); } void loop() { SomeFirstNumber = random(255); SomeSecondNumber = random(255); SomeThirdNumber = random(255); BTserial.print("(" + String(SomeFirstNumber) + "**" + String(SomeSecondNumber) + "**" + String(SomeThirdNumber) + ")"); delay(5000); }
Вот мой VB.Net-Приложения:
https://images2.imgbox.com/9f/54/djv2xbck_o.png[^]
Источник:
Delegate Sub SetTextCallback(ByVal [text] As String) Private Sub Open_Port(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_OpenPort.Click Dim bException As Boolean = False SerialPort1.PortName = "COM3" SerialPort1.BaudRate = 38400 SerialPort1.Parity = IO.Ports.Parity.None SerialPort1.StopBits = IO.Ports.StopBits.One SerialPort1.DataBits = 8 Try SerialPort1.Open() Catch ex As Exception bException = True MsgBox(ex.Message, MsgBoxStyle.Exclamation) End Try If Not bException Then MsgBox("Success!", MsgBoxStyle.Information) End If End Sub Private Sub Close_Port(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_ClosePort.Click SerialPort1.Close() End Sub Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived ReceivedText(SerialPort1.ReadExisting()) End Sub Private Sub ReceivedText(ByVal [text] As String) If RichTextBox_Output.InvokeRequired Then Dim x As New SetTextCallback(AddressOf ReceivedText) Me.Invoke(x, New Object() {(text)}) Else MsgBox([text]) RichTextBox_Output.Text += [text] RichTextBox_Output.ScrollToCaret() SerialPort1.DiscardOutBuffer() End If End Sub
Я постарался объяснить как можно лучше. Заранее благодарю вас!