Vb.net Visual Basic 6.0语句不在有效的命名空间中

Vb.net Visual Basic 6.0语句不在有效的命名空间中,vb.net,namespaces,visa,gpib,Vb.net,Namespaces,Visa,Gpib,我正在学习,我正在构建一个应用程序来捕获屏幕截图 我找到了一些示例代码来研究应用程序。然而,我得到: 语句不在有效的命名空间中 但是,它将错误指向“Private Sub Main()” 我将在下面附上一个屏幕截图: Option Explicit Private Sub Main() ' Declare Variables used in the program Dim status As Long 'VISA function status return co

我正在学习,我正在构建一个应用程序来捕获屏幕截图

我找到了一些示例代码来研究应用程序。然而,我得到:

语句不在有效的命名空间中

但是,它将错误指向“Private Sub Main()”

我将在下面附上一个屏幕截图:

Option Explicit

Private Sub Main()

    ' Declare Variables used in the program
    Dim status As Long       'VISA function status return code
    Dim defrm As Long        'Session to Default Resource Manager
    Dim vi As Long           'Session to instrument
    Dim x As Integer         'Loop Variable
    Dim ArrayPtr(1) As Long  'Array of Pointers
    Dim length As Long       'Number of bytes returned from instrument
    Dim fnum As Integer      'File number to used to open file to store data
    Dim isOpen As Boolean    'Boolean flag used to keep track of open file
    Dim headerlength As Long 'length of header
    Dim ResultsArray(50000) As Byte 'Results array, Big enough to hold a GIF

    'Set the default number of bytes that will be contained in the
    'ResultsArray to 50,000 (50 kB)
    length = 50000

    'Set the array of pointers to the addresses of the variables
    ArrayPtr(0) = VarPtr(length)
    ArrayPtr(1) = VarPtr(ResultsArray(0))

    'Delete picture.gif file if it exists
    On Error Resume Next
    Kill "picture.gif"

    On Error GoTo Error_Handler

    'Open the default resource manager session
    status = viOpenDefaultRM(defrm)

    'Open the session. Note: For PSA, to use LAN, change the string to
    ' "TCPIP0::xxx.xxx.xxx.xxx::inst0::INSTR" where xxxxx is the IP address
    status = viOpen(defrm, "GPIB0::18::INSTR", 0, 0, vi)
    If (status < 0) Then GoTo VisaErrorHandler

    'Set the I/O timeout to fifteen seconds
    status = viSetAttribute(vi, VI_ATTR_TMO_VALUE, 15000)
    If (status < 0) Then GoTo VisaErrorHandler

    'Store the current screen image on flash as C:PICTURE.GIF
    status = viVPrintf(vi, ":MMEM:STOR:SCR 'C:PICTURE.GIF'" + Chr$(10), 0)
    If (status < 0) Then GoTo VisaErrorHandler

    'Grab the screen image file from the instrument
    status = viVQueryf(vi, ":MMEM:DATA? 'C:PICTURE.GIF'" + Chr$(10), _
             "%#y", ArrayPtr(0))

    'Delete the tempory file on the flash named C:PICTURE.GIF
    status = viVPrintf(vi, ":MMEM:DEL 'C:PICTURE.GIF'" + Chr$(10), 0)
    If (status < 0) Then GoTo VisaErrorHandler

    'Close the vi session and the resource manager session
    Call viClose(vi)
    Call viClose(defrm)

    'Store the results in a text file
    fnum = FreeFile()  'Get the next free file number
    Open "picture.gif" For Binary As #fnum
    isOpen = True
    headerlength = 2 + (Chr$(ResultsArray(1)))
    For x = headerlength To length - 2
        Put #fnum, , ResultsArray(x)
    Next x

    ' Intentionally flow into Error Handler to close file
Error_Handler:
    'Raise the error (if any), but first close the file
    If isOpen Then Close #fnum
    If Err Then Err.Raise Err.Number, , Err.Description
    Exit Sub

VisaErrorHandler:
   Dim strVisaErr As String * 200
   Call viStatusDesc(defrm, status, strVisaErr)
   MsgBox "*** Error : " & strVisaErr, vbExclamation, "VISA Error Message"
   Exit Sub
End Sub

选项显式
私人分干管()
'声明程序中使用的变量
Dim状态为“长”VISA功能状态返回码
Dim defrm As Long“会话到默认资源管理器
Dim vi与仪表的“会话”一样长
Dim x作为“整数”循环变量
Dim ArrayPtr(1)作为长指针数组
Dim length As Long“从仪器返回的字节数
Dim fnum As Integer“用于打开文件以存储数据的文件号
Dim isOpen As Boolean“用于跟踪打开文件的布尔标志
昏暗的车头长度与车头长度相同
Dim ResultsArray(50000)作为字节的结果数组,大到足以容纳GIF
'设置将包含在
'结果排列为50000(50 kB)
长度=50000
'设置指向变量地址的指针数组
ArrayPtr(0)=VarPtr(长度)
ArrayPtr(1)=VarPtr(结果数组(0))
'删除picture.gif文件(如果存在)
出错时继续下一步
杀死“picture.gif”
关于错误转到错误处理程序
'打开默认的资源管理器会话
状态=viOpenDefaultRM(defrm)
'打开会话。注意:对于PSA,要使用LAN,请将字符串更改为
““TCPIP0::xxx.xxx.xxx.xxx::inst0::INSTR”,其中xxxxx是IP地址
状态=viOpen(defrm,“GPIB0::18::INSTR”,0,0,vi)
如果(状态<0),则转到VisaErrorHandler
'将I/O超时设置为15秒
状态=VistatAttribute(vi,vi属性值,15000)
如果(状态<0),则转到VisaErrorHandler
'将当前屏幕图像以C:PICTURE.GIF格式存储在flash上
status=viVPrintf(vi,“:MMEM:STOR:SCR'C:PICTURE.GIF'”+Chr$(10),0)
如果(状态<0),则转到VisaErrorHandler
'从仪器中获取屏幕图像文件
status=viVQueryf(vi,“:MMEM:DATA?'C:PICTURE.GIF'”+Chr$(10)_
“%#y”,ArrayPtr(0))
'删除闪存上名为C:PICTURE.GIF的临时文件
status=viVPrintf(vi,“:MMEM:DEL'C:PICTURE.GIF'”+Chr$(10),0)
如果(状态<0),则转到VisaErrorHandler
'关闭vi会话和资源管理器会话
呼叫维克洛斯(vi)
呼叫维克洛斯(defrm)
'将结果存储在文本文件中
fnum=FreeFile()'获取下一个可用文件号
打开“picture.gif”将二进制文件转换为#fnum
等参=真
标题长度=2+(Chr$(结果数组(1)))
对于x=车头长度至长度-2
放置#fnum,结果数组(x)
下一个x
'故意流入错误处理程序以关闭文件
错误\u处理程序:
'引发错误(如果有),但首先关闭文件
如果是isOpen,则关闭#fnum
如果错误,则错误。引发错误。编号,错误。说明
出口接头
VisaErrorHandler:
尺寸strVisaErr为字符串*200
呼叫viStatusDesc(解除、状态、strVisaErr)
MsgBox“***错误:&strVisaErr,vb感叹号,“VISA错误消息”
出口接头
端接头
我不知道为什么以及如何修复此问题以生成EXE文件…

您不能将方法(Sub-Main)直接放在命名空间中。它必须位于模块或类中

试着这样做:

Option Explicit

Module MyModule
    Private Sub Main()
        '... The rest of the code here
    End Sub
End Module
您的错误还显示文件名为screen.bas。我认为VB.NET不支持.bas文件。更改文件名,使其具有.vb扩展名


最后,不要对错误使用
。。。转到…
您应该使用
尝试。。。捕获

IDE和文件名在我看来像VB.NET