我使用的是C#、Visual Studio和Arduino。我的整个系统有点复杂。但在这里我想知道一件简单的事情。当arduino UNO中的某个引脚获得HIGH.That时,我想触发C#函数。这意味着我想从arduino获取visual studio系统的输入并运行该函数。
我尝试了下面的代码,这是从互联网上找到的。但是我不能正确地使用它。我在u管中尝试了更多不同的方法。但都以失败告终。
我还想告诉大家,我正在开发一个RFID阅读器的固件系统。所以有很多类和函数。而且阅读器的阅读功能也在持续运行,我想使用这个触发器来停止该功能并关闭应用程序。
using System;
using System.IO.Ports;
class PortDataReceived
{
public static void Main()
{
SerialPort mySerialPort = new SerialPort("COM1");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.RtsEnable = true;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
mySerialPort.Open();
Console.WriteLine("Press any key to continue...");
Console.WriteLine();
Console.ReadKey();
mySerialPort.Close();
}
private static void DataReceivedHandler(
object sender,
SerialDataReceivedEventArgs e)
{
SerialPort sp = (SerialPort)sender;
string indata = sp.ReadExisting();
Console.WriteLine("Data Received:");
Console.Write(indata);
}
}所以,请帮我做到这一点。这是我第三年工业项目的最后一步。我被困在这里了。
发布于 2019-08-27 01:52:46
您是否验证了arduino所连接的COM端口就是您代码中使用的端口?另外,你在arduino上运行的代码是什么?将它展示出来会很有帮助,这样我们就可以更好地了解您是如何处理您的问题的。
我相信对你来说最容易使用的结构是主从结构。
我建议您使用以下函数处理与串行端口的连接:
Private Sub CommPortSetup()
With mySerialPort
.PortName = "COM10"
.BaudRate = 38400
.DataBits = 8
.Parity = Parity.None
.StopBits = StopBits.One
.Handshake = Handshake.None
End With
Try
mySerialPort.Open()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub这样,如果连接不成功,您将处理异常。我在您的代码中看不到一种方法来确定连接是否已建立。
https://stackoverflow.com/questions/57654282
复制相似问题