Private Sub MSComm2_OnComm() Dim buffer As String Select Case MSComm2.CommEvent Case comEvCD Case comEvCTS Case comEvDSR Case comEvRing Case comEvReceiveMSComm2.InBufferCount = 1024 buffer = MSComm2.Input Text2.Text = buffer Case comEvSendEnd Select MSComm1.PortOpen = False MSComm2.PortOpen = False End Sub
Dim buffer As String
Select Case MSComm2.CommEvent
Case comEvCD
Case comEvCTS
Case comEvDSR
Case comEvRing
Case comEvReceiveMSComm2.InBufferCount = 1024
buffer = MSComm2.Input
Text2.Text = buffer
Case comEvSendEnd Select
MSComm1.PortOpen = False
MSComm2.PortOpen = False
End Sub
这个方法不行的
在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。
当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。
例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件
MSComm2.CommPort = 2
MSComm2.Settings = "9600,n,8,1"
MSComm2.PortOpen = True
MSComm2.RThreshold = 1
~~~~~~~~~~~~~~~~~~~~~~~我写了这个语句的!
实际上我建议使用OnComm来接收数据,必须自己设置一个缓冲区,把每次受到的数据追加到缓冲区里,直到受到一段完整的数据(对于你的程序,可能使一个自定义的桢)在对其处理
正如gcj123所说的它控制的是缓冲区收到信号后触发OnComm事件发生的频率,你设为1是8位一收
还有初始化时InBufferSize也要设一下
你的意思是不是说当RThreshold=1是,就可以接受8个字节,当RThreshold=2
就可以接受16个字节!---
我把RThreshold给改大了,就可以传比较多的数据,可以也不能全不传完!我的
inbuffersize是有的默认值1024!
其中有什么原因吗》?
1。怎么把接收到的东西追加到一起,不是一起发过了的吗?
2》自己的帧应该这样定义!最好有例子!
谢谢?