Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#应用程序中不发送串行数据_C#_Winforms_Serial Port_Arduino_.net 4.5 - Fatal编程技术网

在C#应用程序中不发送串行数据

在C#应用程序中不发送串行数据,c#,winforms,serial-port,arduino,.net-4.5,C#,Winforms,Serial Port,Arduino,.net 4.5,我有两个Arduinos,允许使用串行监视器通过串行端口交换消息 如果我在两边都使用串行监视器,一切正常。如果我使用我的C#应用程序,什么都不会发生。我试着从C#App的串行监视器发送数据,它工作正常,但没有相反的效果 // ... comPort1.Open(); // ... private void comPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { this.Invoke(new EventH

我有两个Arduinos,允许使用串行监视器通过串行端口交换消息

如果我在两边都使用串行监视器,一切正常。如果我使用我的C#应用程序,什么都不会发生。我试着从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都是启用的

以及
控制台.Write(msgBox.Text)我意识到这只是一个愚蠢的问题,我没有按照我的要求发送msgBox.Text。应该是:

private void sendButton_Click(object sender, EventArgs e)
{
    string my_str = "my string";
    comPort1.Write(msgBox.Text); //Console.Write(msgBox.Text);
    msgBoxLog.AppendText(msgBox.Text + my_str);
}

我在内置串行端口库中使用DataReceived事件时运气不好。它似乎经常出现错误和丢失数据。我总是不得不求助于使用轮询方法(在单独的线程中使用计时器或紧密while循环)或第三方库?为什么不直接编写字符串inData=comPort1.ReadExisting();msgBoxLog.AppendText(inData);在comPort1_DataReceived()@MehrdadKamelzadeh内部,这将不起作用。我需要对Windows窗体控件进行线程安全调用,否则我将得到一个
invalidoOperationException
@mafap在那里放置一个断点,以查看在新数据到来时是否触发。我的意思是在comPort1_DataReceived()@MehrdadKamelzadeh内。我试过了,但没有发现问题。问题是当我从我的应用程序发送时。当我从SerialMonitor发送到我的应用程序时,它工作,所以它正在接收