我通过 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