小型ロボットを制御するために Visual Basic でこのプログラムを作成しました。プログラム自体は基本的に、私の手の X 座標と Y 座標を、ロボットを制御する Arduino マイクロプロセッサに送信するだけです。
何らかの理由で、使用しているarduino Bluetoothボードで必要なボーレートが115200に設定されている場合、シリアルデータの送信を開始するとすぐにアプリがフリーズします。それでも、9200 に設定して arduino diecimilia を使用すると、アプリはフリーズしません。
arduino Bluetoothを使用してロボットとワイヤレスで通信したいので、ボーレートを115200にする必要があります。凍結を止める方法について何かアイデアはありますか?
Arduinoにデータを送るコード
Private Sub ArduinoSetSerial()
Dim ArduinoCom As String = ComPort.text
_serialPort = New SerialPort()
_serialPort.PortName = "COM" + Trim(ComPort.Text) 'Gets the ComPort from the Text box in the GUI of the App
_serialPort.BaudRate = 9200 'When using any other Arduino PLC, this should be set to 9600. In this case, it is set to 115200 as the specififc Arduino PLC we are using requires it.
_serialPort.DataBits = 8
_serialPort.Handshake = 0
_serialPort.ReadTimeout = 500
_serialPort.WriteTimeout = 500
End Sub
Private Sub ArduinoOpenSerial()
If Not _serialPort.IsOpen Then 'Opens the serial port if it isn't already open.
_serialPort.Open()
Else
MsgBox("ARDUINO: SERIAL PORT CANNOT BE OPENED")
End If
_continue = True
End Sub
Private Sub ArduinoCloseSerial() 'Defines the CloseSerial Action executed on shutdown
If _serialPort.IsOpen Then
_serialPort.Close()
End If
End Sub
Private Sub ArduinoSendByte(ByVal kinect_x As Single, ByVal kinect_y As Single, ByVal kinect_z As Single, ByVal kinect_j As Integer)
Dim x, y, z, j As Byte
Dim sx, sy As Single
Dim HowOften As Integer
ComStatus.Text = "NA" 'Set ComStatus Text to NA when not sending data
x = Math.Abs(CByte(kinect_x)) 'The X co-ordinate of the requested JointID
y = Math.Abs(CByte(kinect_y)) 'The Y co-ordinate of the requested JointID
z = CByte(kinect_z) 'The Z co-ordinate of the requested JointID (Not used in this particular application)
j = CByte(kinect_j) 'JointID
x = x
Dim ArduinoBuffer() As Byte = {x, y, z, j}
If _serialPort.IsOpen Then
ComStatus.Text = "OK" 'Write OK inthe ComStatus text box in the GUI
_serialPort.Write(ArduinoBuffer, 0, ArduinoBuffer.Length) 'Actually sends all the information to the Arduino on the specified Serial Port
End If
End Sub