我通过GPIB-USB将SCPI命令发送到信号发生器。我正在发送一个更改频率的命令,这个命令循环播放,以便频率不断变化,直到循环完成。这很成功。我也发送命令来读取频率。我希望能够在每一步读取频率。
我使用它作为信号发生器读写的参考。 https://www.keysight.com/main/editorial.jspx?ckey=492255&id=492255&nid=-536900124.0.08&lc=fin&cc=FI
我遇到的问题是,在完成循环之前,频率不会显示在我的文本框中。然后,我看到最后一个频率,即500.我在visual studio中插入了一个断点,我确实看到频率值正在改变,但我应该显示该值的文本框没有正确更新。信号发生器上的值也在变化。我甚至尝试只显示F而不是我的sig gen的值。我的程序只是不希望在循环完成之前在我创建的文本框中显示频率。 为什么我不能一步一步读取每个频率?我该如何解决这个问题?
Dim F As Integer
Dim Frequency As Integer
Dim dblData As Double
Dim strReply As String
For F = 30 To 500 'MHz 30 to 500
System.Threading.Thread.Sleep(100) 'delay of 100 ms
Frequency = F
instrument.WriteString("FREQ" & Str$(F) & "MHZ") 'send SCPI command, with F being converted to string
System.Threading.Thread.Sleep(100)
instrument.WriteString("FREQ?") 'ask signal generator what frequency is
System.Threading.Thread.Sleep(100)
strReply = instrument.ReadString()
dblData = Val(strReply)
SigGenFreqValueLabel.Text = dblData 'display frequency from signal generator in text box
Console.WriteLine("Frequency" & F) 'Testing if this portion of the for loop is reached
Next
答案 0 :(得分:0)
解决: 我在SigGenFreqValueLabel.Text = dblData下面插入了Application.DoEvents()