首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

送分100分:MSComm1.Output = SHuZu(i)为什么不能用非要用 MSComm1.Output = SHuZu才可能,该如何解决

2012-01-19 
送分100分:MSComm1.Output SHuZu(i)为什么不能用非要用 MSComm1.Output SHuZu才可能代码如下dim SHuZu

送分100分:MSComm1.Output = SHuZu(i)为什么不能用非要用 MSComm1.Output = SHuZu才可能
代码如下
  dim SHuZu(5) as byte,i as integer
  for i =0 to 4
  MSComm1.Output = SHuZu(i) '1、这种形式发送数据不成功
  next i
   
  MSComm1.Output = SHuZu '2、这种形式发送数据成功

问题如下:
1、MSComm1.Output = SHuZu(i)和 MSComm1.Output = SHuZu有什么区别
2、为什么MSComm1.Output = SHuZu发送成功,而MSComm1.Output = SHuZu(I)发送不成功
3、MSComm1.Output = SHuZu 这种对SHuZu这种调用方式感觉很特殊,可否给详细说明一下。

[解决办法]
Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。

VB code
Private Sub Command1_Click()    Dim sj(2) As Byte    Dim send As Variant    sj(0) = 1    sj(1) = 2    sj(2) = 51    send = sj '将字节流转换到Variant变体变量send    MSComm1.Output = sendEnd SubPrivate Sub Form_Load()    MSComm1.PortOpen = TrueEnd Sub
[解决办法]
探讨
Output 属性可以传输文本数据或二进制数据。用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。
VB codePrivateSub Command1_Click()Dim sj(2)AsByteDim sendAs Variant
sj(0)=1
sj(1)=2
sj(2)=51
send = sj'将字节流转换到Variant变体变量send MSComm1.Output= sendEnd SubPrivateSub

[解决办法]
Output要发送的是一个数组,而非一个数组元素。关于这方面的知识楼主可以看一些关于C中关于引用数组的知识。

如果楼主一时理解不了,可以不管,也可以不使用二进制方式通信,该用文本方式通信,那样发送的就是一个字符串,而非一个数组了。

[解决办法]
msdn上如下说:
1、Output 属性可以传输文本数据或二进制数据。
2、用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。
3、发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。

以上的意思是说:
1、mscomm1.output可以发送文本或字节数据。
2、如果你想以文本方式发送数据,你可以用mscomm1.output直接发送字符串或字符串变量。
mscomm1.output="aaa"

dim temp as string
temp = "aaa"
mscomm1.output = temp
3、如果你想以字节方式发送数据,你必须以数组名来发送,你不能以数据成员来发送。
那怕你只想发送一字节数据,也得:
dim temp(0) as byte
temp(0) = 122
mscomm1.output = temp


 



[解决办法]
实践是检验真理的标准,我在1楼故意定义了2个变量,1个是
Dim sj(2) As Byte,字节数组
另1个是
Dim send As Variant,变体变量
按理:
VB code
Private Sub Command1_Click()    Dim sj(2) As Byte    Dim send As Variant    sj(0) = 1    sj(1) = 2    sj(2) = 51    MSComm1.Output = sjEnd Sub
[解决办法]
http://download.csdn.net/source/1262066

热点排行