C#串口SerialPort总是收到数据

有时候我只发了一次或者几次后我的串口能一直收到相同的数据,几率还挺大的,读取serialPort.BytesToRead是一直有的,而且是在serialPort.Read完serialPort.BytesToRead清零了之后还是一直能读到的,实际没有发数据的,如果这时候我手动发数据的话这种现象就会停止,但是用串口调试助手也没出现这种情况,请问是为什么怎么解决?谢谢!

1个回答

看看你的通讯方式设置对不对,停止位、校验位、波特率等等。你的datareceived事件有没有触发

qq_26534747
瞪待大婶粗线 都是对的。datareceived事件那是收到数据后的事了是吧,我是BytesToRead一直会收到数据
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# serialport串口接收到的数据如何处理(称重软件)
[img=https://img-bbs.csdn.net/upload/201505/26/1432624750_932597.png][/img]rnrn这些数据如何处理得到我想要的数据重量,假如我要取10个字节,开始为02 结束为31 如何处理这些数据,数据源源不断的来,我应该怎么弄?rn本人有点笨,最好用代码说话!rnrnrn本人代码:rnrnprivate void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn rn int count = serialPort1.BytesToRead;rn //string Text = serialPort1.ReadExisting();rn //int count = serialPort1.ReadBufferSize;rn byte[] data = new byte[count];rn rn int bytesRed= serialPort1.Read(data, 0, count);rn rn rn foreach (byte item in data)rn rn if (radioButton1.Checked)rn rnrn s += Convert.ToChar(item);rnrn rn elsern rn s += ByteToHexString(item);rn rn rn rn rn rn if(this.InvokeRequired)rn rn rn this.Invoke(new MethodInvoker(delegatethis.textBox1.Text=s;));rn rn elsern rn this.textBox1.Text=s+" ";rn rnrn text = DecimalDex(data);rnrn
C#使用serialPort实时显示收到的数据
在C#中使用serialPort控件、消息处理和DataReceived事件实时显示数据。
C#串口收到的数据的处理
大家好,我现在做到了串口数据的接收:程序如下:,但我想要的是把收到的数据按字节的方式存起来,具体说来是按前两位字节不同的方式存起来(因为前2位是地址,我只想要这些不同的地址),不知道这个怎么做?rnrn #region // 按键控制串口的打开与关闭rn private void toolStripButton1_Click(object sender, EventArgs e)rn rn if (btnCom.Tag.ToString() == "0")rn rn ComDevice.BaudRate = 38400;rn tryrn rn ComDevice.Open();//打开串口rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);rn return;rn rn btnCom.Text = "关闭串口";//rn btnCom.Tag = "1";rn splitContainer1.Panel1.BackColor = Color.LightSkyBlue;//如果串口打开成功,则换背景颜色。rn rn rn elsern rn tryrn rn ComDevice.Close();rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);rn rn btnCom.Text = "打开串口";rn btnCom.Tag = "0";rn //splitContainer1.Panel1.BackColor = Color.LightGray;rn rn rn #region //读取串口数据rnrn private void ComDevice_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn if (AllowReceive == true)rn rn byte[] ReDatas = new byte[ComDevice.BytesToRead];//返回命令包rn ComDevice.Read(ReDatas, 0, ReDatas.Length);//读取数据rnrn StringBuilder sb = new StringBuilder();rn for (int i = 0; i < ReDatas.Length; i++)rn rn sb.AppendFormat("0:x2" + " ", ReDatas[i]);rn rn UpdateRecevie(sb.ToString().ToUpper());rnrn // UpdateReceiveCount(ReDatas.Length);rn rn elsern rn ComDevice.DiscardInBuffer();rn rn#region UI更新rn public delegate void UpdateString(object NewData);rn public void UpdateRecevie(object NewData)rn rn if (this.InvokeRequired)//等待异步rn rn UpdateString _myInvoke = new UpdateString(UpdateRecevie);rn this.Invoke(_myInvoke, new object[] NewData );rn rn elsern rn [color=#FF0000]txtReceive.AppendText(NewData.ToString());rn txtReceive.SelectionStart = txtReceive.Text.Length - 1;rn txtReceive.ScrollToCaret();[/color]rn rn
C# SerialPort 串口通信编程
一个串口调试程序,主要功能: a. 串口参数可以自动选择,并可以保存配置下次自动匹配(.ini文件存储) b.可以手动开关串口 c.可以选择发送数据的格式 d.可以循环发送数据 e.发送数据可以选择是单字符串、多字符串发送,甚至可以导入发送的命令 f.接收数据 ......
C# SerialPort 串口 短信猫
最近在做用短信猫发短信的程序。我把短信猫接在串口com1上,使用超级终端测试,可以使用AT指令发短信。但是我使用SerialPort编写程序时,似乎无法发送数据。相关代码如下:rn[code=C#]textBox2.AppendText("\r\n开始发送数据......\r\n");rn tryrn rn serialPort1.Write(textBox1.Text.Trim());rn textBox2.AppendText("发送数据大小:" + serialPort1.BytesToWrite.ToString() + "\r\n");rn rn catch (Exception ex)rn rn textBox2.AppendText("发送数据失败:" + ex.GetType().ToString() + "===" + ex.Message + "\r\n");rn [/code]rnrn其中,serialPort1.BytesToWrite的值为0.请高手帮忙解决。不胜感激。
c#串口读取(serialport)
用serialport实现的串口通讯源代码,其中有串口设置,数据设置读取,还包括增删改部分,其中有批量上传,涉及的知识面较广
C# SerialPort 串口读写
实现串口事件DataReceived接收数据 后台开启一个监控线程来监控是否数据接收完成 定义3个事件,用来通知数据接收完成、数据发送完成、每次接收数据。
serialPort C# 串口
本软件是基于GSM的上位机,有自动发送和收到发送的功能,可以实现对串口实现有效的控制
c# serialPort 串口问题
通过串口com1,发送音乐文件到另外一个com2 要求:com2串口可以播放原始音乐。rn这个过程应该怎么实现,用的组件是serialPort ,还有汉子乱码问题,为啥发送记事本文件可以讲文本信息内容在richtextbox上,rn而音乐文件只显示乱码?
c# serialPort串口读取
在网上搜的代码,我读取串口数据,我用模拟的传感器,传出数据为960,读取的是00096.0,怎么样才能读取为960.rnrn代码如下:rnusing System; rnusing System.Collections.Generic; rnusing System.ComponentModel; rnusing System.Data; rnusing System.Drawing; rnusing System.Text; rnusing System.Windows.Forms; rnusing System.IO.Ports; rnusing System.Threading; rnrnnamespace WMS.SD.DeliveryGoods rn rnpublic partial class frmUpLoad : Form rn rnprivate delegate void HandleInterfaceUpdateDelegate(string aString); rnHandleInterfaceUpdateDelegate interfaceUpdateHandle; rnrnstatic string strReceive; // 接收到数据的缓冲区 rnrnpublic frmUpLoad() rn rnInitializeComponent(); rn rnrnprivate void frmUpLoad_Load(object sender, EventArgs e) rn rn//是否允许跨线程访问 rn// CheckForIllegalCrossThreadCalls = false; rnrninterfaceUpdateHandle = new HandleInterfaceUpdateDelegate(ShowText); rnrntry rn rnif (!sp.IsOpen) rn rnsp.Open();//打开串口方法 rn rnrnbtnGetWeight.Enabled = false; rnrn//抛出异常 rncatch (Exception ex) rn rnMessageBox.Show(ex.Message.ToString()); rn rn rnrnrnprivate void ShowText(string aString) rn rn//根据通信数据规格显示数据 rnthis.lblData.Text = aString.Substring(1, 5) + "." + aString.Substring(5, 1); rnrn rnrnprivate void btnGetWeight_Click(object sender, EventArgs e) rn rntry rn rnbtnGetWeight.Enabled = false; rnrnif (!sp.IsOpen) rn rnThread.Sleep(5000); rnsp.Open();//打开串口方法 rn rnrn//抛出异常 rncatch (Exception ex) rn rnMessageBox.Show(ex.Message.ToString()); rn rnrn rnrnprivate void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) rn rntry rn rn//取得第一个字节 rnif (sp.IsOpen) rn rnbyte firstbyte = Convert.ToByte(sp.ReadByte()); rnrn//判断第一个字节是否是起始位:16进制的0x02 rnif (firstbyte == 0x02) rn rn//定义接收数据长度 rnint bytesRead = sp.ReadBufferSize; rn//数据接收字节数组 rnbyte[] bytesData = new byte[bytesRead]; rn//接收字节 rnbyte byteData; rnfor (int i = 0; i <= bytesRead - 1; i++) rn rntry rn rnif (sp.IsOpen) rn rnbyteData = Convert.ToByte(sp.ReadByte()); rn//判断数据结束字节 rnif (byteData == 0x03) rn rnbreak; rn rnbytesData[i] = byteData; rn rn rncatch (Exception ex) rn rn// MessageBox.Show( ex.Message + ex.GetType().FullName); rnrn rn rn//将字节数组转换成字符串 rnstrReceive = System.Text.Encoding.Default.GetString(bytesData); rnrn//this.lblData.Text = strReceive.Substring(1, 5) + "." + strReceive.Substring(5, 1); rnrn// Invoke(interfaceUpdateHandle, strczData); rnrnBeginInvoke(interfaceUpdateHandle, strReceive); rnrn rn rn rncatch (Exception ex) rn rn// MessageBox.Show(ex.Message + ex.GetType().FullName); rn rn rnrnprivate void btnexit_Click(object sender, EventArgs e) rn rnif (sp.IsOpen) rn rnsp.DiscardInBuffer(); rnsp.Close(); rn rnthis.Close(); rn rnrnprivate void btnreset_Click(object sender, EventArgs e) rn rntry rn rnif (sp.IsOpen) rn rnsp.DiscardInBuffer(); rnsp.Close(); rn rnrnthis.lblData.Text = ""; rnrnbtnGetWeight.Enabled = true; rn rncatch (Exception ex) rn rnMessageBox.Show(ex.Message); rn rn rnrnprivate void frmUpLoad_FormClosing(object sender, FormClosingEventArgs e) rn rnif (sp.IsOpen) rn rnsp.DiscardInBuffer(); rnsp.Close(); rn rn rn rn
C#中serialPort 接收多个串口数据
C# 中接收多个Com口的数据.只要求接收不发送.rnrn用serialPort来如何实现.还是要用多线程进行读取rnrn希望有这方面经验的高手们给点意见...拜谢
C#串口类SerialPort收不到数据解决办法
最近再做一个项目,串口通信,但是只能受到一次数据后面怎么也收不到,我想了好久?难道微软提供的系统函数有问题?测试好久,发现居然是对方发送数据过快导致收数据回调函数无响应,我推测内存回调时候发生异常或者卡死,因为对方连发后软件直接卡死无响应,后来测试时间放慢后就正常了,看了很多论坛帖子发现都不是回答很清楚或者不能解决问题。所以我从实际中给出具体方法: (1)让对方减慢发送数据速度   (2)如...
c# 串口 serialport 小程序
在串口接受特定格式的数据,将数据显示在屏幕上。 练手的小程序,跟arm通信采ad信号弄得
C# 串口类SerialPort的使用方法
序言:最近做了一个智能体育项目——跆拳道积分系统,硬件部分会向软件传入振动值等数据,链接方式为串口,所以用到SerialPort类。 值得注意的是:   DataReceived 方法,当串口缓冲区有数据时执行该方法。   ReceivedBytesThreshold属性决定了当串口读缓存中数据多少个时才触发DataReceived事件,默认为1。串口接...
C# SerialPort 串口小工具源码
C#串口控件SerialPort实现简单的串口调试助手 仅百行代码
C# 串口开发技术整理SerialPort
自己手动整理的C# 串口开发只是,结合微软官方技术文档,和网友博客整理的
串口数据监听的问题SerialPort
属性:rnsp = new SerialPort();rnsp.PortName = "COM1";rnsp.BaudRate = 9600;rnsp.Parity = Parity.None;rnsp.StopBits = StopBits.Two;rnsp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);rnsp.Open();rnrn获取:在DataReceived中rnbyte[] read = new byte[sp.BytesToRead];rnsp.Read(read, 0, read.Length);rnrn我不知道是不是我写的有什么问题,发来一组数据rn只触发了两次事件,输出一个5,还有一个4 rn1,为什么每次事件的接收数据长度只有1呢?rn2,为什么我只触发了两次事件呢?
C#自带的serialPort串口控件
//serialPort1.PortName = "COM4";                     serialPort1.PortName = ReadTenCom();//设置串口号,ReadTenCom()是读取串口号的方法,返回的是string类型                     serialPort1.ReceivedBytesThreshold = 1;//设置能引发
串口收到数据乱码
我这里vc做了个串口通信的程序,rn可有些问题,通信是成功了,rn收到的数据就有问题了,有时候收到的是正确的数据,可有时候收到的会乱码,rn为什么咧,原因在哪,能否解惑迷津...
C# serialport 串口 接收数据不全
使用serialport 向设备发送请求并获得响应数据 rn[code=csharp]rnSerialPort sp = new SerialPort(); rnsp.PortName = "COM2";rn sp.BaudRate = 2400;rn sp.StopBits = StopBits.One;rnsp.Parity = Parity.Even;rnsp.DataBits = 8;rnsp.WriteTimeout = 1000;rnrn// 使用的是Modbus协议通信 1 4 是固定的 0 0 是高位 低位 歧视地址 0 2 是高位 低位 请求数量 113 203 是校验码rnbyte[] request = 1, 4, 0, 0, 0, 2, 113, 203 ; rnsp.Open();rnsp.Write(request, 0, request.Length);rn System.Threading.Thread.Sleep(1000);rn byte[] buffer = new byte[sp.BytesToRead];rnint len = sp.Read(buffer, 0, sp.BytesToRead);rnrn// 使用串口调试助手 接收到的数据 是正确的 01 04 04 00 4F 00 4E 4A 67 01 04 分别对应 1 4 04是请求数量*2 转换成16进制 00 4F 00 4E 是请求数量返回的具体值 4A 67 返回的校验码rn[/code]rnrn我用sp.Read(buffer, 0, sp.BytesToRead) 读取到的数据 不正确 不是9位 长度 并且返回的 好多数据 都是63 转换16进制是3F 错误在哪里
c# SerialPort 串口接收数据处理
在c#中,想将串口做成一个接口类,封装起来,但是如何将串口接受到的数据进行处理之后的结果返回,提供给他人使用,类似以rnpublic bool fun1()rnrn bool a=fales;rn return a ;rnrn在串口接收事件中如何做到这种。
串口收到的数据越来越少
我的程序刚开始运行正常,后来串口收到的数据越来越少,请教一个各位有经验的高手这是什么原因?
serialport收到重复数据
用serialport读取短信猫短信,当往短信猫发送短信频率频繁的时候会出现重复数据rnrn每条短信发送间隔超过10秒左右没有问题,当一条连着一条发 发送7、8条就会有几条短信重复出现rnrn而代码中每次读取短信后都已经进行删除为什么还会读取到?rnrnDiscardOutBuffer,DiscardInBuffer都用到了还是不行rn
c#想把serialport接收到的数据做成仿真曲线
想把serialport控件触发的DataReceived事件所接受的数据做成动态的仿真曲线rnrn可是我的软件内部没有chart控件 chart需要下载么rnrn有没有什么思路 求各位大神
C#读串口数据为什么总是错误?
程序和一个串口设备通讯,发出指令,然后读取设备响应数据,rn但是读取的值总是不对。用SerialPortMonitor和串口助手检查过,不是设备出错,可以肯定是C#读取出错。但是不知道什么原因,波特率,数据位,停止位,校验位也都设置的没有错。rnrn例子1:rn发送数据:01 01 00 00 00 04 3D C9rn实际接收:[color=#800080]01 3F 04 41 3F[/color]rn正确数据:[color=#008080]01 81 04 41 93[/color]rnrn例子2:rn发送数据:01 11 C0 2Crn实际接收:[color=#800080]01 11 03 10 02 00 3F 28[/color]rn正确数据:[color=#008080]01 11 03 10 02 00 FD 28[/color]rnrn帮我看看吧:rn[code=C#]rnbyte[] data = new byte[] 0x01, 0x01, 0x00, 0x00, 0x00, 0x04, 0x3D, 0xC9 ;rnSerialPort com = new SerialPort("COM1");rncom.BaudRate = 38400;rncom.DataBits = 8;rncom.StopBits = StopBits.One;rncom.Parity = Parity.Even;rncom.Open();rncom.Write(data, 0, data.Length);rnSystem.Threading.Thread.Sleep(100);rnrnstring msg = "";rnstring s = com.ReadExisting();rncom.Close();rnforeach (char c in s)rnrn int n = (int)c;rn msg += n.ToString("X2") + " ";rnrnMessageBox.Show(msg);rn[/code]
串口收到的数据转换成ascii
将串口收到的数据进行ascii码转换
串口接收到的数据不正确
我用串口调试助手发00 01 02 03,但接收到的是A0 B0 A4 C0等一些乱码,请教各位大侠!!rnrn我的程序是C写的,用keil编译rnrn#include rn#define uint unsigned intrn#define uchar unsigned charrnrnuint i=0;rnuchar data astring[10];rnrnvoid main()rnrn TMOD=0x20; //初始化串口rn TL1=0xfd;rn TH1=0xfd;rn SCON=0xd8;rn PCON=0x80 ;rn TR1=1;rnrn for(i=0;i<10;i++) //接收数据rn rn while(RI==0);rn RI=0; rn astring[i]=SBUF; rn rnrn for(i=0;i<10;i++) //发送数据rn rn SBUF=astring[i];rn while(TI==0);rn TI=0;rn rn TR1=0;rnrnrnrn
串口收到的数据,如何还原?
新手在做一个串口发送接收的程序rnrn问题是这样的:从串口接收到一串数据,提取到里面内容后放在一个unsigned char aa = 0xC8,0xCB,0xBC,0xE4,0xCF,0xC9,0xBE,0xB3,0xB0,0xD7,0xD4,0xC6,0xC9,0xBD;rn数组里,现在想把这些数据在一个编辑框里显示出来,不知道该怎么处理rnrn直接用:GetDlgItem(IDC_AddEdit)->SetWindowText((LPTSTR)aa); (这个方法得自:int length = GetDlgItem(IDC_AddEdit)->GetWindowText((LPTSTR)send, sizeof(send)/sizeof(TCHAR))*sizeof(TCHAR);)rnrn结果显示这样:人间仙境白云山烫烫烫烫烫l? 后面出现乱码,不知改怎样解决?rnrnrn另:这个数组里保存的数据有,英文字符,中文字符,或者混合!rnrn项目是使用多字节字符集的!rnrnrn
串口接收到的数据和发的比较总是少几个?
我串口发送的数据是:rn$DAT123456789123456789123456789abcde*01rn$DAT123456789123456789123456789abcde*01rn$DATABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF*4Drn$DATABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF*4Drnrn串口接收到的数据在TEXT2中显示如下:rn$DAT123456789123456789123456789abcde*01rn$DAT123456789123456789123456789abcde*01rn$DATABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF*4Drn$DATABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF*rnrn总是少几个,如果再多发几包,少的数据会更多一些,大家帮我看看是怎么回事,谢谢,我的串口设置如下:rnPrivate Sub Form_Load()rnMSComm1.CommPort = 1rnMSComm1.Settings = "4800,N,8,1"rnMSComm1.InputLen = 0rnMSComm1.InBufferSize = 1024rnMSComm1.OutBufferSize = 512rnMSComm1.PortOpen = TruernMSComm1.RThreshold = 40rnMSComm1.SThreshold = 1rnMSComm1.InBufferCount = 0rnMSComm1.OutBufferCount = 0rnEnd Subrnrn接收事件如下:rnPrivate Sub MSComm1_OnComm()rn'在CommEvwnt中接收数据rnSelect Case MSComm1.CommEventrnCase comEvReceivernDim b(0) As Variantrnb(0) = MSComm1.InputrnText2.Text = Text2.Text + b(0) & vbCrLf '回车换行rnrnCase comEvSendrnEnd SelectrnEnd Subrn
c# SerialPort串口通信数据处理问题。
我现在有一个需求,电脑与10个仪表做串口通信,其中有8块仪表需要发送召唤码(即召唤协议),仪表返回相应的数据值,rn每5秒发送一块,然后发送下一块表,但是有2块表不需要发送召唤协议,自己不停的发送给电脑数据值(仪表厂家可以改发送时间),现在的问题是怎么处理好这10块表的发送、接收、数据处理啊。有可能发送一块表的协议出去后,串口收到的数据恰好是那2块表之一的返回码,比如有5位,然后紧跟着再是我发送的那块相应的表的返回码。描述清楚了吗?rnrn是不是要用线程编程?能否给些简单的例子 wujing0211@21cn.comrnrn
serialport控件收数据总是不完整
要么就是休眠一两秒就几个包都合并了。有没有好的解决办法
网站发布之后,为什么收不到串口的数据呢?(IIS,c#,SerialPort)
在vs2005下运行时,串口一切正常。但只要放在IIS的虚拟目录下,通过虚拟目录浏览之后,串口就接收不到数据了?rn(1)在vs2005下,运行时一切正常;rn(2)将代码放在虚拟目录下,浏览default.aspx,串口收不到数据;rn(3)通过vs2005发布网站后,将编译的结果放在虚拟目录下,浏览default.aspx也收不到数据。rnrn有人知道是什么原因吗?rnrn期待回答!!
C#使用serialport串口发送和接收,接收不到返回数据
自己写的一个串口接收发送的小程序,向串口发送命令是应该有返回信息的rn可是写的程序运行没有任何返回信息,求解rnrnpublic partial class Form1 : Formrn rn SerialPort sp = new SerialPort();rn public Form1()rn rn InitializeComponent();rn sp.PortName = "COM4";rn sp.BaudRate = 115200;rn sp.DataBits = 8;rn sp.StopBits = StopBits.One;rn sp.Parity = Parity.None;rnrn sp.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);rnrn sp.Open();rn rnrn //数据接收使用的代理rn private delegate void myDelegate(string s);rnrnrn private void button1_Click(object sender, EventArgs e)rn rn string st1 = textBox1.Text;rn sp.WriteLine(st1);rn textBox1.Text = "";rn rnrn private void SetText(string s)rn rnrn listBox1.Items.Add(s);rnrn rnrnrn //串口数据到达时的事件rn private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)rn rn //关键 代理rn myDelegate md = new myDelegate(SetText);rnrn tryrn rn if (sp.IsOpen == true)rn rn byte[] readBuffer = new byte[sp.ReadBufferSize];rn sp.Read(readBuffer, 0, readBuffer.Length);rn string readstr = Encoding.UTF8.GetString(readBuffer);rnrn Invoke(md, readstr);rn rn rn catch (Exception err)rn rn throw err;rn rnrnrn rnrn
SerialPort类实现串口发送接受数据
简单的实现串口发送接受数据将Rs232的2,3口短接即可实现
.Net serialport类读取串口数据
我写了一段关于serialport类读取串口数据的小程序,但是有个问题很是不明白;例如下面代码:rn private void sport_DataReceived(object sender, SerialDataReceivedEventArgs e)rnrn bool mark = true;rn int i = 0;rn rn MessageBox.Show("进入sport_DataReceived事件!");rn if (sender.GetType() != typeof(System.IO.Ports.SerialPort))rn rn return;rn rn string strReceive = string.Empty;rn string strCollect = string.Empty;rnrn string strBack = string.Empty;rnrn byte[] buffer = new byte[2];rn System.IO.Ports.SerialPort comPort = (System.IO.Ports.SerialPort)sender;rnrn tryrn rn sport.ReceivedBytesThreshold = sport.ReadBufferSize;rnrn while (mark)rn rn sport.Read(buffer, 0, buffer.Length);rnrn if (buffer != null)rn rn for (i = 0; i <= 1; i++)rn rn strReceive = buffer[i].ToString("X2"); rn MessageBox.Show(strReceive);rn if (i == 1)rn rn mark = false;rn strReceive = strReceive + strBack;rn rn elsern rn strBack = strReceive;rn rn rn rn //else MessageBox.Show("没进去"); rn rn rn strReceive = strReceive.Replace("\0", string.Empty);rn strReceive = strReceive.Replace("\r\n", string.Empty);rn strReceive = strReceive.Replace("\r", string.Empty);rn strReceive = strReceive.Replace("\n", string.Empty);rnrn strCollect = Convert.ToString( Convert.ToDouble(Convert.ToInt32(strReceive, 16)) / 100 );rnrn MessageBox.Show("接收到的数据为2: " + strCollect);rn this.Invoke(updateText, strCollect);rnrn strCollect = string.Empty;rn strReceive = string.Empty;rn buffer = null;rn sport.DiscardInBuffer();rn MessageBox.Show("事件执行完成了!");rnrnrn当事件被激发时,运行正常;按常规来讲程序弹出 MessageBox.Show("事件执行完成了!");后,此事件应该结束,但是实际运行的时候,弹出("事件执行完成了!")后;程序由弹出MessageBox.Show("进入sport_DataReceived事件!");就是说事件被触发一次,但是却执行了两次内部代码!不知是何原因??rn
c#操作串口(serialPort)小例子
c#操作串口(serialPort)小例子;可以配合一些虚拟串口工具进行测试。例子代码有点混乱,讲究点看吧。可以参考这篇文章来看:http://hi.baidu.com/enilu/blog/item/c988d438470f7ef9b311c748.html
使用C# SerialPort控件写的串口调试工具
使用C# SerialPort控件写的串口调试工具,完整源码
c#串口serialport中DataReceived事件
串口在serialPort在用dataReceived事件rndataReceived事件是写在button2_Click中的,click事件应该在按下以后被触发,click中代码执行完应该结束了,为什么dataReceived事件会一直被触发
Serialport接收并保存串口的数据
通过Serialport空间自动接收串口通信的数据,有CRC16位数据校验,可设置串口名,波特率等,主要是接收到的数据以追加的形式保存到了text文档中,文档以当天日期命名。
C# 调用SerialPort类读取和发送串口数据
简单明了的利用SerialPort类读取和发送串口数据
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数