FSR に接続された arduino ボードを実行しています。現在の圧力に関する情報を返す必要があります。このデータは COM5 経由で送信され、C# プログラムで解析する必要があります。センサーは 0 ~ 1023 の値を返します。
これは私のArduinoコードです(重要ではないかもしれません)
int FSR_Pin = A0; //analog pin 0
void setup(){
Serial.begin(9600);
}
void loop(){
int FSRReading = analogRead(FSR_Pin);
Serial.println(FSRReading);
delay(250); //just here to slow down the output for easier reading
}
私の C# シリアル ポート リーダーは次のようになります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Windows.Forms;
namespace Serial_Reader
{
class Program
{
// Create the serial port with basic settings
SerialPort port = new SerialPort("COM5",
9600);
static void Main(string[] args)
{
new Program();
}
Program()
{
Console.WriteLine("Incoming Data:");
// Attach a method to be called when there
// is data waiting in the port's buffer
port.DataReceived += new
SerialDataReceivedEventHandler(port_DataReceived);
// Begin communications
port.Open();
// Enter an application loop to keep this thread alive
Application.Run();
}
private void port_DataReceived(object sender,
SerialDataReceivedEventArgs e)
{
// Show all the incoming data in the port's buffer
Console.WriteLine(port.ReadExisting());
}
}
}
この場合、センサーを押して放します
arduino のコンソール出力:
0
0
0
0
285
507
578
648
686
727
740
763
780
785
481
231
91
0
0
0
0
0
C# での同じシナリオ
0
0
0
0
55
3
61
1
6
46
666
676
68
4
69
5
6
34
480
78
12
0
0
0
0
シリアルポートの経験はまったくありませんが、ストリームが....「非同期」のように見えます...読み取る別のバイトがあるようですが、受信者はこれを認識しません。
これについて何ができますか?