tnjk.net
当前位置:首页 >> C#串口接收 >>

C#串口接收

由于串口在不断的接收数据,DataReceived事件在不断的触发,所以数据处理放到委托里面,DataReceived只做数据接收,假如你把数据处理放在DataReceived事件中,可能会影响到数据的接收。 如果你对委托不太了解,可以查阅MSDN文档:http://msdn.mi...

当然可以了,串口本身就是全双工的,开线程啊,用事件触发机制接收,发送数据的直接下用write指令就好了。

byte[] data = new byte[1]{(byte)serialPort1.ReadByte()};改为 int n = serialPort1.BytesToRead;byte[] data = new byte[n];serialPort1.Read(data, 0, n);

//创建一个串口通讯SerialPort CurrentPort = null;CurrentPort = new SerialPort(); CurrentPort.ReadBufferSize = 128; CurrentPort.PortName = comName; //端口号 CurrentPort.BaudRate = bandRate; //比特率 CurrentPort.Parity =parity;//...

SerialPort_DataReceived()事件是.net提供好的很完善的实时接收串口响应的方法. 正常情况用它就可以了. mSerialPort.DataReceived += new SerialDataReceivedEventHandler(SerialPort_DataReceived); 这行代码执行后就意味着程序已经另开一线程...

http://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport.aspx 实例代码都有了。 发16进制只要将16进制转字节数组再写就行了。

你发送的又不是ascii编码,应该类似于这样接收 int DataLength=serialPort1.BytesToRead;byte[] ds=new byte[DataLength];int len=serialPort1.Read(ds,0,DataLength);//然后对这个byte[]中的每个byte转为十六进制显示出来就行了。string return...

byte[] buf = System.Text.ASCIIEncoding.ASCII.GetBytes(textbox.Text); textboxAsc16.Text = ""; for (int i = 0; i < buf.Length; i++) { //显示字符的16进制ASCII码 textboxAsc16.Text = textboxAsc16.Text + Convert.ToString(buf[i], 16); }

对串口而言,不存在完整数据长度,都是以Byte为单位;一般来说,通常是透过时间跟固定数量来进行接收动作。(可能要看各PC的OS或Driver的设置情况) 通常在串口处理上,要确认接收数据完整,是在PC软件上进行接收、保存跟判断的动作,在完整收到...

给你发一个读取串口数据的类,按需求修改接收字符串的长度和接收规则 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.IO.Ports; namespace GSM.Cls { class Rea...

网站首页 | 网站地图
All rights reserved Powered by www.tnjk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com