У меня есть плата arduino, которая подключена к FSR. Он должен вернуть информацию о текущем давлении. Эти данные передаются через 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
У меня нет абсолютно никакого опыта работы с последовательными портами, но это выглядит как поток .... «асинхронный» ... как есть еще один байт для чтения, но приемник не поймет этого.
Что я могу сделать по этому поводу?
Привет, Я попытался использовать readline, и мой код для строки всегда равен нулю. Но когда я использую сериал в python, он работает. Вы не знаете, почему это так? –