串口接收数据怎样存储在数组中呢?

如题所述

在编程中,使用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逐字节读取数据。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜