0

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

1 回答 1

0

已解决:我在 SigGenFreqValueLabel.Text = dblData 下面插入了 Application.DoEvents()

于 2018-04-17T19:43:18.373 回答