串口一次最大能接收多少字节

问题描述

下位机一次发送了5000个字节。我通过串口接收一次只能接受4096个字节。剩下的字节必须在发送一次命令,让下位机返回数据,此时返回的数据包括2个部分,第一部分为刚才没收完的数据,第2部分为这次命令该返回的数据。感觉就是缓冲区只有4096.设置成更大缓冲区不管用。请教一下,在不改变下位机的情况下,有可能改变上位机,让上位机可以一次接收完5000个数据吗

解决方案

解决方案二:
串口既然是串行的,那么每次只能发送一个二进制数据位。至于你说的多少字节,这个是你上位机缓冲区的大小,这个是你自己控制的。你内存大,理论上搞一个100GB的也没事。
解决方案三:
缓冲区决定一次接收数据大小,而缓冲区是你自己设置的
解决方案四:
就算是你设置所谓缓冲区为1个字节,也是可以接受完5000个字节的消息内容的。处理DataReceived时,要处理不断处理锁触发的接收事件。难道你以为触发一次事件、执行一次Read语句就算是收完了一条消息?
解决方案五:
一看你纠结所谓缓冲区应该多“大”,就能看出问题来了。这个数值设置1个太小,设置5000算不算也太小?设置为1M是不是也小?万一所谓下位机发来的消息敲好是1M零1个字节呢?这问题出自错误的逻辑,没有什么答案。
解决方案六:
下位机发送时会自动分包的,最大就是4096,大于4096时就需要你在上位机自己组包,每个包头加一个编号

时间: 2025-01-21 05:59:34

串口一次最大能接收多少字节的相关文章

new-问一个关于C#将接收的字节数据赋值给变量的问题

问题描述 问一个关于C#将接收的字节数据赋值给变量的问题 前面接收数据步骤是这样的 int lenth = serialPort1.BytesToRead; Byte[] BYTE = new Byte[lenth]; serialPort1.Read(BYTE, 0, lenth); 这里定义5个具体变量:byte A,B,C,D,E 现在要求是接收5次数据,第一次把收到的byte赋值给A,第二次赋值给B...第五次赋值给E. 以此类推.第六次循环在次赋值给A,B,C,D,E以此类推 以前习惯

uart 串口通信-单片机uart 数据接收不完整

问题描述 单片机uart 数据接收不完整 我通过串口调试工具,向芯片发送数据,但是每次都是接收到数据中的一个或者两个,接收不完整. void serial () interrupt 4 { u8 inuartnum = 0; u8 aa ; while (1 == RI_0) { RI_0 = 0: aa = SBUF0; } ReadFlag = 1; } 或者: void serial () interrupt 4 { u8 inuartnum = 0; u8 UARTBuf[36]=0;

串口操作的數据接收問題

问题描述 我用C#做的串口通信,在循環測試的時候,接收有問題.例如:發送100次字符串"nihao",接受端兩次就把字符串接收完畢(數量和字符串都是正確的),正常情況是100次接收完畢啊.我的接受字符串是寫在serialPort1_DataReceived事件裏面.try{byte[]buffrec=newbyte[serialPort1.BytesToRead];serialPort1.Read(buffrec,0,buffrec.Length);Thread.Sleep(100);

ReceiveAsync 接收指定字节数

问题描述 在服务端固定发送400k字节,在客户端接收时用ReceiveAsync,有没什么办法在接收完400k字节后再触发completeArgs.Completed? 解决方案 解决方案二:只能自己封装,或者用第三方的库

多线程,多接收模式串口类LsComm

描述:一个串口通讯类 应用平台:Windows 版本: v1.0 主要功能:设计了一个简洁易用的多线程串行通讯接口,可以切换查询和自动接收模式,进行对串口数据收发的类 接触VC,很不习惯mscomm等Active控件老让人去注册的方式,所以参照Delphi中的SpComm设计了一个类CComPort,对PJ Naughter 的CSerialPort进行了2次封装,主要目的是简化串口的使用.使其用简单的代码就可以完成串口通讯的过程.做了一个Demo程序演示了CComPort的使用,附图如下: 下

如何关闭Form2,保留Form1, 以及串口接收数据的判断

问题描述 本人菜鸟.自学C#.现在遇到两个问题,第一个问题.在form1中,有个按钮,点击之后弹出已经做好的固定的界面form2.比如说当form2打开5秒之后,需要关掉Form2.不知道该如何关闭,因为总是提示使用了未引用的对象.privatevoidbtnStartSend_Click(objectsender,EventArgse)//按下按钮{FormForm2=newForm2();//新窗口Form2.ShowDialog();//显示新窗口,可以正常显示}private5s时间到{

byte 接收数据 断点-控制器给C#上位机窗口程序发送数据的字节接收问题

问题描述 控制器给C#上位机窗口程序发送数据的字节接收问题 现在的问题是:设置断点后,发现接收的字节长度不稳定,最少是4个,最多会达到上千个. 代码原先是这么写的: int lenth = serialPort1.BytesToRead; if (lenth != 0) { Byte[] receiveByte = new Byte[length]; serialPort1.Read(receiveByte, 0, length) --------------------- ----接收的字节转

C#串口通信怎么同时接收多个数据呢?

问题描述 RT,上位机发送一个命令后,有多个下位机给上位机返回信息,我想把数据接收完后再集中进行处理,但串口似一次只能接收一条信息,而且由于下位机的个数是未知的,请问各位大神有什么办法能让串口等所有数据都进入缓冲区再进行读取的方法吗?拜谢了! 解决方案 解决方案二:建一个threadpool,用多个线程接收数据,交给线程池取调度.或者采用同步技术,用线程锁来试试解决方案三:主机上有多少个串口?你这是如何与下位机连接的?解决方案四:多个下位机?你得用网络了,不能再用RS232了--解决方案五:来1

LPC1768之串口UART0

*********************************************************************************************************/ #include "LPC17xx.h" /* LPC17xx外设寄存器 */ /*************************************************************************************************