请教:
是这样的:
单片机向 PC 发送数据,数据的长度是不定的
数据的偶是以
@开始,
第 2个字符表示后面数据长度
# 结束
如:
@52344# //5 个字符
@9sdfgfhhf# //9 个字符
1:
PC 这边是不是每接收一个字符,就中断?
还是?2:
PC 这边每接收一个字符,是不是接收缓冲长度加 13:
读取缓冲区,就使缓冲区长度减去读取的长度,是吗?
比如:
len2=com1.Read(str,2);
那么缓冲区的长度,就减2,是不?4:
PC 这边的程序要怎么写啊?
比如:
我需要完整的接收 @52344#谢谢!
是这样的:
单片机向 PC 发送数据,数据的长度是不定的
数据的偶是以
@开始,
第 2个字符表示后面数据长度
# 结束
如:
@52344# //5 个字符
@9sdfgfhhf# //9 个字符
1:
PC 这边是不是每接收一个字符,就中断?
还是?2:
PC 这边每接收一个字符,是不是接收缓冲长度加 13:
读取缓冲区,就使缓冲区长度减去读取的长度,是吗?
比如:
len2=com1.Read(str,2);
那么缓冲区的长度,就减2,是不?4:
PC 这边的程序要怎么写啊?
比如:
我需要完整的接收 @52344#谢谢!
每次读取一定的字节放到缓冲另一buffer里面,
接收完了再判断buffer里的数据
程序自己网上搜下,很多的,同步的,异步的都有
大致就这么些吧,一年不做忘光了。
2、遇到 # 就结束。1、定义一个数组,作接收数据用:
unsigned char dataBuf[100];2、定义一个偏移量,表示接收的字节个数:
int nOffset = 0;3、大概流程:if( recData == '#' ) // 遇到结束符就去处理
{
doFunction();
return;
}if( recData == '@' )
nOffset = 0; // 不管什么时候,只要遇到 @ 就重新开始
dataBuf[nOffset++] = recData; // 保存数据后,偏移量加1