C# SerialPort sp 获取端口缓冲区中的所有内容原理

作者&投稿:太康 (若有异议请与网页底部的电邮联系)
关于c# serial port 接受信号并显示的问题~

void SPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
System.IO.Ports.SerialPort serialPort = (System.IO.Ports.SerialPort)sender;
//此处 获取端口缓冲区中的所有内容
string strTmp = serialPort.ReadExisting();
}
以上你试试,另外如果你觉得时间不够怕读不到数据可以加个sleep时间,然后再读。
读取到的数据,有可能没有分隔开来,所以需要你的数据在发送到端口时最好加个分隔符来区分是不同的信号来源。

DWORD dwError;
COMSTAT cs;
ClearCommError(hComm,&dwError,&cs);//获取端口状态
//cs.cbInQue就是串口缓冲区数据字节数

串口收到数据后会自动保存到串口缓冲区中,然后在适当的时机发出DataReceived事件通知程序。程序在DataReceived事件中,先查询BytesToRead属性获取缓冲区的字节数量,然后调用Read方法去读取出所有的字节。


蒲江县18263809458: 在c#里SerialPort sp = new SerialPort(); sp.Open(); 错在哪里?提示说"sp是字段,此处被当做类型使用” -
祖炎硫糖: C# 任何对象定义 应该写在类中 class test { SerialPort sp = new SerialPort(); }

蒲江县18263809458: C#有个SerialPort控件,其对应的事件为serialPort1 - DataReceive()
祖炎硫糖: { //...... SerialPort sp = new SerialPort(); sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { //这里处理数据接收 }

蒲江县18263809458: C# 怎么调用 serialport类 -
祖炎硫糖: 看你需要,可以放也可以不放,不放的话你自己在代码中创建一个也是可以的,诸如象 serialport sp=new serialport(); sp.baudrate=9600; sp.databits=8; ......

蒲江县18263809458: C# 如何循环增加serialport -
祖炎硫糖: 如果你的数量是一直固定的,用普通的数组就行了,形如 SerialPort[] array=new SerialPort[50]; 如果数量不定,需要动态添加,用List泛型,形如 List list=new List(); 具体用法建议你自己看看List相关内容

蒲江县18263809458: C#serialport控件详细用法 -
祖炎硫糖: 首先是打开串口:serialPort1.PortName = portList.SelectedItem.ToString(); serialPort1.BaudRate = Convert.ToInt32(baudrateList.SelectedItem.ToString()); serialPort1.StopBits = StopBits.One; serialPort1.Parity = Parity.None; serialPort1.DataBits ...

蒲江县18263809458: C#中serialport控件使用 -
祖炎硫糖: do set WSHshellA = wscript.createobject("wscript.shell") a=inputbox(" "+vbcrlf+vbcrlf+" 请输入您要预交的金额","温馨提示") if a=5 thenmsgbox("成功预交金额5元."),4096+64,"温馨提示"exit doelseif a=10 thenmsgbox("成功预交金额10元."),4096+64,"温馨提示"exit do elsemsgbox "请输入5元或10元" end if loop

蒲江县18263809458: c# 串口编程 -
祖炎硫糖: SerialPort comm= new SerialPort(); comm.PortName ="COM1"; comm.BaudRate = 4800; comm.DataBits = 8; comm.Parity = Parity.None; comm.StopBits = StopBits.One; comm.ReceivedBytesThreshold = 1; comm.DataReceived += new ...

蒲江县18263809458: 在c#中,怎样动态生成SerialPort类的实例及操作 -
祖炎硫糖: 我也写过SerialPort接收com端口数据的程序.winform.我接收数据是通过通讯协议.不知是否对你有用. try { //打开串口写数据 sp = new SerialPort(); sp.PortName = com1 sp.BaudRate = 2400; sp.Open(); sp.ReadTimeout = 1000; sp....

蒲江县18263809458: 如何用C#中的SerialPort写一个通信串口调试程序 -
祖炎硫糖: 那你就拖控件SerialPort,然后看看这个SerialPort有哪些方法和属性. 一般步骤就是给SerialPort定义端口名字,波特率,然后open,然后就可以发送你的要发送的东西了,SerialPort.Write,SerialPort.Read之类的方法很多,你可以看看说明并且都去试一试,操作完之后Close就行了. 串口通讯的难点就是根据协议收发报文数据时的丢帧问题.

蒲江县18263809458: C# 用serialport 实时接收数据详解步骤
祖炎硫糖: system.io.port下有个SerialPort类,用这个类去打开串口,然后新建一个线程,不停接受即可.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网