送分100分:MSComm1.Output = SHuZu(i)为什么不能用非要用 MSComm1.Output = 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 属性。
代码如下
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 = send End Sub Private Sub Form_Load() MSComm1.PortOpen = True End Sub
------解决方案--------------------
------解决方案--------------------
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 = sj End Sub
------解决方案--------------------
http://download.****.net/source/1262066