日期:2014-05-17  浏览次数:20980 次

C#串口通信中如何接收串口的数据
刚刚学习C#串口通信,不知道怎么接收数据,从网上查了的代码页看不懂,那个朋友可以帮帮忙
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);这句是什么意思

------解决方案--------------------
看看msdn 帮助
------解决方案--------------------
DataReceived 表示将处理 SerialPort 对象的数据接收事件的方法。 


------解决方案--------------------
应该是串口新接收到的数据加在串口原有数据后面,而不是覆盖
------解决方案--------------------
+= new SerialDataReceivedEventHandler(DataReceivedHandler); 是注册事件
------解决方案--------------------
假如接收到数据就触发 SerialDataReceivedEventHandler 事件
------解决方案--------------------
推荐看看这个,我的串口通信入门学习就是看的这个,写的很好,很有帮助:
http://topic.csdn.net/u/20100908/17/2ddd33e7-6777-49c3-bba8-2988cf15af4e.html
------解决方案--------------------
给你一个参考,
http://nonocast.cn/gsm-modem/
------解决方案--------------------
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

定义处理函数:
C# code

void _DeviceCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    //这里处理数据
    int DataCount = _DeviceCom.BytesToRead;
    byte[] ReCMD = new byte[DataCount];//存放接收到的数据
    serialPort1.Read(ReCMD, 0, DataCount);
}

------解决方案--------------------
算了,我还是贴我自己的代码吧
C# code


 SerialPort _DeviceCom = new SerialPort();
_DeviceCom.DataReceived += new SerialDataReceivedEventHandler(_DeviceCom_DataReceived);

void _DeviceCom_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//这里处理数据
    int DataCount = _DeviceCom.BytesToRead;
    byte[] ReCMD = new byte[DataCount];//存放接收到的数据
    _DeviceCom.Read(ReCMD, 0, DataCount);
}

------解决方案--------------------
就是微软封装的串口接收到数据后会自动触发的一个事件.
------解决方案--------------------
已经说的很清楚了。
就是当有数据到当串口时,出发该事件。
你在其中写代码接收数据。
------解决方案--------------------
serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
这句的意思是为serialPort1添加一个DataReceived事件,就是当串口有数据进来的时候,就会触发这个事件的。
你想接收数据的话,在DataReceived事件里添加接收数据的方法就好了。

------解决方案--------------------
DataReceivedHandler方法中接收数据。
------解决方案--------------------
探讨

谢谢你们,很感谢,看了你们的回复我受益很多