SCPI 命令 VB.net 在循环中显示值

Posted

技术标签:

【中文标题】SCPI 命令 VB.net 在循环中显示值【英文标题】:SCPI Commands VB.net displaying values within a loop 【发布时间】:2018-04-17 18:28:31 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于SCPI 命令 VB.net 在循环中显示值的主要内容,如果未能解决你的问题,请参考以下文章

关于VB.NET中进度条使用问题

在文本框中显示逗号 VB.net

vb.net中treeview控件用法

页面加载后运行循环 VB.NET

VB.NET MySQL 查询不返回值

VB.net windows 应用程序根据多个唯一行值检索值