【发布时间】:2013-04-23 10:21:58
【问题描述】:
我已经将数据从 C# 发送到 Arduino,它的工作完美;但是当我尝试通过event handler 从传感器接收 C# 数据时,它必须保持端口打开以读取任何接收到的数据;所以我不能再通过串口发送数据了。
如何在 C# 和 Arduino 之间同时发送和接收数据?
这是我接收数据的代码:
public static SerialPort port=
new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
protected void DataReceived(object sender, SerialDataReceivedEventArgs e) {
SerialPort sp=(SerialPort)sender;
indata=sp.ReadExisting();
Functions f=new Functions();
if(indata!="") {
if(indata.Equals("bed_light_on\r\n")) {
f.update_flag("bed_light", 1);
}
}
}
protected void Page_Load(object sender, EventArgs e) {
indata="";
port.Close();
port.DataReceived+=new SerialDataReceivedEventHandler(DataReceived);
if(!port.IsOpen)
port.Open();
}
【问题讨论】:
-
您是否尝试从 ASP.NET 应用程序执行此操作?
-
要么需要使用单独的线程进行读写,要么使用异步操作。如果这确实是 ASP,那么您还有一个附加问题,即应用程序可能会意外启动和停止。
-
此处显示了完整性检查。 ASP 代码在网络服务器上运行。通常在数据中心或服务器机房中。在一扇上锁的门后面,不允许任何 Arduinos 进入。
标签: c# serial-port arduino