在串口通信中,给设备发送命令,DataReceive为什么要分两次来接收数据

问题描述

在串口通信中,给设备发送命令不管我Send几次,DataReceive为什么要分两次来接收数据,而且每次接收数据的长度不一样,为什么?求大神指点,谢谢了privatevoidserialPort_DataReceived(objectsender,SerialDataReceivedEventArgse){try{byte[]buffer=newbyte[serialPort.BytesToRead];serialPort.Read(buffer,0,buffer.Length);stringresult=System.Text.Encoding.ASCII.GetString(buffer);MessageBox.Show(result);//测试}catch(Exceptionex){MessageBox.Show(ex.Message);}}privatevoidtoolStripButtonGet_Click(objectsender,EventArgse){Send(s1);Send(r1);//Send(s2);//Send(r2);//Send(s3);//Send(r3);}publicvoidSend(stringdata){intn=0;MatchCollectionmc=Regex.Matches(data,@"(?i)[da-f]{2}");List<byte>buf=newList<byte>();//填充到这个临时列表中foreach(Matchminmc){buf.Add(byte.Parse(m.Value,System.Globalization.NumberStyles.HexNumber));}serialPort.Write(buf.ToArray(),0,buf.Count);n=buf.Count;}

解决方案

解决方案二:
有个属性是设置接收到多少字节才引发回调事件的,设置一下就好了

时间: 2025-01-25 16:13:28

在串口通信中,给设备发送命令,DataReceive为什么要分两次来接收数据的相关文章

数据帧-c#串口通信中上位机测试数据组帧

问题描述 c#串口通信中上位机测试数据组帧 测试 发送数据的参数,设置温度频率时延输出功率,,这些数据组成一帧并且发送,然后接收,,, 解决方案 参考:http://www.360doc.com/content/13/0829/09/7531335_310657574.shtml 解决方案二: 可以在串口使用modbus协议通讯. 或者根据modbus的思想自己弄一套协议. modbus有应答和校验机制,能够保证串口通讯的可靠性. 解决方案三: 上位机-串口通信-C#

ios-iOS蓝牙4.0中中央如何发送命令给周边来实现连接

问题描述 iOS蓝牙4.0中中央如何发送命令给周边来实现连接 我将手机端设为中心,心电仪为周边设备,现在厂家和我说如果要连接心电仪并接受数据,需要做以下几步: 1.搜索蓝牙,启动Notify 2.发送4F FF FF FF 02 FF FF B2,返回设备类型及id 3.再发送4F 02 10 00 03 03 83 FC 22,返回测量模式 4.再发送4F 02 10 00 03 03 83 FE 20,获取数据,解析心率和心电波形 走完这4步才能接受到数据,我想问下如何发送这些命令给心电呢?

java-求大神帮忙,在Java串口通信中设置DTR_CONTROL_DISABLE如何实现?

问题描述 求大神帮忙,在Java串口通信中设置DTR_CONTROL_DISABLE如何实现? 写了简单一个串口调试助手的程序,用来与STM32单片机通信,但是 DCB.fDtrControl = DTR_CONTROL_ENABLE的参数不对,使用下载的调试助手可以实现通信其DCB.fDtrControl值为DTR_CONTROL_DISABLE,自己写的却是DTR_CONTROL_ENABLE?是这个原因影响通讯了吗?如果是要如何改进? 解决方案 http://gqdy365.iteye.c

串口通信-串口调试助手可以发送十六进制和字符串,如果发送的命令是ascii怎么办呢,

问题描述 串口调试助手可以发送十六进制和字符串,如果发送的命令是ascii怎么办呢, 字符串和ascii是不一样的把,怎么可以让单片机和一个支持串口通信的设备通信,哪个设备只能接收ascii,我用单片机发送给他的时候,应该是什么格式呢,ascii码一位即可,命令是23...9就这样的,单个数字 解决方案 ascii是字符编码,字符编码构成的序列称之为字符串.你作为上位机,把字符串分为一个一个字符逐个发给它就可以了. 解决方案二: int i = 2;char a = (char)('0' + i

串口通信-嵌入式数据采集设备故障诊断与处理

问题描述 嵌入式数据采集设备故障诊断与处理 嵌入式的开发,一个串口下接有多个传感器,读取数据时,设备时候故障,已经有故障的应该如何处理. #define TICKSPAN(now,last) (now if (pDevice->m_bStatusOK==FALSE)//有故障 { DWORD tickNow = GetTickCount(); DWORD tickSpan = TICKSPAN(tickNow, pDevice->m_tickFailure if (tickSpan>=p

串口通信 数据丢失问题

问题描述 基于MODBUS协议写的串口通信程序,在vc6.0里用API写的,在接收数据时,记录接受的是19字节,但是用TRACE调试时,只显示出3个字节,但是我用串口调试助手却能显示19位.程序主要代码如下:hcom=CreateFile("COM3",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL):///打开串口DCBdcb;GetCommState(hcom,&dcb);dcb.BaudRate=9600;dc

51单片机串口通信-51单片机中的串口通信发送10(16进制)以上显示不正确

问题描述 51单片机中的串口通信发送10(16进制)以上显示不正确 串口通信中,向单片机发送数据控制LED灯亮实验中 发01,02.04.08 依次是 第1 2 3 4 个灯亮 而发送 10 就成第5 6 个一起亮了,然后发20 .40 是第7 和 第 8 个: 发 80 就全灭了 , 这是啥情况啊. #include unsigned char a,flag; void init(); void main() { init(); while(1) { if(flag == 1) { ES =

C#中的串口通信

关于串行接口 串行接口(Serial port)又称"串口",主要用于串行式逐位数据传输.常见的有一般电脑应用的RS-232(使用 25 针或 9 针连接器)和工业电脑应用的半双工RS-485与全双工RS-422. 串行接口按电气标准及协议来分,包括RS-232-C.RS-422.RS485.USB等. RS-232-C.RS-422与RS-485标准只对接口的电气特性做出规定,不涉及接插件.电缆或协议.USB是近几年发展起来的新型接口标准,主要应用于高速数据传输领域. RS-232-

C# 串口通信 线程关闭问题

问题描述 串口通信大致可分为发送线程.接收线程.数据解析线程,发送和接收线程暂不考虑,以下是我写的一个数据解析线程的程序:DataDealThread=newThread(DataDealMethod);//绑定方法DataDealThread.Start();//线程开始///<summary>///解析接收到的数据///</summary>privatevoidDataDealMethod(){while(true){stringStrRcv=null;try{if(RcvQu