如何在asp.net中发送和接收来自服务器端的串行端口的数据mvc
问题描述:
我想用asp.net mvc 5开发一个程序,该程序从服务器端的串行端口发送和接收命令。实际上,我有一个连接到服务器的硬件,我想发送命令到这个硬件并从中获得响应。如何在asp.net中发送和接收来自服务器端的串行端口的数据mvc
这是我用来发送数据的方法:
public static void SendData(string data)
{
SerialPort port = new SerialPort(
"COM5", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(data);
port.Close();
}
,这是我收到的方法:
public static void ReceiveData()
{
if (port != null && port.IsOpen)
port.Close();
port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
port.Open();
}
public static void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int dataLength = port.BytesToRead;
byte[] data = new byte[dataLength];
int nbrDataRead = port.Read(data, 0, dataLength);
if (nbrDataRead == 0)
return;
Taxi.Controllers.ReceiveController.Decision(System.Text.Encoding.UTF8.GetString(data));
}
我有我收到方法的问题。每次我的硬件发送字符串时,我都可以在索引视图中看到它们的最后一个字符。 我想知道如何创建一个接收发布字符串的所有字符的接收方法。
答
我终于找到了我的答案。 这是关于串口发送速度的干扰和服务器接收(计算)速度! 你应该设置睡眠时间“port_DataReceived”方法的第一行,你看:
public static void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(TimeSpan.FromMilliseconds(100));
int dataLength = port.BytesToRead;
char[] result = new char[dataLength];
for (int len = 0; len < result.Length;)
{
len += port.Read(result, len, result.Length - len);
}
string send = "";
for (int i = 0; i < result.Length; i++)
{
send += result[i];
}
Taxi.Controllers.ReceiveController.Decision(send);
}
请提供代码到目前为止你已经尝试去帮助别人更好地回答你的问题。 –
我认为......我和Answer很接近。我正在处理这篇文章https://web.archive.org/web/20130709121945/http://msmvps.com/blogs/coad/archive/2005/03/23/SerialPort-_2800_RS_2D00_232-Serial-COM-Port_2900_- in-C_2300 _-。NET.aspx –
今天晚些时候,我会很紧张地回答我的问题。 – Snoopy