serialPort1.Read(buf, 0, bytecount); 后发现缓存里的是两条数据或者一条半的数据。。。
结束符号是什么?能否提供一下代码?十分感谢!
追答就是要用个 换行,分号等特殊符号来作为命令的结束。
至少我做串口通讯都要加上这个。
定义数组bb,并将其赋值,然后是下面的代码:
int len = bb.Length;
serialPort1.Write(bb, 0, len);//向串口写入数据
//本次发送结束
如何写发送结束语句呢?
通讯协议是这样的:上位机发送数据—>下位机接收,回复确认应答—>上位机收到确认应答后再发送数据。。直到上位机发送结束命令,下位机接收,回复确认应答->上位机收到确认应答后结束通讯。
c#串口通讯问题 可以的话Q聊 280464827,请备注c#,谢谢!
这是通讯协议吗? 你这是通讯过程
本回答被提问者采纳c# 串口通讯serialPort1 怎样判断一条完整的数据发送完。
是不是延时读取时间不合理 ,或者读取前先清理缓存
C# serialport
出现收不完整的根本原因是有串口通信特性决定的:由于是串行通信,GPS数据是一个字节接一个字节,以给定的波特率送人计算机的串口。这就有可能GPS还没有将数据发送完,你就读取串口数据,造成接收不完整。解决问题的关键:怎么判断GPS已经数据发送完毕?一条完整的GPS数据帧是以<CR><LF> (回车 换行 )...
如何用C#的serialport类接收单片机发送的数据
private string Read(){ \/\/获得返回数据 string Return = "";string ShowReturn = ""; \/\/显示的命令 try { Thread.Sleep(100);int len = this.serialPort1.BytesToRead;if (len > 0){ byte[] data = new byte[len];if (len > 0){ for (int i = 0; i < len; i++)data[i]...
c#串口接收到的数据怎么判断是完整的,然后提取出数据中我要用的数据...
正则表达式匹配 string s 表达式"^oxaaoxaa.*?oxaa$"(^是开头 $是结尾 中间表示任意字符)如果匹配到了就说明数据完整,如果有换行注意改写
c# 怎么判断串口中的数据读取完毕
用一个或多个特殊的位来标记,比如0000,或者在一个消息报文的开始定义好要接收的长度,也可以两者结合
C# winform 用serialPort控件如何判断COM1连接的设备是否存在或是否被其...
通常称为Echo)。在计算机上,程序启动后,先发送一个字符,如果程序又顺利收到了这个字符,那就说明设备以及连接上。2)判断设备是否被占用 如果设备上只有一个串口且已经与你计算机COM1口连接。这时你只要检测 SerialPort.IsOpen属性,通过判断COM1是否已经被其他程序打开来判断设备是否被他程序占用;
C# 串口通信,serialport里的数据只读了一部分。
一般来说判断从下位机接收数据的方式要么是根据超时判断数据接收完结,要么是根据接收到头尾标记。所以程序里通常你得循环的 read,然后然线程sleep个几毫秒,直到读不出数据或者读到数据包尾了再把之前读到的所有字节送出。你要是想偷懒的话干脆打开串口后等一个较长的时间再接收。那基本上就不会是你...
C#中的串口通信SerialPort
C#中的串口通讯使用的是System.IO.Ports.SerialPort类。通过简单操作步骤,很容易实现串口的信息收发程序,从特定串口中接收数据并发送数据。串口的使用通常与线程结合,在子线程中进行耗时和重复工作,主线程或界面则负责数据展示处理。打开和关闭串口状态需在子线程处理过程中特别注意,以防出现无法捕获的...
C#中serialport控件做的串口发送和接收Form程序不对
ReadLine是阻塞读,如果发出去的数据已经过时,没有读到数据,当然卡死。界面可以按照一些串口软件来编写,例如格西烽火、串口调试助手等都不错。
C# serialport内datareceived事件接收串口数据,详细步骤。
\/\/Thread.sleep(1000);\/\/处理事件这块可以加上延时确保不定数的数据可以全部收到缓冲后,才去读缓冲内容--单位:毫秒 byte[] data = new byte[serialPort1.BytesToRead]; \/\/定义缓冲区,因为串口事件触发时有可能收到不止一个字节 serialPort1.Read(data, 0, data.Length);\/\/读取指定长度 for...