Private Sub Form_Load()
AdvAI1.DeviceNumber = 0
AdvAI1.ChannelScanStart = 12
AdvAI1.ChannelScanCoun= 2
‘Sets DataSampleRate
AdvAI1.DataSampleRate = 1000
‘Stts timer
Timer1.Interval = 15000
Timer1.Enabled = False
End Sub
Private Sub Timer1_Timer()
Text.Text = 1
‘Delay
Dim Savetime As Double
‘Text1 = "timeGetTime begin"
Savetime = timeGetTime ‘记下开始时的时间
While timeGetTime < Savetime + 4000 ‘循环等待,延时4s
DoEvents ‘转让控制权,以便让操作系统处理其它的事件。
Wend
‘Starts to acquire bulk data
Dim DigitalValue As Variant
Dim AnalogValue As Variant
AdvAI1.AcquireBulkDataToMemory 1000, DigitalValue, 0, False, True
AdvAI1.StopAcquireBulkData (0)
AdvAI1.ConvertDigitalValueToAnalog DigitalValue, AnalogValue, 1000
‘Delay
Savetime = timeGetTime ‘记下开始时的时间
While timeGetTime < Savetime + 4000 ‘循环等待,延时4s
DoEvents ‘转让控制权,以便让操作系统处理其它的事件。
Wend
Text.Text = 0
End Sub
Text.Text 与组态王连接。vb运行没有问题,Text.Text 0、1交替变化,但组态王对应的变量不变。请高手指点!
看看组态王给的例子吧
http://www.gongkong.com/webpage/solutions/200205/5-82B0-A3A587AFDC3E.htm
“可是如果vb不运行采集部分,只运行周期性的给数,没有什么问题,组态王的数据正确。可是只要加上采集部分,通讯就不好使了”
能否描述的更清楚些?感觉DDE连接时间溢出。
针对你的程序,改成如下:
Private Sub Timer1_Timer()
Text.Text = 1
debug.print "Text.Text=1 --- 1",timeGetTime
‘Delay
Dim Savetime As Double
‘Text1 = "timeGetTime begin"
Savetime = timeGetTime ‘记下开始时的时间
While timeGetTime < Savetime + 4000 ‘循环等待,延时4s
DoEvents ‘转让控制权,以便让操作系统处理其它的事件。
Wend
‘Starts to acquire bulk data
Dim DigitalValue As Variant
Dim AnalogValue As Variant
debug.print "Text.Text=1 --- 2",timeGetTime
‘ ----------------------------------------------------------------------------------------
‘ 加上下面的程序就不行了是吗?
‘ ----------------------------------------------------------------------------------------
‘ AdvAI1.AcquireBulkDataToMemory 1000, DigitalValue, 0, False, True
‘ AdvAI1.StopAcquireBulkData (0)
‘ AdvAI1.ConvertDigitalValueToAnalog DigitalValue, AnalogValue, 1000
‘ ----------------------------------------------------------------------------------------
debug.print "Text.Text=1 --- 3",timeGetTime
‘Delay
Savetime = timeGetTime ‘记下开始时的时间
While timeGetTime < Savetime + 4000 ‘循环等待,延时4s
DoEvents ‘转让控制权,以便让操作系统处理其它的事件。
Wend
debug.print "Text.Text=1 --- 4",timeGetTime
Text.Text = 0
End Sub
自己写一个dde client或找一个别的支持dde程序 测试一下看看,是不是和组态王连的现象一致。
如果一致,更多的可能是你的程序有问题。
debug.print "Text.Text=1 --- 2",timeGetTime 得到的时间是多少呀?是不是采集程序段占用时间太多。一个简单的做法就是加消耗同样多的时间看看出现的现象是否一样。
Savetime = timeGetTime ‘记下开始时的时间
While timeGetTime < Savetime + 4000 ‘循环等待,延时4s (如果采集时间是占用4s)
‘不转让控制权。
Wend
另外,你的程序定时器15s执行一次,在Ontimer里先延时4s,再采集数据,又延时4s,不知道有何用意?