.pEnd1,指示要比较的字符,nLen1是其长度。
m= m_nRecv-nLen1, 字符不需要比较的个数
第一个for死循环中,的,最里面的一个if,中,n=0;不是必须的。
break;会使里层循重新开始,n自然归位。下面的if中,是要求n与nLen1的相等性判断。上个循不的提前中止,定使其下的判断不成立。
m_nNext,在接收到的字符缓冲中,指缓冲区中,可用位置的第一个位置。
m_nRecv为什么要被重新赋值。意味着只承认到要比较的字符结束处为止的字符串。
所读到的后面的字符被舍弃。
NextBuffer()主要用于处理,m_nRecv索引的接收缓冲。
就是清空m_bufRecv[]接收队列中缓冲的所有数据。
可认为是个清空数组函数。
RecvBuffer()本质上是一个简单的模式匹配算法。
第一次循环总是试图匹配空的字串,因为,数据还没从串口读到。
其返回值1总是代表匹配成功。
同时,会适时检查一个计数变量是否会超过150次,此变量为dwTime,但没有指示任何有关时间的信息。
它会调用一个子函数,Recv(),用于从设备端口中读取指定长度的数据。
该RecvBuffer()非常依赖其它函数对相关共享变量的设置。SendBuffer(), NextBuffer(),m_bufRecv[m_bufRecv], m_nRecv, m_nNext等。
大量相关的函数,离散的变量,使相关函数理解、维护起来非常困难。这根本不是C++程序,而是设计惨不忍睹的C面条。