如何在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)); 

    } 

我有我收到方法的问题。每次我的硬件发送字符串时,我都可以在索引视图中看到它们的最后一个字符。 我想知道如何创建一个接收发布字符串的所有字符的接收方法。

+0

请提供代码到目前为止你已经尝试去帮助别人更好地回答你的问题。 –

+0

我认为......我和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 –

+0

今天晚些时候,我会很紧张地回答我的问题。 – Snoopy

我终于找到了我的答案。 这是关于串口发送速度的干扰和服务器接收(计算)速度! 你应该设置睡眠时间“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); 

    }