У меня есть два Arduinos, которые позволяют обмен сообщениями через последовательный порт с помощью Serial Monitor.Не отправлять Серийные данные в приложении C#
Если я использую Serial Monitor с обеих сторон, все работает нормально. Если я использую свое приложение C#, ничего не происходит. Я попытался отправить из Serial Monitor для C# App, и он работает, но не наоборот.
// ...
comPort1.Open();
// ...
private void comPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(processData));
}
private void processData(object sender, EventArgs e)
{
string inData = comPort1.ReadExisting();
msgBoxLog.AppendText(inData);
}
// ...
private void sendButton_Click(object sender, EventArgs e)
{
string my_str = "my string";
msgBoxLog.AppendText(msgBox.Text + my_str);
comPort1.Write(msgBox.Text);
}
RtsEnable и DtrEnable оба Enabled
Мне повезло с использованием события DataReceived во встроенных библиотеках последовательных портов. Похоже, что это багги и пропуски данных довольно часто. Мне всегда приходилось прибегать к использованию метода опроса (используя таймер или жесткий цикл в отдельном потоке) или сторонних библиотек. –
Почему вы используете EventHandler? почему вы прямо не пишете строку inData = comPort1.ReadExisting(); msgBoxLog.AppendText (inData); Внутри comPort1_DataReceived() –
@MehrdadKamelzadeh Это не сработает. Мне нужно сделать потокобезопасные вызовы в Windows Forms Controls или я получу 'InvalidOperationException' – mafap