私はシリアル通信(USB)を介してarduinoから温度を読み取ることができるvb.netでアプリケーションを作成しようとしています。arduinoからvb.netアプリケーションへのシリアル通信による二重送信
ユーザーがボタンをクリックしたときに温度を読み取ることができます。
以下に自分のコードを掲載しました。ボタン 'BtnManueel_Click'をクリックすると、まずarduinoにコマンドを送信します。 Arduinoがこのコマンドを受信すると、それがPCに送信される温度終了を読み込みます。シリアルモニタを使用すると、これは完全に機能します。しかし、以下のコードでアプリケーションを実行すると、vb.netの値が得られません。
私は間違っていますか、それともなぜ機能しませんか?
私はvb.netとシリアル通信に関する多くの経験がありません。私はあなたがこれを手伝ってくれることを願っていました。
ありがとうございます。
種類について
vb.netコード:Arduinoの中
Imports System
Imports System.IO.Ports
Imports System.Windows.Forms
Public Class Form1
Dim serielepoort As New SerialPort
Dim celsius As Double
Private Sub BtnVerbinden_Click(sender As Object, e As EventArgs) Handles BtnVerbinden.Click
Try
serielepoort.PortName = "COM8"
serielepoort.BaudRate = 9600
serielepoort.DataBits = 8
serielepoort.Parity = Parity.None
serielepoort.StopBits = StopBits.One
serielepoort.Handshake = Handshake.None
serielepoort.Encoding = System.Text.Encoding.Default
serielepoort.ReadTimeout = 10000
serielepoort.Open()
Catch ex As Exception
MessageBox.Show(ex.Message, "fout bij verbinden!", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Private Sub BtnVerbindingVerbreken_Click(sender As Object, e As EventArgs) Handles BtnVerbindingVerbreken.Click
serielepoort.Close()
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles Me.FormClosed
BtnVerbindingVerbreken_Click(sender, e)
End Sub
Private Sub BtnManueel_Click(sender As Object, e As EventArgs) Handles BtnManueel.Click
If (serielepoort.IsOpen) Then
serielepoort.Write("t")
End If
End Sub
Private Sub serialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
celsius = serielepoort.ReadLine()
LblTempWaarde.Text = celsius
End Sub
End Class
コード:
nt pinLM335 = 0;
void setup()
{
Serial.begin(9600);
}
void loop() {
if(Serial.available() >0)
{
String val = Serial.readStringUntil('\n');
if (val == "t")
{ int waarde = analogRead(pinLM335);
double spanning =(waarde/1024.0)*5;
double Kelvin = (spanning) * 1000/10;
double celsius = Kelvin - 273.15;
Serial.println(celsius);
}
}
}