Я пытаюсь создать приложение WPF, которое будет получать последовательные данные от Arduino. Arduino отправит «1», когда пользователь включит кодировщик, а WPF возьмет это и увеличит отметку громкости 1.
public MainWindow()
{
InitializeComponent();
string comPort = "COM6";
SerialPort mySerialPort = SerialPortCommunications(comPort);
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(OnDataRecieved);
mySerialPort.Open();
mySerialPort.DiscardInBuffer();
}
private void OnDataRecieved(object sender, SerialDataReceivedEventArgs e)
{
var serialDevice = sender as SerialPort;
string indata;
indata = serialDevice.ReadExisting();
MessageBox.Show(indata);
MessageBox.Show("Fired");
}
public SerialPort SerialPortCommunications(string comPort)
{
SerialPort mySerialPort = new SerialPort(comPort);
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
//mySerialPort.DiscardNull = true;
return mySerialPort;
}
Проблема, с которой я сталкиваюсь, если Arduino постоянно не отправляет Данные моего события не будут срабатывать. Это исправлено постоянной отправкой 0 из arduino, однако, когда мне нужно получить 1, чтобы сигнализировать об изменении громкости, я не могу перебрать входной буфер. Я создал консольное приложение с тем же кодом, что и выше, который ожидает ввода данных пользователем в главном, который имеет проблему. Arduino может молчать в течение часа, а когда час истечет, отправленные данные отобразятся на консоли. В идеале в моем WPF канал будет молчать, пока не будут получены данные для изменения сигнала.
Любая помощь приветствуется, спасибо.