在编程中,使用Dim Buffer as Variant声明了一个变量Buffer,其类型不确定,可以是Long、Integer、Double、Object、String以及数组等,由编译器自行判断与转换。
Dim Buffer(100) as Variant声明了一个数组Buffer,该数组有100个成员,每个成员的数据类型未指定,同样由编译器自行判断与转换。
Dim receive(100) as Byte声明了一个数组receive,含有100个成员,每个成员都是Byte型。
Dim Buffer() as Byte声明了一个数组Buffer,成员数量未知,每个成员都是Byte型。在确定数组成员数量前,无法通过Buffer(xx)方式访问Buffer中的成员。
Dim Buffer() as Byte用于接受数据,Buffer = Mscomm.Input将Mscomm接收缓存中的所有数据读取并保存到Buffer数组中,Buffer数组的大小取决于Mscomm接收缓存的实际数据量。
使用Dim Receive(100) as Byte接收数据的方式不可行,因为Mscomm接收缓存的实际数据量不确定,无法直接接收100个字节的数据。
正确的做法是使用Dim Receive(100) as Byte,一次从Mscomm的接收缓存中读取一个字节的数据。由于赋值语句运行时间远快于串口传输速率,必须确保Mscomm接收缓存中有100个字节以上的数据,通过循环使用Mscomm.Input逐个读取100个字节的数据,否则可能会出错。
如果将RThreshold设定为100,即每接收100个字节的数据触发一次OnComm事件,可以通过Receive(i) = Mscomm.Input逐字节读取数据。
温馨提示:答案为网友推荐,仅供参考