This commit is contained in:
2024-11-01 11:47:29 -07:00
commit ebbc16ee6a
128 changed files with 23645 additions and 0 deletions

345
.gitignore vendored Normal file
View File

@ -0,0 +1,345 @@
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
**/Properties/launchSettings.json
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# JetBrains Rider
.idea/
*.sln.iml
# CodeRush
.cr/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
.mfractor/
##
## Visual Studio Code
##
**/.vscode/*
!**/.vscode/extensions.json
!**/.vscode/format-report.json
!**/.vscode/launch.json
!**/.vscode/settings.json
!**/.vscode/tasks.json
!**/.vscode/mklink.md
*.lnk
.kanbn
Adaptation/.kanbn

5
.vscode/mklink.md vendored Normal file
View File

@ -0,0 +1,5 @@
# mklink
```bash
mklink /J "T:\MET08RESIMAPCDE\06_SourceCode\MET08RESIMAPCDE\Adaptation\.kanbn" "D:\5-Other-Small\Kanban\MET08RESIMAPCDE"
```

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"[markdown]": {
"editor.wordWrap": "off"
}
}

95
.vscode/tasks.json vendored Normal file
View File

@ -0,0 +1,95 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "MSBuild for FindResources",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/FindResources/FindResources.2012.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MSBuild for RegisterBasedOperations",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/RegisterBasedOperations/RegisterBasedOperations.2012.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MSBuild for ServiceRequest",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/ServiceRequest/ServiceRequest.2012.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MSBuild for SimpleAsynchronousReadWrite",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/SimpleAsynchronousReadWrite/SimpleAsynchronousReadWrite.2012.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MSBuild for SimpleReadWrite",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/SimpleReadWrite/SimpleReadWrite.2012.csproj"
],
"problemMatcher": "$msCompile"
},
{
"label": "MSBuild for TC01App",
"command": "C:/Program Files (x86)/Microsoft Visual Studio/2022/BuildTools/MSBuild/Current/Bin/MSBuild.exe",
"type": "process",
"args": [
"/target:Build",
"/restore:True",
"/p:RestoreSources=https://artifactory.intra.infineon.com/artifactory/api/nuget/ngt-fi-package-main-vir/%3Bhttps://packagemanagement.eu.infineon.com:4430/api/v2/%3Bhttps://tfs.intra.infineon.com/tfs/ManufacturingIT/_packaging/eaf/nuget/v3/index.json%3Bhttps://tfs.intra.infineon.com/tfs/FactoryIntegration/_packaging/EAF%40Local/nuget/v3/index.json%3Bhttps://api.nuget.org/v3/index.json",
"/detailedsummary",
"/consoleloggerparameters:PerformanceSummary;ErrorsOnly;",
"/property:Configuration=Debug;TargetFrameworkVersion=v4.8",
"NI-VISA/Examples/.NET/TC01App/TC01App/TC01App.csproj"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@ -0,0 +1,553 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="ContentType" content="Product Documentation" />
<title>NI-VISA 15.0 for Windows Readme</title>
<style type="text/css">
<!--
/***************************************************/
/* MINIMAL STYLES */
/* The following section defines styles that every HTML Help project should need. */
/* Specifies White Background color */
body {background-color:#FFFFFF; font-family:Verdana, sans-serif; font-size:8pt; color: #000000;}
/* The default style of P is red to alert you that you need to apply a style class, such as Body. */
p { margin-top:6.00pt; margin-bottom:6.00pt;}
br { font-size:4.00pt; }
/* Use H1 for all topic headings. */
h1 { margin-top:3.00pt; margin-bottom:3.00pt; font-size:150%; font-weight:bold; }
/* Use H2 for second-level headings. */
h2 { margin-top:9.00pt; margin-bottom:3.00pt; font-size:125%; font-weight:bold; }
/* Use H3 for third-level headings. */
h3 { margin-top:6.00pt; margin-bottom:3.00pt; font-size:100%; font-weight:bold; }
/* Use H4 for fourth-level headings. */
h4 { margin-top:6.00pt; margin-bottom:3.00pt; font-size:100%; font-weight:bold; }
/* H5 and H6 have the same definition as H4 because you should not need this level of heading in one topic. If you need to use H5 or H6, consider breaking up your topic into more than one topic. */
h5 { margin-top:6.00pt; margin-bottom:3.00pt; font-size:100%; font-weight:bold; }
h6 { margin-top:6.00pt; margin-bottom:3.00pt; font-size:100%; font-weight:bold; }
/* Use the Body style class for normal paragraphs. */
p.Body { }
/* Use the Anchor style class for graphic references on a line by themselves. */
p.Anchor { font-size:125%; }
/* Use the Indent style classes to indent a paragraph. If you need to indent text below a list item, use <br><br> to start the new paragraph within the same set of <li></li> tags. If you need to indent a list within another list, nest the indented list within the first list's set of <ol></ol> or <ul></ul> tags. */
p.Indent1 { margin-left:12.00pt; margin-bottom:3.00pt; }
p.Indent2 { margin-left:24.00pt; margin-bottom:3.00pt; }
p.Indent3 { margin-left:36.00pt; margin-bottom:3.00pt; }
p.Indent4 { margin-left:48.00pt; margin-bottom:3.00pt; }
p.Indent5 { margin-left:60.00pt; margin-bottom:3.00pt; }
/* Use the LI style for all list items. */
li { margin-top:3.00pt; margin-bottom:3.00pt; }
/* Use the OL style for numbered lists. You do not have to type the number for each list item in a numbered list. */
ol { margin-left:22.00pt; margin-top:3.00pt; margin-bottom:3.00pt; text-indent:0pt; list-style-type: decimal; }
/* Use the OL style for numbered lists. Nested lists will use the bullet types according to the nesting scheme below */
ol ol {list-style-type:lower-alpha}
ol ol ol {list-style-type:decimal}
ol ol ol ol {list-style-type:lower-alpha}
ol ol ol ol ol {list-style-type:decimal}
ol ol ol ol ol ol {list-style-type:lower-alpha}
ol ol ol ol ol ol ol {list-style-type:decimal}
ol ol ol ol ol ol ol ol {list-style-type:lower-alpha}
/* Use the EquationNum style class for numbered lists of equations. You do not have to type the number for each list item in a numbered list. */
ol.EquationNum { margin-left:36.00pt; text-indent:0pt; list-style-type: decimal; }
/* Use the List-abc style class for lettered lists. You do not have to type the letter for each list item in a lettered list. */
ol.List-abc { margin-left:22.00pt; text-indent:0pt; list-style-type:lower-alpha; }
/* Use the UL style for bulleted lists. You do not have to type the bullet for each list item in a bulleted list. */
ul { margin-left:22.00pt; text-indent:0pt; margin-top:3.00pt; margin-bottom:3.00pt; list-style-type: disc; }
/* Use the UL style for bulleted lists. Nested lists will use the bullet types according to the nesting scheme below. */
ul ul {list-style-image: none;list-style-type: circle}
ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul {list-style-image: none;list-style-type: circle}
ul ul ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul ul ul {list-style-image: none;list-style-type: circle}
ul ul ul ul ul ul ul {list-style-image:none;list-style-type:disc}
ul ul ul ul ul ul ul ul ul{list-style-image: none;list-style-type: circle}
/* Use the List-Box style class for bulleted lists with boxes instead of bullets. You do not have to type the box for each list item in a box list. */
ul.List-Box {list-style-image: none;list-style-type: square}
table { font-size:100%; }
/* Use the Borderless style class for tables that do not need borders, such as for 2-column or 3-column lists with no headings. */
table.Borderless { border:none; }
/* Use the Bordered style class for tables that need borders. */
table.Bordered { border-width: 1pt; border-style: solid; border-color: #000000; border-collapse: collapse; }
/* Use the TD style for table cells in Borderless or Borderless-Wide tables. */
td { vertical-align:top; padding:3px; }
/* Use the Bordered style class for table headings and cells in Bordered or Bordered-Wide tables. */
.Bordered { border-width: 1pt; border-style: solid; border-color: #000000; }
/* Use the Icon style class for table cells that contain note, caution, warning, or tip icons, or LabVIEW datatype terminals. */
td.Icon { width:40px; }
/* Use the TH style for table heading cells in Borderless or Borderless-Wide tables. */
th { font-weight:bold; padding:3px; }
/* Use the Left-Align style class for table headings and cells that you want to left align instead of center align. */
.Left-Align { text-align:left; }
/***************************************************/
/* CHARACTER FORMATS */
/* The following section defines character formats that every HTML Help project should need. */
/* CHARACTER FORMATS Updated to conform with the CSE HTML Validator Pro */
/* The following section defines character formats that every HTML Help project should need. */
/* Use the Dark-Red format for warnings or cautions. */
.Dark-Red { color: #800000 }
/* Use the Monospace format for code or syntax examples. */
.Monospace { font-family: "Courier New",monospace; font-size: 100%; }
/* Use the Monospace-Bold format for messages and responses that the computer automatically prints to the screen. */
.Monospace-Bold { font-family: "Courier New",monospace; font-weight: bold; font-size: 100%; }
/* Use the Monospace-Italic format to denote text that is a placeholder for a word or value that the user must supply. */
.Monospace-Italic { font-family: "Courier New",monospace; font-style: italic; font-size: 100%; }
/* small class */
.smallFont { font-size:87.5%; }
/* Bold class */
.Bold { font-weight: bold; }
/* Italic class */
.Italic { font-style: italic; }
/* Use the Platform format to denote a specific platform. */
.Platform { color: #0000FF; font-weight: bold; }
/* Use the Symbol format for characters not in the Verdana character set. Use this format sparingly. When possible, you should use the correct ASCII code for the symbol or use a graphic to recreate the symbol. */
.Symbol { font-family: Symbol; }
/* Use the Red-text format to call attention to text that needs information added or edited by techcomm */
.Red-text {color: #FF0000;}
/* Use the Green-Underline format for the green defintion in the conventions topic */
.Green-Underline {color: #007700; text-decoration : underline;}
/* Use the glossButton format for the glossary buttons used in the glossary topic */
.glossButton { font-size:12px; color:black; }
/* Use for text sections and hyphenated words that should not break at line wraps */
.nobreak{white-space:nowrap}
/* Use for template instructions. */
.instructions{color:red; font-style:italic}
/*Use for words and text sections that do not need to be localized */
.DNL { }
/* The following styles define the color of links. */
a:link { color: #007700 }
a:visited { color: #7F007F }
a:link:hover { color: #FF0000 }
a:link:active { color: #FF0000 }
/***************************************************/
/* Forms */
form { margin-top:0pt; margin-bottom:3pt; color:black; }
select { font-size:100%; color:black; }
/*******************************************************/
/* Margins */
/* Use these styles for block-level elements inside tables cells or list items where you do not want extra padding at the top or bottom of a cell. */
.noTopMargin { margin-top:0pt;}
.noBottomMargin { margin-bottom:0pt;}
/***************************************************/
/* CODE STYLES */
/* The following section defines styles that you need to format entire sections of code or syntax examples. If you have just a few words you need to format as a code or syntax example, use the Monospace character format. */
p.Code { margin-top:3.00pt; margin-bottom:0.00pt; font-family: "Courier New",monospace; }
p.Code1 { margin-left:12.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family: "Courier New",monospace; }
p.Code2 { margin-left:24.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family: "Courier New",monospace; }
p.Code3 { margin-left:36.00pt; margin-top:3.00pt; margin-bottom:0.00pt; font-family: "Courier New",monospace; }
-->
</style>
</head>
<body>
<h1>NI-VISA 15.0 for Windows Readme</h1>
<p>June 2015</p>
<p>This file contains important information about NI-VISA, including supported platforms, new features, and information about bugs fixes and known issues for NI-VISA 15.0.
<p><a href="#overview">Overview</a></p>
<p><a href="#SUPPORTED_PLATFORMS">Supported Platforms</a></p>
<p><a href="#SUPPORTED_DEVELOPMENT_ENVIRONMENTS">NI Application Software Support</a></p>
<p><a href="#INSTALLING_AND_UNINSTALLING_NI-VISA">Installing and Uninstalling NI-VISA</a> </p>
<p><a href="#KNOWN_ISSUES">Known Issues and Bug Fixes</a></p>
<p><a href="#updates">Product Security and Critical Updates</a></p>
<p><a href="#IMPROVEMENTS_AND_BUG_FIXES">New Features and Improvements</a></p>
<p><a href="#driver">Driver Version Naming Changes</a></p>
<p><a href="#win8">How to Use NI Software with Microsoft Windows 8.<em>x</em></a></p>
<p><a href="#OSSupport">NI Software Support for Microsoft Windows Vista, Windows XP, and Windows Server 2003</a></p>
<p><a href="#legal">Legal Information</a></p>
<hr>
<h2><a name="overivew">Overview</a></h2>
<p>NI-VISA is the NI implementation of the Virtual Instrument Software Architecture (VISA), a standard for configuring, programming, and troubleshooting instrumentation systems comprising GPIB, VXI, PXI, Serial, Ethernet, and/or USB interfaces.</p>
<h2><a name="SUPPORTED_PLATFORMS" id="SUPPORTED_PLATFORMS">Supported Platforms</a></h2>
<p>NI-VISA for Windows supports the following platforms:</p>
<ul>
<li>Windows Server 2003 R2 (32-bit version only)<sup>1,2</sup></li>
<li>Windows Server 2008 R2 (64-bit version only)<sup>1</sup></li>
<li>Windows Server 2012 R2 (64-bit)<sup>1</sup></li>
<li>Windows 8.1 x86, x64</li>
<li>Windows 8 x86, x64</li>
<li>Windows 7 x86, x64</li>
<li>Windows Vista x86, x64</li>
<li>Windows XP Service Pack 3</li>
<li>NI Real-Time VxWorks</li>
<li>NI Real-Time Phar Lap ETS</li>
<li>NI Linux&#174; Real-Time</li>
<li>LabVIEW Touch Panel Module 2013/2012</li>
</ul>
<p class="Indent1">While this distribution targets all of these platforms, you can run <span class="Monospace">setup.exe</span> only on the Windows variants.</p>
<p class="Indent1"><sup>1</sup> NI-VISA does not support the Windows Server non-R2 editions. </p>
<p class="Indent1"><sup>2</sup> Support for Windows Server 2003 R2 may require disabling physical address extensions (PAE). To learn how this might affect your use of Windows Server 2003 and what actions you might need to take, visit <span class="Monospace">ni.com/info</span> and enter the info code <a href="http://digital.ni.com/express.nsf/bycode/PAESupport" target="_blank">PAESupport</a>.</p>
<h2><a name="SUPPORTED_DEVELOPMENT_ENVIRONMENTS" id="SUPPORTED_DEVELOPMENT_ENVIRONMENTS">NI Application Software Support</a></h2>
<p>NI-VISA for Windows supports the following development environments. If you are not using NI application software, refer to <em>Microsoft Visual Studio Support</em>.</p>
<table class="Bordered">
<tr>
<th class="Bordered">NI Application Software</th>
<th class="Bordered">Versions Supported by NI-VISA</th>
</tr>
<tr>
<td class="Bordered">LabVIEW</td>
<td class="Bordered">2015/2014/2013/2012</td>
</tr>
<tr>
<td class="Bordered">LabWindows/CVI</td>
<td class="Bordered">2015/2013/2012/2010</td>
</tr>
<tr>
<td class="Bordered">Measurement Studio</td>
<td class="Bordered">2013/2012/2010/2009</td>
</tr>
</table>
<h3>Measurement Studio Examples</h3>
<p>The directories that the Measurement Studio examples install to depends on which component is installed, the version of Visual Studio or the .NET Framework the example supports, the version of Measurement Studio installed, and the operating system. For detailed information on examples for Measurement Studio, refer to <em>Where to Find Examples</em> in the <em>NI Measurement Studio Help</em>.</p>
<h3>Microsoft Visual Studio Support</h3>
<p>The following table lists the programming languages and Microsoft Visual Studio versions supported by this version of NI-VISA. Earlier versions of NI-VISA support other application software and language versions. For more information on Visual Studio compatibility with earlier versions of VISA, refer to <span class="Monospace">ni.com/info</span> and enter the info code <a href="http://digital.ni.com/express.nsf/bycode/NETlegacydrivers" target="_blank">NETlegacydrivers</a>. To find and download an earlier version of a driver, refer to <a href="http://ni.com/downlaods" target="_blank">ni.com/downloads</a>.</p>
<table class="Bordered">
<tr>
<th class="Bordered">Programming Language</th>
<th class="Bordered">Visual Studio Versions Support by NI-VISA</th></tr>
<tr>
<td class="Bordered">Visual C++ MFC<sup>1</sup></td>
<td class="Bordered">2008<sup>2</sup></td>
</tr>
<tr>
<td class="Bordered">.NET Framework 3.5 Languages<br>
(Visual C# and Visual Basic .NET)
</td>
<td class="Bordered">2008</td>
</tr>
<tr>
<td class="Bordered">.NET Framework 4.0 Languages<br>
(Visual C# and Visual Basic .NET)
</td>
<td class="Bordered">2010<sup>3</sup></td>
</tr>
<tr>
<td class="Bordered">.NET Framework 4.5 Languages<br>
(Visual C# and Visual Basic .NET)
</td>
<td class="Bordered">2012<sup>4</sup></td>
</tr>
<tr>
<td class="Bordered" colspan="2"><sup>1</sup> NI-VISA includes limited support for Visual Studio C++ MFC. For more information, visit <span class="Monospace">ni.com/info</span> and enter the info code <a href="http://digital.ni.com/express.nsf/bycode/visamvs03" target="_blank">visamvs03</a>.<br>
<sup>2</sup> Requires Measurement Studio 8.6 &#8212; Measurement Studio 2009.<br>
<sup>3</sup> With Windows XP, Service Pack 3 or later is required.<br>
<sup>4</sup> Windows 8, Windows 7, Windows Vista SP2, or Windows Server 2008 R2 is required.<br>
</td>
</tr>
</table>
<p>If you are using the NI-VISA .NET Library, the .NET 3.5 Framework, .NET 4.0 Framework, or .NET 4.5 Framework is required.</p>
<p>Support for 64-bit applications is available in NI-VISA 4.5.1 and later for Visual Studio 2008 support, NI-VISA 5.0.3 and later for Visual Studio 2010 support, and NI-VISA 5.4 and later for Visual Studio 2012 support.
</p>
<h2><a name="INSTALLING_AND_UNINSTALLING_NI-VISA" id="INSTALLING_AND_UNINSTALLING_NI-VISA">Installing and Uninstalling NI-VISA</a></h2>
<p>Before you install NI-VISA 15.0, NI recommends that you uninstall any versions of VISA prior to NI-VISA 2.0.1.</p>
<p>After uninstalling NI-VISA, some DLLs and executables may remain in the NI-VISA directories. To complete the uninstall process, you must restart your machine.</p>
<p><strong>Note:</strong> The uninstaller application does not notify you when rebooting is necessary. If you plan to reinstall NI-VISA, you always should reboot the machine after running the uninstaller.</p>
<h3><a name="SUPPORT_FOR_AGILENT_HP_CONTROLLERS" id="SUPPORT_FOR_AGILENT_HP_CONTROLLERS">Agilent/HP Controller Support</a></h3>
<p>NI-VISA now works with Agilent/HP GPIB and VXI controller cards. To use this feature, go into MAX, select <strong>Tools&#0187;NI-VISA&#0187;VISA Options</strong>, choose the <strong>Passports</strong> tab, and enable the <span class="Monospace">NiVisaTulip.dll</span> Passport. NI-VISA automatically finds and accesses any GPIB or VXI devices. However, NI-VISA does not configure the Agilent/HP hardware; you still must do that with the Agilent/HP I/O Config utility.</p>
<p>If you have both NI and Agilent/HP controllers in the same system, you must configure the cards at different system addresses, such as GPIB0 and GPIB1. If both vendors try to use the same interface address, NI-VISA reports an error from <span class="Monospace">viFindRsrc</span> or VISA Find Resources.</p>
<!-- <h3><a name="USING_viPeekXX_viPokeXX_MACROS" id="USING_viPeekXX_viPokeXX_MACROS">Using viPeekXX/viPokeXX Macros</a></h3>
<p>Users who want to use the <span class="Monospace">viPeekXX</span>/<span class="Monospace">viPokeXX</span> macros for platforms on which the macros are available must define a macro called <span class="Monospace">NIVISA_PEEKPOKE</span> before including <span class="Monospace">visa.h</span>. Note that the macros are currently available on only the Win32 platform (all C/C++ compilers).</p>
<p>If you have used these macros with a version of NI-VISA prior to 2.0, your application will continue to run, but the peek/poke performance decreases. You should relink with the libraries supplied with this installation to regain the prior peek/poke performance.</p> -->
<h3><a name="WHQL_SIGNING_USB_HARDWARE" id="WHQL_SIGNING_USB_HARDWARE">WHQL Signing USB Hardware</a></h3>
<p>To WHQL (Windows Hardware Quality Labs) sign your USB hardware using the NI-VISA driver for Windows XP/2000, as part of this process you need a PDB (Program Database) file for the underlying driver (<span class="Monospace">NiViUsbK.sys</span>).</p>
<p><span class="Monospace">NiViUsbK.pdb</span> is provided for this purpose. It is in <span class="Monospace-italic">&lt;NI-VISA Installation Directory&gt;</span><span class="Monospace">\WinNT\NIvisa\USB</span>.</p>
<h3><a name="CREATING_AND_DIGITALLY_SIGNING_CATALOG_FILES" id="CREATING_AND_DIGITALLY_SIGNING_CATALOG_FILES">Creating and Digitally Signing Catalog Files</a></h3>
<p><span class="Platform">(Windows Vista, Windows 7)</span> If you generate an INF file using the NI-VISA Driver Wizard, the INF file installs correctly by itself. However, a warning dialog notifies you that Windows cannot verify the publisher of this driver software. To avoid this dialog, you must create and digitally sign a Windows Catalog (<span class="Monospace">.cat</span>) file.</p>
<p><span class="Platform">(Windows 8.<em>x</em>)</span> If you generate an INF file using the NI-VISA Driver Wizard, you must create and digitally sign a Windows Catalog (<span class="Monospace">.cat</span>) file before you can install the INF file on a Windows 8.<em>x</em> machine. For more information about digitally signing a <span class="Monospace">.cat</span> file for Windows 8.<em>x</em>, visit <span class="Monospace">ni.com/info</span> and enter the Info Code <a href="http://digital.ni.com/express.nsf/bycode/INFWin8" target="_blank">INFWin8</a>.</p>
<p>For more information about creating and signing catalog files, Microsoft has a <a href="http://digital.ni.com/express.nsf/bycode/ex8kei
" target="_blank">Kernel-Mode Code Signing Walkthrough</a> whitepaper that describes the details of this process. The generated catalog file should reference only the INF file.</p>
<h2><a name="KNOWN_ISSUES" id="KNOWN_ISSUES">Known Issues and Bug Fixes</a></h2>
<p>For a list of Known Issues of NI-VISA 15.0, visit <span class="Monospace">ni.com/info</span> and enter the Info Code <a href="http://digital.ni.com/express.nsf/bycode/NIVISA150KnownIssues" target="_blank">NIVISA150KnownIssues</a>.</p>
<p>For a list of Bug Fixes for NI-VISA, visit <span class="Monospace">ni.com/info</span> and enter the Info Code <a href="http://digital.ni.com/express.nsf/bycode/NIVISAFixList" target="_blank">NIVISAFixList</a>.</p>
<!--Critical updates-->
<h2><a name="updates"></a>Product Security and Critical Updates</h2>
<p>Visit <a href="http://www.ni.com/security" target="_blank">ni.com/security</a> to view and subscribe to receive security notifications about NI products. Visit <a href="http://ni.com/critical-updates" target="_blank">ni.com/critical-updates</a> for information about critical updates from NI.</p>
<h2><a name="IMPROVEMENTS_AND_BUG_FIXES" id="IMPROVEMENTS_AND_BUG_FIXES">New Features and Improvements</a></h2>
<h3>NI-VISA 15.0</h3>
<p>Added support for the industry standard API for VISA .NET as specified by the IVI Foundation in VPP 4.3.6. NI recommends this API for developing new .NET applications using NI-VISA. Support for the legacy VisaNS API will be removed in a future release. For more information about upgrading from VisaNS to the new VISA .NET API, visit <span class="Monospace">ni.com/info</span> and enter the Info Code <a href="http://digital.ni.com/express.nsf/bycode/VISANETUpgrade" target="_blank">VISANETUpgrade</a>.</p>
<h3>NI-VISA 14.0</h3>
<p>Added support for NI Linux Real-Time x64.</p>
<p>Added support for viMapTrigger and viAssertTrigger on PXI resources to use PXI-9 compliant trigger managers if available.</p>
<p>Added support for viGpibControlREN on TCPIP resources that use the VXI-11 protocol.</p>
<h3>NI-VISA 5.4</h3>
<p>Added support for NI Linux Real-Time.</p>
<h3>NI-VISA 5.3</h3>
<p>Improved performance of viRead for a HiSLIP resource.</p>
<h3>NI-VISA 5.2</h3>
<p>Added support for IVI VISA Plug-in specification. NI-VISA 5.2 can enumerate and communicate with third-party PCI/PXI devices with specification-compliant plug-ins that are installed on the system.</p>
<p>Improved performance of viWrite for a HiSLIP resource.</p>
<h3>NI-VISA 5.1</h3>
<p>Added support for HiSLIP.</p>
<p>Added support for USB resources on PharLap-based LabVIEW RT targets.</p>
<p>Updated the VISA Interactive Control stand-alone application. Refer to the <em>NI-VISA Help</em> for more information on the updates to VISAIC.</p>
<h3>NI-VISA 5.0.3</h3>
<p>Added support for .NET Framework 4.0</p>
<h3><a name="NI-VISA_5.0.1_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_5.0.1_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 5.0.1</a></h3>
<p>Added support for IPxi interface in VISA-COM layer.</p>
<h3><a name="NI-VISA_5.0_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_5.0_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 5.0</a></h3>
<p>Added the ability to launch Instrument Driver Finder from MAX.</p>
<p>Added a page in the Driver Development Wizard to auto-detect USB devices and auto-populate device info.</p>
<p>Added the ability to custom install VISA passports on Real-Time targets.</p>
<p>Added support for 64-bit formatted I/O.</p>
<p>Added the ability to configure IEEE 1588-2008 clocks on networks.</p>
<h3><a name="NI-VISA_4.6.2_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.6.2_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.6.2</a></h3>
<p>Added support for Windows 7 (32-bit version), Windows 7 x64 Edition (64-bit version), Windows Server 2003 R2 (32-bit version only), and Windows Server 2008 R2 (64-bit version only).</p>
<h3><a name="NI-VISA_4.5.1_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.5.1_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.5.1</a></h3>
<p>Added support for 64-bit user mode in .NET 3.5 Framework. You can now create 64-bit applications with .NET Framework 3.5. For additional information, refer to <em>Working with 64-bit .NET Support for NI-VISA</em> in the <em>NI-VISA .NET Framework 3.5 Help</em>. This help file is installed by default at <strong>Start&#0187;All Programs&#0187;National Instruments&#0187;VISA&#0187;Documentation&#0187;NI-VISA .NET Framework 3.5 Help</strong>. </p>
<h3><a name="NI-VISA_4.5_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.5_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.5</a></h3>
<p>Added a page in MAX to allow viewing and changing the <span class="Monospace">Conflict Resolution Manager</span> settings.</p>
<h3><a name="NI-VISA_4.4_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.4_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.4</a></h3>
<p>Added support for using NI-VISA with 64-bit applications on Windows Vista x64 Edition. VXI, GPIB-VXI, and FireWire resources are not currently supported for 64-bit applications.</p>
<p>Added automatic detection of LXI (TCP/IP) devices that support the mDNS and DNS-SD technologies.</p>
<p>Added support for USB and TCP/IP resources on VxWorks-based LabVIEW RT targets.</p>
<h3><a name="NI-VISA_4.3_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.3_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.3</a></h3>
<p>When using the <span class="Monospace">MAX Copy Configuration</span> API, you can now specify <span class="Monospace">"ni-visa"</span> as the product. All documented modes are supported.</p>
<h3><a name="NI-VISA_4.2_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.2_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.2</a></h3>
<p>The default installation directory has changed from <span class="Monospace">"C:\VXIPNP"</span> to <span class="Monospace">"C:\Program Files\IVI Foundation\VISA"</span>. Upgrades over previous versions of NI-VISA use the previous installation directory.</p>
<p>The default path to the configuration file <span class="Monospace">visaconf.ini</span> has changed to <span class="Monospace">"C:\Documents and Settings\All Users\Application Data\National Instruments\NIvisa"</span> on Windows XP/2000 and to <span class="Monospace">"C:\ProgramData\National Instruments\NIvisa"</span> on Windows Vista.</p>
<p>Added support for Windows Mobile 5.0 on x86 processors.</p>
<h3><a name="NI-VISA_4.1_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.1_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.1</a></h3>
<p>The NI-VISA Driver Wizard generates new INF files that work on Vista. If you want to run your VISA based drivers on Vista that previously required an INF file, you will need to regenerate a new INF file using the new Driver Wizard.</p>
<p>On Pocket PC 2003/Windows Mobile 5.0 devices, the NI-VISA configuration file <span class="Monospace">visaconf.ini</span> was installed as read-only. This caused problems with serial port detection. Now it is writable.</p>
<p>In MAX, the IP address of TCPIP INSTR and SOCKET resources was not shown when the resource was configuring using a hostname. This IP address is now shown.</p>
<p>NI-VISA Server now warns if it is launched and there are no permissions set to allow clients to connect.</p>
<p>The NI-VISA Driver Wizard now has an option for PXI Express devices that provide a way to read the slot number using a sequence of register-level accesses.</p>
<p>The enabled/disabled state of Passports is preserved across upgrades of NI-VISA.</p>
<h3><a name="NI-VISA_4.0_IMPROVEMENTS_AND_BUG_FIXES" id="NI-VISA_4.0_IMPROVEMENTS_AND_BUG_FIXES">NI-VISA 4.0</a></h3>
<p>Added support for 64-bit data transfers in register-based operations, to support the VISA 4.0 specification.</p>
<h2><a name="driver">Driver Version Naming Changes</a></h2>
<p>NI-VISA versions are now aligned with the versions of major NI application software products. This alignment gives you information about the year the driver was released and the most recent software version the driver was designed to work with. Driver versions now start with a two-digit year indicator: &lt;ProductName&gt;&lt;Year-BasedVersion&gt;. For example, NI-VISA 15.0.0 is the version released with LabVIEW 2015. The last version released under the old numbering scheme is NI-VISA 5.4. The first version released under the new numbering scheme is NI-VISA 14.0.0.</p>
<h2><a name="autoinstall">Automating the Installation of NI Products</a></h2>
<p>You can automate the installation of most NI products using command-line arguments to suppress some or all of the installer user interface and dialog boxes. However, starting with the August 2012 releases (products using NI Installers version 3.1 or later), you may need to perform additional steps before or during a silent installation of NI software.</p>
<p>If the NI product you are installing uses Microsoft .NET 4.0, the .NET installer may run before any NI software installs and may require a reboot before the installation of NI software begins. To avoid a .NET reboot, install .NET 4.0 separately before you install NI software.</p>
<p>For more information about automating the installation of NI products, refer to the following KnowledgeBase articles:</p>
<ul>
<li>For more information about silent installations of individual NI products, refer to KB 4CJDP38M, <a href="http://digital.ni.com/express.nsf/bycode/InstallerAutomation" target="_blank">Automating the Installation of a Single Installer</a>.</li>
<li>For more information about silent installations of NI products in a suite, such as NI Developer Suite, refer to KB 4GGGDQH0, <a href="http://digital.ni.com/express.nsf/bycode/SuiteInstallerAutomation" target="_blank">Automating the Installation of a Suited Installer</a>.</li>
<li>To determine what version of NI Installers your product contains, refer to KB 4CJDR18M, <a href="http://digital.ni.com/express.nsf/bycode/InstallerVersion" target="_blank">How Can I Determine the Type and Version of My National Instruments Installer?</a>.</li>
</ul>
<!-- Windows 8 Support Information-->
<h2><a name="win8">How to Use NI Software with Microsoft Windows 8.<em>x</em></a></h2>
<p>When you install NI software on Microsoft Windows 8.<em>x</em>, you will notice a few additional tiles in the Apps view, including shortcuts to NI application software products such as LabVIEW, Measurement &amp; Automation Explorer (NI MAX), and NI Launcher.</p>
<h3>Using NI Launcher</h3>
<p>NI Launcher helps you find and launch installed NI products. It provides you with a method of finding NI products similar to the Start menu in previous versions of Microsoft Windows. To use NI Launcher, click the <strong>NI Launcher</strong> tile in the Apps view. NI Launcher launches the desktop and opens a menu containing a list of NI products. Click any NI product to launch it.</p>
<table class="Borderless">
<tr>
<td><strong>Note</strong>&nbsp;&nbsp;NI MAX does not appear as a desktop shortcut when installed on Microsoft Windows 8.<em>x</em>. You can launch NI MAX either from the Apps view or from within NI Launcher. </td>
</tr>
</table>
<h3>Pinning Frequently Used Applications</h3>
<p>For convenience, you can pin your most-used NI applications, such as MAX, to either the Start screen or the Taskbar on the desktop, as necessary:</p>
<table class="Bordered">
<tr><td class="Bordered"><strong>Current Application</strong></td><td class="Bordered"><strong>Icon Location</strong></td><td class="Bordered"><strong>Pin to Action</strong></td></tr>
<tr>
<td class="Bordered">Windows 8.<em>x</em> Desktop</td><td class="Bordered">Desktop Taskbar</td><td class="Bordered">Right-click application and select <strong>Pin to Taskbar</strong></td></tr>
<tr>
<td class="Bordered">Windows 8.<em>x</em> Desktop</td>
<td class="Bordered">Start screen</td><td class="Bordered">Right-click application and select <strong>Pin to Start</strong></td></tr>
<tr>
<td class="Bordered">Windows 8.<em>x</em> Start screen</td><td class="Bordered">Desktop Taskbar</td><td class="Bordered">Right-click application and select <strong>Pin to taskbar</strong> from the menu bar on the bottom of the screen</td></tr>
</table>
<h3>Finding All Programs</h3>
<p>If you want to find a particular application or related files, such as documentation files, from the Start screen, you can access all installed files from the Apps view. To get to the Apps view, right-click anywhere on the Start screen and select <strong>All apps</strong> (Windows 8) or click the down arrow on the bottom left of the screen (Windows 8.1).</p>
<p>For more information about NI support for Windows 8.<em>x</em>, visit <a href="http://ni.com/windows8" target="_blank">ni.com/windows8</a>.</p>
<!-- Windows XP support information -->
<a name="OSSupport"></a>
<h2>NI-VISA Drops Support for Microsoft Windows Vista, Windows XP, and Windows Server 2003 in 2016</h2>
<p>NI-VISA will drop support for Microsoft Windows Vista, Windows XP, and Windows Server 2003 as of July 1, 2016. Versions of NI-VISA that ship after July 1, 2016 will not install or run on Windows Vista, Windows XP, or Windows Server 2003. For detailed information about NI application software product life cycles, visit <a href="http://ni.com/info" target="_blank">ni.com/info</a> and enter one of the following Info Codes:</p>
<table class="Bordered">
<tr><td class="Bordered"><strong>Product</strong></td>
<td class="Bordered"><strong>Info Code</strong></td></tr>
<tr><td class="Bordered">LabVIEW</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/lifecycle" target="_blank">lifecycle</a></td></tr>
<tr><td class="Bordered">LabWindows&#8482;/CVI&#8482;</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/cvi_lifecycle" target="_blank">cvi_lifecycle</a></td></tr>
<tr><td class="Bordered">Measurement Studio</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/mstudiolifecycle" target="_blank">mstudiolifecycle</a></td></tr>
<tr><td class="Bordered">TestStand</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/tslcp" target="_blank">tslcp</a></td></tr>
<tr><td class="Bordered">DIAdem</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/ddlcp" target="_blank">ddlcp</a></td></tr>
<tr><td class="Bordered">SignalExpress</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/selcp" target="_blank">selcp</a></td></tr>
<tr><td class="Bordered">VeriStand</td><td class="Bordered"><a href="http://digital.ni.com/express.nsf/bycode/nivslifecycle" target="_blank">nivslifecycle</a></td></tr>
</table>
<!--Important Information-->
<hr>
<h2><a name="legal">Legal Information</a></h2>
<!--Copyright-->
<p><strong>Copyright</strong></p>
<p>&#0169; 1995&ndash;2015 National Instruments. All rights reserved.</p>
<p>Under the copyright laws, this publication may not be reproduced or transmitted in any form, electronic or mechanical, including photocopying, recording, storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National Instruments Corporation.</p>
<p>National Instruments respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright and other intellectual property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may use NI software only to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal restriction.</p>
<p><strong>End-User License Agreements and Third-Party Legal Notices</strong></p>
<p>You can find end-user license agreements (EULAs) and third-party legal notices in the following locations after installation:</p>
<ul>
<li>Notices are located in the <span class="Monospace">&lt;National Instruments&gt;\_Legal Information</span> and <span class="Monospace">&lt;National Instruments&gt;</span> directories.</li>
<li>EULAs are located in the <span class="Monospace">&lt;National Instruments&gt;\Shared\MDF\Legal\license</span> directory.</li>
<li>Review <span class="Monospace">&lt;National Instruments&gt;\_Legal Information.txt</span> for information on including legal information in installers built with NI products.</li>
</ul>
<p><strong>U.S. Government Restricted Rights</strong></p>
<p>If you are an agency, department, or other entity of the United States Government (&quot;Government&quot;), the use, duplication, reproduction, release, modification, disclosure or transfer of the technical data included in this manual is governed by the Restricted Rights provisions under Federal Acquisition Regulation 52.227-14 for civilian agencies and Defense Federal Acquisition Regulation Supplement Section 252.227-7014 and 252.227-7015 for military agencies.</p>
<p><strong>IVI Foundation Copyright Notice</strong></p>
<p><span class="DNL">Content from the IVI specifications reproduced with permission from the IVI Foundation.</span></p>
<p><span class="DNL">The IVI Foundation and its member companies make no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The IVI Foundation and its member companies shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material.</span></p>
<!--Trademarks-->
<p><strong>Trademarks</strong></p>
<p>Refer to the <em><span class="DNL">NI Trademarks and Logo Guidelines</span></em> at <a href="http://digital.ni.com/express.nsf/bycode/rdtrad" target="_blank"><span class="DNL">ni.com/trademarks</span></a> for information on <span class="DNL">National Instruments</span> trademarks. Other product and company names mentioned herein are trademarks or trade names of their respective companies.</p>
<!--Patents-->
<p><strong>Patents</strong></p>
<p>For patents covering the National Instruments products/technology, refer to the appropriate location: <strong>Help&#0187;Patents</strong> in your software, the <span class="Monospace">patents.txt</span> file on your media, or the <em>National Instruments Patent Notice</em> at <a href="http://digital.ni.com/express.nsf/bycode/rdlv17" target="_blank">ni.com/patents</a>.</p>
<p>374899B-01</p>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1,120 @@
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
namespace NationalInstruments.Examples.FindResources
{
/// <summary>
/// CustomFilterForm lets the user enter the custom filter string to
/// find the available resources with. Public property CustomFilter
/// returns the custom filter string.
/// </summary>
public class CustomFilterForm : System.Windows.Forms.Form
{
private System.Windows.Forms.Label customFilterLabel;
private System.Windows.Forms.TextBox customFilterTextBox;
private System.Windows.Forms.Button okButton;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public CustomFilterForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(CustomFilterForm));
this.customFilterTextBox = new System.Windows.Forms.TextBox();
this.customFilterLabel = new System.Windows.Forms.Label();
this.okButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// customFilterTextBox
//
this.customFilterTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.customFilterTextBox.Location = new System.Drawing.Point(16, 24);
this.customFilterTextBox.Name = "customFilterTextBox";
this.customFilterTextBox.Size = new System.Drawing.Size(152, 20);
this.customFilterTextBox.TabIndex = 0;
this.customFilterTextBox.Text = "?*";
//
// customFilterLabel
//
this.customFilterLabel.Location = new System.Drawing.Point(16, 8);
this.customFilterLabel.Name = "customFilterLabel";
this.customFilterLabel.Size = new System.Drawing.Size(144, 16);
this.customFilterLabel.TabIndex = 1;
this.customFilterLabel.Text = "Enter Custom Filter String:";
//
// okButton
//
this.okButton.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.okButton.Location = new System.Drawing.Point(56, 56);
this.okButton.Name = "okButton";
this.okButton.TabIndex = 2;
this.okButton.Text = "OK";
this.okButton.Click += new System.EventHandler(this.okButton_Click);
//
// CustomFilterForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(184, 78);
this.Controls.Add(this.okButton);
this.Controls.Add(this.customFilterLabel);
this.Controls.Add(this.customFilterTextBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(384, 112);
this.MinimumSize = new System.Drawing.Size(192, 112);
this.Name = "CustomFilterForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Custom Filter";
this.ResumeLayout(false);
}
#endregion
private void okButton_Click(object sender, System.EventArgs e)
{
this.Close();
}
public string CustomFilter
{
get
{
return customFilterTextBox.Text;
}
}
}
}

View File

@ -0,0 +1,338 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.Name">
<value>CustomFilterForm</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="customFilterLabel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="customFilterLabel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="customFilterLabel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="customFilterTextBox.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="customFilterTextBox.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="customFilterTextBox.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="okButton.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>10.0.21006.1</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{63793699-6C64-4519-AD56-9178CACFEA8A}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>FindResources</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.FindResources</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="CustomFilter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="CustomFilter.resx">
<DependentUpon>CustomFilter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FindResources", "FindResources.2010.csproj", "{63793699-6C64-4519-AD56-9178CACFEA8A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{63793699-6C64-4519-AD56-9178CACFEA8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>11.0.50522.1 RCREL</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{63793699-6C64-4519-AD56-9178CACFEA8A}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>FindResources</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.FindResources</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="CustomFilter.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="CustomFilter.resx">
<DependentUpon>CustomFilter.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FindResources", "FindResources.2012.csproj", "{63793699-6C64-4519-AD56-9178CACFEA8A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{63793699-6C64-4519-AD56-9178CACFEA8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{63793699-6C64-4519-AD56-9178CACFEA8A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,342 @@
//==================================================================================================
//
// Title : MainForm.cs
// Purpose : This application shows the user how to use ResourceManager to
// find all of the available resources on their system. In the example,
// they can select between several filters to narrow the list. Public
// property ResourceName contains the resource name selected in tvwResourceTree
//
//==================================================================================================
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Ivi.Visa;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.FindResources
{
/// <summary>
/// This application shows the user how to use ResourceManager to
/// find all of the available resources on their system. In the
/// example, they can select between several filters to narrow the
/// list.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private TreeNode ndGpib;
private TreeNode ndVxi;
private TreeNode ndSerial;
private TreeNode ndPxi;
private TreeNode ndTcpip;
private TreeNode ndUSB;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
private string filter;
private System.Windows.Forms.Button useCustomStringButton;
private System.Windows.Forms.Label filterStringLabel;
private System.Windows.Forms.Button findResourcesButton;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Label availableResourcesLabel;
private System.Windows.Forms.ListBox filterStringsListBox;
private System.Windows.Forms.TreeView resourceTreeView;
public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
ndGpib = new TreeNode("GPIB");
ndVxi = new TreeNode("VXI");
ndSerial = new TreeNode("Serial");
ndPxi = new TreeNode("PXI");
ndTcpip = new TreeNode("TCP/IP");
ndUSB = new TreeNode("USB");
CleanResourceNodes();
PopulateFilterList();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose(bool disposing)
{
if (disposing)
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.availableResourcesLabel = new System.Windows.Forms.Label();
this.resourceTreeView = new System.Windows.Forms.TreeView();
this.findResourcesButton = new System.Windows.Forms.Button();
this.filterStringsListBox = new System.Windows.Forms.ListBox();
this.filterStringLabel = new System.Windows.Forms.Label();
this.clearButton = new System.Windows.Forms.Button();
this.useCustomStringButton = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// availableResourcesLabel
//
this.availableResourcesLabel.Location = new System.Drawing.Point(16, 213);
this.availableResourcesLabel.Name = "availableResourcesLabel";
this.availableResourcesLabel.Size = new System.Drawing.Size(152, 16);
this.availableResourcesLabel.TabIndex = 0;
this.availableResourcesLabel.Text = "Available Resources Found:";
//
// resourceTreeView
//
this.resourceTreeView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.resourceTreeView.Location = new System.Drawing.Point(16, 232);
this.resourceTreeView.Name = "resourceTreeView";
this.resourceTreeView.Size = new System.Drawing.Size(248, 136);
this.resourceTreeView.TabIndex = 5;
//
// findResourcesButton
//
this.findResourcesButton.Location = new System.Drawing.Point(16, 168);
this.findResourcesButton.Name = "findResourcesButton";
this.findResourcesButton.Size = new System.Drawing.Size(130, 23);
this.findResourcesButton.TabIndex = 8;
this.findResourcesButton.Text = "Find Resources";
this.findResourcesButton.Click += new System.EventHandler(this.findResourcesButton_Click);
//
// filterStringsListBox
//
this.filterStringsListBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.filterStringsListBox.Location = new System.Drawing.Point(16, 40);
this.filterStringsListBox.Name = "filterStringsListBox";
this.filterStringsListBox.Size = new System.Drawing.Size(248, 121);
this.filterStringsListBox.TabIndex = 9;
//
// filterStringLabel
//
this.filterStringLabel.Location = new System.Drawing.Point(16, 24);
this.filterStringLabel.Name = "filterStringLabel";
this.filterStringLabel.Size = new System.Drawing.Size(72, 16);
this.filterStringLabel.TabIndex = 10;
this.filterStringLabel.Text = "Filter String:";
//
// clearButton
//
this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.clearButton.Location = new System.Drawing.Point(152, 168);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(112, 24);
this.clearButton.TabIndex = 11;
this.clearButton.Text = "Clear";
this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
//
// useCustomStringButton
//
this.useCustomStringButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.useCustomStringButton.Location = new System.Drawing.Point(152, 8);
this.useCustomStringButton.Name = "useCustomStringButton";
this.useCustomStringButton.Size = new System.Drawing.Size(112, 24);
this.useCustomStringButton.TabIndex = 12;
this.useCustomStringButton.Text = "Use Custom String";
this.useCustomStringButton.Click += new System.EventHandler(this.useCustomStringButton_Click);
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(280, 373);
this.Controls.Add(this.useCustomStringButton);
this.Controls.Add(this.clearButton);
this.Controls.Add(this.filterStringLabel);
this.Controls.Add(this.filterStringsListBox);
this.Controls.Add(this.findResourcesButton);
this.Controls.Add(this.resourceTreeView);
this.Controls.Add(this.availableResourcesLabel);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(288, 400);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Available Resouces List";
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainForm());
}
private void PopulateFilterList()
{
filterStringsListBox.Items.Clear();
filterStringsListBox.Items.Add("?*");
filterStringsListBox.Items.Add("ASRL?*INSTR");
filterStringsListBox.Items.Add("GPIB?*");
filterStringsListBox.Items.Add("GPIB?*INSTR");
filterStringsListBox.Items.Add("GPIB?*INTFC");
filterStringsListBox.Items.Add("PXI?*");
filterStringsListBox.Items.Add("PXI?*BACKPLANE");
filterStringsListBox.Items.Add("PXI?*INSTR");
filterStringsListBox.Items.Add("TCPIP?*");
filterStringsListBox.Items.Add("TCPIP?*INSTR");
filterStringsListBox.Items.Add("TCPIP?*SOCKET");
filterStringsListBox.Items.Add("USB?*");
filterStringsListBox.Items.Add("USB?*INSTR");
filterStringsListBox.Items.Add("USB?*RAW");
filterStringsListBox.Items.Add("VXI?*");
filterStringsListBox.Items.Add("VXI?*BACKPLANE");
filterStringsListBox.Items.Add("VXI?*INSTR");
filterStringsListBox.SelectedIndex = 0;
}
private void AddToResourceTree()
{
if (ndGpib.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndGpib);
if (ndVxi.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndVxi);
if (ndSerial.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndSerial);
if (ndPxi.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndPxi);
if (ndTcpip.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndTcpip);
if (ndUSB.Nodes.Count != 0)
resourceTreeView.Nodes.Add(ndUSB);
}
private void AddToResourceNode(string resourceName, HardwareInterfaceType intType)
{
switch (intType)
{
case HardwareInterfaceType.Gpib:
ndGpib.Nodes.Add(new TreeNode(resourceName));
break;
case HardwareInterfaceType.Vxi:
ndVxi.Nodes.Add(new TreeNode(resourceName));
break;
case HardwareInterfaceType.Serial:
ndSerial.Nodes.Add(new TreeNode(resourceName));
break;
case HardwareInterfaceType.Pxi:
ndPxi.Nodes.Add(new TreeNode(resourceName));
break;
case HardwareInterfaceType.Tcp:
ndTcpip.Nodes.Add(new TreeNode(resourceName));
break;
case HardwareInterfaceType.Usb:
ndUSB.Nodes.Add(new TreeNode(resourceName));
break;
default:
break;
}
}
private void FindResources()
{
// This example uses an instance of the NationalInstruments.Visa.ResourceManager class to find resources on the system.
// Alternatively, static methods provided by the Ivi.Visa.ResourceManager class may be used when an application
// requires additional VISA .NET implementations.
using (var rm = new ResourceManager())
{
try
{
IEnumerable<string> resources = rm.Find(filter);
foreach (string s in resources)
{
ParseResult parseResult = rm.Parse(s);
AddToResourceNode(s, parseResult.InterfaceType);
}
AddToResourceTree();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void CleanResourceNodes()
{
ndGpib.Nodes.Clear();
ndVxi.Nodes.Clear();
ndSerial.Nodes.Clear();
ndPxi.Nodes.Clear();
ndTcpip.Nodes.Clear();
ndUSB.Nodes.Clear();
}
private void findResourcesButton_Click(object sender, System.EventArgs e)
{
filter = filterStringsListBox.Text;
DisplayResources();
}
private string getCustomFilter()
{
CustomFilterForm cff = new CustomFilterForm();
cff.ShowDialog();
return cff.CustomFilter;
}
private void clearButton_Click(object sender, System.EventArgs e)
{
resourceTreeView.Nodes.Clear();
CleanResourceNodes();
}
private void useCustomStringButton_Click(object sender, System.EventArgs e)
{
filter = getCustomFilter();
DisplayResources();
}
private void DisplayResources()
{
resourceTreeView.Nodes.Clear();
CleanResourceNodes();
FindResources();
resourceTreeView.ExpandAll();
}
public string ResourceName
{
get
{
try
{
return resourceTreeView.SelectedNode.Text;
}
catch (Exception)
{
return "";
}
}
}
}
}

View File

@ -0,0 +1,305 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@ -0,0 +1,13 @@
Example Title: Find Resources
Category: NI-VISA
Description: This example demonstrates how to use the NI-VISA .NET
API to find all of the available resources on the system.
In the example, you select between several filters to narrow the list.
Language: Visual C#
Required Software: NI-VISA and drivers for resources such as GPIB
Required Hardware: Any NI-VISA resource such as GPIB, Serial, or PXI

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1,573 @@
//==================================================================================================
//
// Title : MainForm.cs
// Purpose : This application illustrates how to use In/Out/MoveIn/MoveOut on register-based
// sessions.
//
//==================================================================================================
using System;
using System.Windows.Forms;
using Ivi.Visa;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.RegisterBasedOperations
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private PxiSession pxiSession;
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.Button openButton;
private System.Windows.Forms.NumericUpDown[] numOutputArray;
private System.Windows.Forms.Label resourceNameLabel;
private System.Windows.Forms.ComboBox resourceNameComboBox;
private System.Windows.Forms.Label resultLabel;
private System.Windows.Forms.TextBox resultTextBox;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Button moveInButton;
private System.Windows.Forms.Button inButton;
private System.Windows.Forms.Label spaceLabel;
private System.Windows.Forms.Label offsetLabel;
private System.Windows.Forms.Label widthLabel;
private System.Windows.Forms.ComboBox spaceComboBox;
private System.Windows.Forms.NumericUpDown offsetNumericUpDown;
private System.Windows.Forms.ComboBox widthComboBox;
private System.Windows.Forms.NumericUpDown numElementsNumericUpDown;
private System.Windows.Forms.Label numElementsLabel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
SetupUI(false);
PopulateComboBoxes();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
if (pxiSession != null)
{
pxiSession.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.resourceNameLabel = new System.Windows.Forms.Label();
this.offsetNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.numElementsNumericUpDown = new System.Windows.Forms.NumericUpDown();
this.offsetLabel = new System.Windows.Forms.Label();
this.numElementsLabel = new System.Windows.Forms.Label();
this.moveInButton = new System.Windows.Forms.Button();
this.inButton = new System.Windows.Forms.Button();
this.resultTextBox = new System.Windows.Forms.TextBox();
this.resultLabel = new System.Windows.Forms.Label();
this.clearButton = new System.Windows.Forms.Button();
this.spaceComboBox = new System.Windows.Forms.ComboBox();
this.spaceLabel = new System.Windows.Forms.Label();
this.widthLabel = new System.Windows.Forms.Label();
this.widthComboBox = new System.Windows.Forms.ComboBox();
this.resourceNameComboBox = new System.Windows.Forms.ComboBox();
this.closeButton = new System.Windows.Forms.Button();
this.openButton = new System.Windows.Forms.Button();
((System.ComponentModel.ISupportInitialize)(this.offsetNumericUpDown)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.numElementsNumericUpDown)).BeginInit();
this.SuspendLayout();
//
// resourceNameLabel
//
this.resourceNameLabel.Location = new System.Drawing.Point(20, 8);
this.resourceNameLabel.Name = "resourceNameLabel";
this.resourceNameLabel.Size = new System.Drawing.Size(96, 16);
this.resourceNameLabel.TabIndex = 0;
this.resourceNameLabel.Text = "Resource Name:";
//
// offsetNumericUpDown
//
this.offsetNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.offsetNumericUpDown.Hexadecimal = true;
this.offsetNumericUpDown.Location = new System.Drawing.Point(20, 169);
this.offsetNumericUpDown.Maximum = new decimal(new int[] {
65535,
0,
0,
0});
this.offsetNumericUpDown.Name = "offsetNumericUpDown";
this.offsetNumericUpDown.Size = new System.Drawing.Size(137, 20);
this.offsetNumericUpDown.TabIndex = 8;
//
// numElementsNumericUpDown
//
this.numElementsNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.numElementsNumericUpDown.Location = new System.Drawing.Point(174, 169);
this.numElementsNumericUpDown.Name = "numElementsNumericUpDown";
this.numElementsNumericUpDown.Size = new System.Drawing.Size(137, 20);
this.numElementsNumericUpDown.TabIndex = 8;
this.numElementsNumericUpDown.Value = new decimal(new int[] {
1,
0,
0,
0});
//
// offsetLabel
//
this.offsetLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.offsetLabel.Location = new System.Drawing.Point(21, 150);
this.offsetLabel.Name = "offsetLabel";
this.offsetLabel.Size = new System.Drawing.Size(72, 16);
this.offsetLabel.TabIndex = 9;
this.offsetLabel.Text = "Offset:";
//
// numElementsLabel
//
this.numElementsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.numElementsLabel.Location = new System.Drawing.Point(171, 150);
this.numElementsLabel.Name = "numElementsLabel";
this.numElementsLabel.Size = new System.Drawing.Size(112, 16);
this.numElementsLabel.TabIndex = 10;
this.numElementsLabel.Text = "Number of Elements:";
//
// moveInButton
//
this.moveInButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.moveInButton.Location = new System.Drawing.Point(172, 219);
this.moveInButton.Name = "moveInButton";
this.moveInButton.Size = new System.Drawing.Size(139, 24);
this.moveInButton.TabIndex = 11;
this.moveInButton.Text = "Move In";
this.moveInButton.Click += new System.EventHandler(this.moveInButton_Click);
//
// inButton
//
this.inButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.inButton.Location = new System.Drawing.Point(20, 219);
this.inButton.Name = "inButton";
this.inButton.Size = new System.Drawing.Size(128, 24);
this.inButton.TabIndex = 13;
this.inButton.Text = "In";
this.inButton.Click += new System.EventHandler(this.inButton_Click);
//
// resultTextBox
//
this.resultTextBox.AcceptsReturn = true;
this.resultTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.resultTextBox.Location = new System.Drawing.Point(23, 276);
this.resultTextBox.Multiline = true;
this.resultTextBox.Name = "resultTextBox";
this.resultTextBox.ReadOnly = true;
this.resultTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.resultTextBox.Size = new System.Drawing.Size(292, 242);
this.resultTextBox.TabIndex = 17;
//
// resultLabel
//
this.resultLabel.Location = new System.Drawing.Point(20, 257);
this.resultLabel.Name = "resultLabel";
this.resultLabel.Size = new System.Drawing.Size(64, 16);
this.resultLabel.TabIndex = 18;
this.resultLabel.Text = "Result:";
//
// clearButton
//
this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.clearButton.Location = new System.Drawing.Point(235, 522);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(80, 24);
this.clearButton.TabIndex = 24;
this.clearButton.Text = "Clear";
this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
//
// spaceComboBox
//
this.spaceComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.spaceComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.spaceComboBox.Location = new System.Drawing.Point(20, 121);
this.spaceComboBox.Name = "spaceComboBox";
this.spaceComboBox.Size = new System.Drawing.Size(137, 21);
this.spaceComboBox.TabIndex = 25;
//
// spaceLabel
//
this.spaceLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.spaceLabel.Location = new System.Drawing.Point(20, 104);
this.spaceLabel.Name = "spaceLabel";
this.spaceLabel.Size = new System.Drawing.Size(52, 14);
this.spaceLabel.TabIndex = 26;
this.spaceLabel.Text = "Space:";
//
// widthLabel
//
this.widthLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.widthLabel.Location = new System.Drawing.Point(171, 104);
this.widthLabel.Name = "widthLabel";
this.widthLabel.Size = new System.Drawing.Size(40, 16);
this.widthLabel.TabIndex = 27;
this.widthLabel.Text = "Width:";
//
// widthComboBox
//
this.widthComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.widthComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.widthComboBox.Location = new System.Drawing.Point(174, 121);
this.widthComboBox.Name = "widthComboBox";
this.widthComboBox.Size = new System.Drawing.Size(137, 21);
this.widthComboBox.TabIndex = 28;
//
// resourceNameComboBox
//
this.resourceNameComboBox.FormattingEnabled = true;
this.resourceNameComboBox.Location = new System.Drawing.Point(20, 24);
this.resourceNameComboBox.Name = "resourceNameComboBox";
this.resourceNameComboBox.Size = new System.Drawing.Size(291, 21);
this.resourceNameComboBox.TabIndex = 29;
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.closeButton.Location = new System.Drawing.Point(173, 55);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(137, 24);
this.closeButton.TabIndex = 30;
this.closeButton.Text = "Close Session";
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
//
// openButton
//
this.openButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.openButton.Location = new System.Drawing.Point(20, 55);
this.openButton.Name = "openButton";
this.openButton.Size = new System.Drawing.Size(137, 24);
this.openButton.TabIndex = 30;
this.openButton.Text = "Open Session";
this.openButton.Click += new System.EventHandler(this.openButton_Click);
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(327, 558);
this.Controls.Add(this.openButton);
this.Controls.Add(this.closeButton);
this.Controls.Add(this.resourceNameComboBox);
this.Controls.Add(this.widthComboBox);
this.Controls.Add(this.widthLabel);
this.Controls.Add(this.spaceLabel);
this.Controls.Add(this.spaceComboBox);
this.Controls.Add(this.clearButton);
this.Controls.Add(this.resultLabel);
this.Controls.Add(this.resultTextBox);
this.Controls.Add(this.inButton);
this.Controls.Add(this.moveInButton);
this.Controls.Add(this.numElementsLabel);
this.Controls.Add(this.offsetLabel);
this.Controls.Add(this.offsetNumericUpDown);
this.Controls.Add(this.resourceNameLabel);
this.Controls.Add(this.numElementsNumericUpDown);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(300, 440);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Register-Based Operations";
((System.ComponentModel.ISupportInitialize)(this.offsetNumericUpDown)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.numElementsNumericUpDown)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainForm());
}
private void openButton_Click(object sender, System.EventArgs e)
{
if(pxiSession != null)
{
pxiSession.Dispose();
}
try
{
using (var rmSession = new ResourceManager())
{
pxiSession = (PxiSession)rmSession.Open(resourceNameComboBox.Text);
SetupUI(true);
}
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void closeButton_Click(object sender, System.EventArgs e)
{
try
{
if(pxiSession != null)
{
pxiSession.Dispose();
SetupUI(false);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void clearButton_Click(object sender, System.EventArgs e)
{
resultTextBox.Clear();
}
// Performs an "InXX" operation
private void inButton_Click(object sender, System.EventArgs e)
{
try
{
AddressSpace space = (AddressSpace)spaceComboBox.SelectedItem;
int offset = (int)offsetNumericUpDown.Value;
DataWidth width = (DataWidth)widthComboBox.SelectedItem;
switch (width)
{
case DataWidth.Width8:
resultTextBox.AppendText(GetOperationText("In8"));
byte data8 = pxiSession.In8(space, offset);
resultTextBox.AppendText(GetDataText(data8.ToString("x")));
break;
case DataWidth.Width16:
resultTextBox.AppendText(GetOperationText("In16"));
short data16 = pxiSession.In16(space, offset);
resultTextBox.AppendText(GetDataText(data16.ToString("x")));
break;
case DataWidth.Width32:
resultTextBox.AppendText(GetOperationText("In32"));
int data32 = pxiSession.In32(space, offset);
resultTextBox.AppendText(GetDataText(data32.ToString("x")));
break;
case DataWidth.Width64:
resultTextBox.AppendText(GetOperationText("In64"));
long data64 = pxiSession.In64(space, offset);
resultTextBox.AppendText(GetDataText(data64.ToString("x")));
break;
}
}
catch (Exception ex)
{
resultTextBox.AppendText(GetOperationText(ex.Message));
}
ScrollToBottomOfResultTextBox();
}
// Perform a "MoveInXX" operation.
private void moveInButton_Click(object sender, System.EventArgs e)
{
try
{
AddressSpace space = (AddressSpace)spaceComboBox.SelectedItem;
int offset = (int)offsetNumericUpDown.Value;
DataWidth width = (DataWidth)widthComboBox.SelectedItem;
int length = (int)numElementsNumericUpDown.Value;
switch (width)
{
case DataWidth.Width8:
resultTextBox.AppendText(GetOperationText("MoveIn8"));
byte[] data8 = pxiSession.MoveIn8(space, offset, length);
ShowArray(data8);
break;
case DataWidth.Width16:
resultTextBox.AppendText(GetOperationText("MoveIn16"));
short[] data16 = pxiSession.MoveIn16(space, offset, length);
ShowArray(data16);
break;
case DataWidth.Width32:
resultTextBox.AppendText(GetOperationText("MoveIn32"));
int[] data32 = pxiSession.MoveIn32(space, offset, length);
ShowArray(data32);
break;
case DataWidth.Width64:
resultTextBox.AppendText(GetOperationText("MoveIn64"));
long[] data64 = pxiSession.MoveIn64(space, offset, length);
ShowArray(data64);
break;
}
}
catch(Exception ex)
{
resultTextBox.AppendText(GetOperationText(ex.Message));
}
ScrollToBottomOfResultTextBox();
}
private void PopulateComboBoxes()
{
try
{
// This example uses an instance of the NationalInstruments.Visa.ResourceManager class to find resources on the system.
// Alternatively, static methods provided by the Ivi.Visa.ResourceManager class may be used when an application
// requires additional VISA .NET implementations.
using (var rmSession = new ResourceManager())
{
var pxiResources = rmSession.Find("PXI?*INSTR");
foreach (var resource in pxiResources)
{
resourceNameComboBox.Items.Add(resource);
}
// Add PXI specific address spaces only
for (AddressSpace space = AddressSpace.PxiConfiguration; space <= AddressSpace.PxiBar5; ++space)
{
spaceComboBox.Items.Add(space);
}
spaceComboBox.SelectedIndex = 0;
foreach (DataWidth width in Enum.GetValues(typeof(DataWidth)))
{
widthComboBox.Items.Add(width);
}
widthComboBox.SelectedIndex = 0;
}
}
catch (Exception)
{
resourceNameComboBox.Items.Add("No PXI Resource found on the system");
resourceNameComboBox.Enabled = false;
openButton.Enabled = false;
}
resourceNameComboBox.SelectedIndex = 0;
}
private void SetupUI(bool sessionActive)
{
resourceNameComboBox.Enabled = !sessionActive;
openButton.Enabled = !sessionActive;
closeButton.Enabled = sessionActive;
moveInButton.Enabled = sessionActive;
inButton.Enabled = sessionActive;
spaceLabel.Enabled = sessionActive;
spaceComboBox.Enabled = sessionActive;
widthLabel.Enabled = sessionActive;
widthComboBox.Enabled = sessionActive;
offsetLabel.Enabled = sessionActive;
offsetNumericUpDown.Enabled = sessionActive;
numElementsLabel.Enabled = sessionActive;
numElementsNumericUpDown.Enabled = sessionActive;
}
private void ScrollToBottomOfResultTextBox()
{
resultTextBox.SelectAll();
}
private string GetOperationText(string operation)
{
return operation + Environment.NewLine;
}
private string GetDataText(string data)
{
return (string.Format("Data = {0}", data) + Environment.NewLine);
}
private void ShowArray(Array data)
{
int i=0;
foreach(object o in data)
{
string formattedValue = string.Empty;
if(o is byte)
{
formattedValue = ((byte)o).ToString("x");
}
else if(o is short)
{
formattedValue = ((short)o).ToString("x");
}
else if(o is int)
{
formattedValue = ((int)o).ToString("x");
}
else if (o is long)
{
formattedValue = ((long)o).ToString("x");
}
resultTextBox.AppendText(string.Format("Data({0} = {1})", i++, formattedValue) + Environment.NewLine);
}
}
private byte[] BuildByteOutputdata()
{
int numElements = (int)numElementsNumericUpDown.Value;
byte[] od = new byte[numElements];
for (int i = 0; i<numElements; i++)
{
od[i] = (byte)numOutputArray[i].Value;
}
return od;
}
private short[] BuildShortOutputdata()
{
int numElements = (int)numElementsNumericUpDown.Value;
short[] od = new short[numElements];
for (int i = 0; i<numElements; i++)
{
od[i] = (short)numOutputArray[i].Value;
}
return od;
}
private int[] BuildIntOutputdata()
{
int numElements = (int)numElementsNumericUpDown.Value;
int[] od = new int[numElements];
for (int i = 0; i<numElements; i++)
{
od[i] = (int)numOutputArray[i].Value;
}
return od;
}
}
}

View File

@ -0,0 +1,302 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@ -0,0 +1,11 @@
Example Title: Register Based Operations
Category: NI-VISA
Description: This example demonstrates how to use In/MoveIn on a PXI session.
Language: Visual C#
Required Software: NI-VISA
Required Hardware: A PXI Instrument

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>10.0.21006.1</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>RegisterBasedOperations</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.RegisterBasedOperations</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterBasedOperations", "RegisterBasedOperations.2010.csproj", "{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>11.0.50522.1 RCREL</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>RegisterBasedOperations</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.RegisterBasedOperations</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RegisterBasedOperations", "RegisterBasedOperations.2012.csproj", "{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1F69FAC-3E15-40A2-8F02-8D64B0DE1488}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1,457 @@
//==================================================================================================
//
// Title : MainForm.cs
// Purpose : This application illustrates how to use the service request event and
// the service request status byte to determine when generated data is ready
// and how to read it.
//
//==================================================================================================
using System;
using System.Windows.Forms;
using Ivi.Visa;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.ServiceRequest
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private IMessageBasedSession mbSession;
private System.Windows.Forms.ToolTip toolTip;
private System.Windows.Forms.Label selectResourceLabel;
private System.Windows.Forms.GroupBox configuringGroupBox;
private System.Windows.Forms.GroupBox writingGroupBox;
private System.Windows.Forms.GroupBox readingGroupBox;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Label resourceNameLabel;
private System.Windows.Forms.Button openButton;
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.TextBox commandTextBox;
private System.Windows.Forms.Label commandLabel;
private System.Windows.Forms.Button enableSRQButton;
private System.Windows.Forms.TextBox writeTextBox;
private System.Windows.Forms.Button writeButton;
private System.Windows.Forms.TextBox readTextBox;
private System.Windows.Forms.ComboBox resourceNameComboBox;
private System.ComponentModel.IContainer components;
public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
InitializeUI();
toolTip.SetToolTip(enableSRQButton, "Enable the instrument's SRQ event on MAV by sending the following command (varies by instrument):");
toolTip.SetToolTip(writeButton, "Send string to device");
toolTip.SetToolTip(closeButton, "Causes the control to release its handle to the device");
toolTip.SetToolTip(openButton, "The resource name of the device is set and the control attempts to connect to the device");
try
{
// This example uses an instance of the NationalInstruments.Visa.ResourceManager class to find resources on the system.
// Alternatively, static methods provided by the Ivi.Visa.ResourceManager class may be used when an application
// requires additional VISA .NET implementations.
using (var rmSession = new ResourceManager())
{
var validResources = rmSession.Find("(GPIB|TCPIP|USB)?*INSTR");
foreach (var resource in validResources)
{
resourceNameComboBox.Items.Add(resource);
}
}
}
catch (Exception)
{
resourceNameComboBox.Items.Add("No 488.2 INSTR resource found on the system");
updateResourceNameControls(false);
closeButton.Enabled = false;
}
resourceNameComboBox.SelectedIndex = 0;
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
if (mbSession != null)
{
mbSession.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.resourceNameLabel = new System.Windows.Forms.Label();
this.openButton = new System.Windows.Forms.Button();
this.closeButton = new System.Windows.Forms.Button();
this.commandLabel = new System.Windows.Forms.Label();
this.commandTextBox = new System.Windows.Forms.TextBox();
this.enableSRQButton = new System.Windows.Forms.Button();
this.configuringGroupBox = new System.Windows.Forms.GroupBox();
this.resourceNameComboBox = new System.Windows.Forms.ComboBox();
this.selectResourceLabel = new System.Windows.Forms.Label();
this.writingGroupBox = new System.Windows.Forms.GroupBox();
this.writeTextBox = new System.Windows.Forms.TextBox();
this.writeButton = new System.Windows.Forms.Button();
this.readingGroupBox = new System.Windows.Forms.GroupBox();
this.clearButton = new System.Windows.Forms.Button();
this.readTextBox = new System.Windows.Forms.TextBox();
this.toolTip = new System.Windows.Forms.ToolTip(this.components);
this.configuringGroupBox.SuspendLayout();
this.writingGroupBox.SuspendLayout();
this.readingGroupBox.SuspendLayout();
this.SuspendLayout();
//
// resourceNameLabel
//
this.resourceNameLabel.Location = new System.Drawing.Point(16, 80);
this.resourceNameLabel.Name = "resourceNameLabel";
this.resourceNameLabel.Size = new System.Drawing.Size(112, 16);
this.resourceNameLabel.TabIndex = 1;
this.resourceNameLabel.Text = "Resource Name:";
//
// openButton
//
this.openButton.Location = new System.Drawing.Point(16, 128);
this.openButton.Name = "openButton";
this.openButton.Size = new System.Drawing.Size(104, 23);
this.openButton.TabIndex = 2;
this.openButton.Text = "Open Session";
this.openButton.Click += new System.EventHandler(this.openButton_Click);
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.closeButton.Location = new System.Drawing.Point(160, 64);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(104, 23);
this.closeButton.TabIndex = 3;
this.closeButton.Text = "Close Session";
this.closeButton.Click += new System.EventHandler(this.closeButton_Click);
//
// commandLabel
//
this.commandLabel.Location = new System.Drawing.Point(16, 160);
this.commandLabel.Name = "commandLabel";
this.commandLabel.Size = new System.Drawing.Size(256, 32);
this.commandLabel.TabIndex = 4;
this.commandLabel.Text = "Type the command to enable the instrument\'s SRQ event on MAV:";
//
// commandTextBox
//
this.commandTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.commandTextBox.Location = new System.Drawing.Point(16, 200);
this.commandTextBox.Name = "commandTextBox";
this.commandTextBox.Size = new System.Drawing.Size(152, 20);
this.commandTextBox.TabIndex = 5;
this.commandTextBox.Text = "*SRE 16";
//
// enableSRQButton
//
this.enableSRQButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.enableSRQButton.Location = new System.Drawing.Point(168, 200);
this.enableSRQButton.Name = "enableSRQButton";
this.enableSRQButton.Size = new System.Drawing.Size(104, 24);
this.enableSRQButton.TabIndex = 6;
this.enableSRQButton.Text = "Enable SRQ";
this.enableSRQButton.Click += new System.EventHandler(this.enableSRQButton_Click);
//
// configuringGroupBox
//
this.configuringGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.configuringGroupBox.Controls.Add(this.resourceNameComboBox);
this.configuringGroupBox.Controls.Add(this.closeButton);
this.configuringGroupBox.Location = new System.Drawing.Point(8, 64);
this.configuringGroupBox.Name = "configuringGroupBox";
this.configuringGroupBox.Size = new System.Drawing.Size(272, 168);
this.configuringGroupBox.TabIndex = 7;
this.configuringGroupBox.TabStop = false;
this.configuringGroupBox.Text = "Configuring";
//
// resourceNameComboBox
//
this.resourceNameComboBox.FormattingEnabled = true;
this.resourceNameComboBox.Location = new System.Drawing.Point(11, 35);
this.resourceNameComboBox.Name = "resourceNameComboBox";
this.resourceNameComboBox.Size = new System.Drawing.Size(255, 21);
this.resourceNameComboBox.TabIndex = 4;
//
// selectResourceLabel
//
this.selectResourceLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.selectResourceLabel.Location = new System.Drawing.Point(8, 8);
this.selectResourceLabel.Name = "selectResourceLabel";
this.selectResourceLabel.Size = new System.Drawing.Size(272, 56);
this.selectResourceLabel.TabIndex = 8;
this.selectResourceLabel.Text = "Select the Resource Name associated with your device and press the Configure Devi" +
"ce button. Then enter the command string that enables SRQ and click the Enable S" +
"RQ button.";
//
// writingGroupBox
//
this.writingGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.writingGroupBox.Controls.Add(this.writeTextBox);
this.writingGroupBox.Controls.Add(this.writeButton);
this.writingGroupBox.Location = new System.Drawing.Point(8, 240);
this.writingGroupBox.Name = "writingGroupBox";
this.writingGroupBox.Size = new System.Drawing.Size(272, 56);
this.writingGroupBox.TabIndex = 9;
this.writingGroupBox.TabStop = false;
this.writingGroupBox.Text = "Writing";
//
// writeTextBox
//
this.writeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.writeTextBox.Location = new System.Drawing.Point(8, 24);
this.writeTextBox.Name = "writeTextBox";
this.writeTextBox.Size = new System.Drawing.Size(152, 20);
this.writeTextBox.TabIndex = 2;
this.writeTextBox.Text = "*IDN?\\n";
//
// writeButton
//
this.writeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.writeButton.Location = new System.Drawing.Point(160, 24);
this.writeButton.Name = "writeButton";
this.writeButton.Size = new System.Drawing.Size(104, 23);
this.writeButton.TabIndex = 1;
this.writeButton.Text = "Write";
this.writeButton.Click += new System.EventHandler(this.writeButton_Click);
//
// readingGroupBox
//
this.readingGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.readingGroupBox.Controls.Add(this.clearButton);
this.readingGroupBox.Controls.Add(this.readTextBox);
this.readingGroupBox.Location = new System.Drawing.Point(8, 312);
this.readingGroupBox.Name = "readingGroupBox";
this.readingGroupBox.Size = new System.Drawing.Size(272, 120);
this.readingGroupBox.TabIndex = 10;
this.readingGroupBox.TabStop = false;
this.readingGroupBox.Text = "Reading";
//
// clearButton
//
this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.clearButton.Location = new System.Drawing.Point(8, 88);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(104, 23);
this.clearButton.TabIndex = 1;
this.clearButton.Text = "Clear";
this.clearButton.Click += new System.EventHandler(this.clearButton_Click);
//
// readTextBox
//
this.readTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.readTextBox.Location = new System.Drawing.Point(8, 24);
this.readTextBox.Multiline = true;
this.readTextBox.Name = "readTextBox";
this.readTextBox.ReadOnly = true;
this.readTextBox.Size = new System.Drawing.Size(256, 56);
this.readTextBox.TabIndex = 0;
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(288, 448);
this.Controls.Add(this.readingGroupBox);
this.Controls.Add(this.writingGroupBox);
this.Controls.Add(this.selectResourceLabel);
this.Controls.Add(this.enableSRQButton);
this.Controls.Add(this.commandTextBox);
this.Controls.Add(this.commandLabel);
this.Controls.Add(this.openButton);
this.Controls.Add(this.resourceNameLabel);
this.Controls.Add(this.configuringGroupBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(296, 482);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Service Request";
this.configuringGroupBox.ResumeLayout(false);
this.writingGroupBox.ResumeLayout(false);
this.writingGroupBox.PerformLayout();
this.readingGroupBox.ResumeLayout(false);
this.readingGroupBox.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainForm());
}
private void updateResourceNameControls(bool enable)
{
resourceNameComboBox.Enabled = enable;
openButton.Enabled = enable;
closeButton.Enabled = !enable;
if (enable)
openButton.Focus();
}
private void updateSRQControls(bool enable)
{
commandTextBox.Enabled = enable;
enableSRQButton.Enabled = enable;
if (enable)
enableSRQButton.Focus();
}
private void updateWriteControls(bool enable)
{
writeTextBox.Enabled = enable;
writeButton.Enabled = enable;
if (enable)
writeButton.Focus();
}
private void InitializeUI()
{
updateResourceNameControls(true);
updateSRQControls(false);
updateWriteControls(false);
}
// When the Open Session button is pressed, the resource name of the
// device is set and the control attempts to connect to the device
private void openButton_Click(object sender, System.EventArgs e)
{
try
{
using (var rmSession = new ResourceManager())
{
mbSession = (MessageBasedSession)rmSession.Open(resourceNameComboBox.Text);
// Use SynchronizeCallbacks to specify that the object marshals callbacks across threads appropriately.
mbSession.SynchronizeCallbacks = true;
updateResourceNameControls(false);
updateSRQControls(true);
}
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
}
// The Enable SRQ button writes the string that tells the instrument to
// enable the SRQ bit
private void enableSRQButton_Click(object sender, System.EventArgs e)
{
try
{ // Registering a handler for an event automatically enables that event.
mbSession.ServiceRequest += OnServiceRequest;
WriteToSession(commandTextBox.Text);
updateSRQControls(false);
updateWriteControls(true);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
// Pressing Close Session causes the control to release its handle to the device
private void closeButton_Click(object sender, System.EventArgs e)
{
mbSession.ServiceRequest -= OnServiceRequest;
mbSession.Dispose();
InitializeUI();
}
// Clicking the Write Button causes the Send String to be written to the device
private void writeButton_Click(object sender, System.EventArgs e)
{
WriteToSession(writeTextBox.Text);
}
// Pressing the Clear button clears the read textbox
private void clearButton_Click(object sender, System.EventArgs e)
{
readTextBox.Clear();
}
private string ReplaceCommonEscapeSequences(string s)
{
return s.Replace("\\n", "\n").Replace("\\r", "\r");
}
private string InsertCommonEscapeSequences(string s)
{
return s.Replace("\n", "\\n").Replace("\r", "\\r");
}
private void WriteToSession(string txtWrite)
{
try
{
string textToWrite = ReplaceCommonEscapeSequences(txtWrite);
mbSession.RawIO.Write(textToWrite);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void OnServiceRequest(object sender, VisaEventArgs e)
{
try
{
var mbs = (MessageBasedSession)sender;
StatusByteFlags sb = mbs.ReadStatusByte();
if ((sb & StatusByteFlags.MessageAvailable) != 0)
{
string textRead = mbs.RawIO.ReadString();
readTextBox.Text = InsertCommonEscapeSequences(textRead);
}
else
{
MessageBox.Show("MAV in status register is not set, which means that message is not available. Make sure the command to enable SRQ is correct, and the instrument is 488.2 compatible.");
}
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
}
}

View File

@ -0,0 +1,353 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="resourceNameLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="openButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="closeButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="commandLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="commandTextBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="enableSRQButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="configuringGroupBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="selectResourceLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="writingGroupBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="writeTextBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="writeButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="readingGroupBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="clearButton.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="readTextBox.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>33</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAhH1yTUQhaFgcmHlD3reN0q9zp41AvaNt89en38KSpIVUzK16/OSt0bd9mYNFqZZUz759pI5c
blowRzkZhH5rAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa19GWD8Pi3ImnIcoxa5d79mWuqNSrZs+uKJk2MCK4seU
yqt73LyM5seVwqVuqI9SsZta3siE4s6NqpBTgGw5UEIfU04zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATkolbVgWp4I4q4ZE
sZxdyb6KuKt9rJhfvaZcuaFZuZ5ZxqdmzqtvyqRrw5xjw5xiu5dZuplWw6Jc4cJ6yapklXw9n41XbWE3
S0QoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAVkwvaFoUqY46poBOjGhddWRtXVdmSz9NZ0tKo4Flxa5yz7p538WI4sSKyqhwvJdi0q15
4LuHzalzvpxis5NOuptUp4tGqZFRwKx0dmg8SkAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY1dAc1YeqI9BmH1JY0VSQSVnMSB5JRd0NyF3KwtK
NRcvj4Rgtq176t+s1MaRuadyval05tCd59Cgvqh44MmYw6purJFOtppSrI9Ft5xTx69whXJBV0wuAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg3tsVkMho345
mXxHZE1MPCdsOCGMMRqPNxyUMhWJPCSEKRxQODEhp6B+49uzzMKTuax5wrN84NCZ5dOgr55tzbqL48+a
s55huZ1Wu5pLtZNArY9Dpo1PaVoxe3RiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAOi8ZiHNIu5ZZh2tgRC9lMR+LLBaMLhB1MA1vNxiIIx+EKzNzJBMghm1o9NnG
3sKiyayG1LWK38KW9tmuw6N7x6mC7tqtvapzu6Bcvp1NwJtDsY85pok/k39NSD0fAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3BZbFspp45Kv6BnaUtyOxt9MRmMKxx6
HRE8SjFRQyl1Jx2HLi99KCZHT0ZE6ti85Maf0K2J3L2cz7mU6taq2L+Uza+H8d2uxKx6up9qwaNmvZ1T
uptHrpA/ln09clw0bFxKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
S0IgmYREu59StZhoWz17NRKENRyJJx5pJyExr5qaY0yEJBV/Ni+HOkFtJyouv7SZ2sGa17mZ28SpzcCd
z8SZ28me582k6dCix66AvKN2vqNwup1duJhKtJVBpIk7lH4/WkgcAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAf3xnYFMop45Jw6ZcoIVkTDF2MROBOSWHJh9bSEFFyLSqeGCMLh1/
MSiESE+EHR8tn5qL386z38uz2Mu11s+wzcehzr+Z0LeVzreMw6+Bv6t8vKZxvKFjv59Vt5ZEqY02qJI7
cGIZgHtgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFEygXE7tZlOyalliW9f
PyVzLxaCOy2BIR1HamJZzrqkm4WhMR13LyKCT1SRICQ9hoZ/49rG39TB2dK+1dO21tOu1cim1sCkzbuU
yLmMwrWCvKx0vKVmvqBbvJhOs5A9rpI4lH8pXFQwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAARTgVnopItZVFtpVZdVxjOR94LxyEOTJ1HRovnJF528iktZ2nPCZzMCGEXFueKSxKa2xr
6OPR4tvG493H5OHC3ti228uz2sG00r+tx7ufvreNvLV/vK5wvKJhwp5bt41FuJBBp4Y6VUgjAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXUwcpo9DsZA+ro1baVJrNBl6LR2DOzlwKCQq
uKmJ4M6hwqymTDR3MSCFX1mePTtbWllX7+nU7OHH6uHC6uG+5tu94M3AzLC6poymlIGUkYiDhoFlp55u
uqZpvZ9bupFIu49EsotFXU0noZ+UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbFkd
p488tZRArIxjWkVtNRmBLyKGLC5aNzEswq+K0b+OwqyaVT11Lh2DWlCXT0prQz87186z69y52Mih08Se
1sSuxq62c1R+RyVzQyd0STlsTkVZRT4un5NhuaRcvZ1LupI/sYo/Z1Yscm1YAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAjoByemYmppA4uJpIqIppSTZpNxqFMieKJihPUkg90LeT1cKP0r2hYkt6
KhqBVkuUZmGBOjUvtaqJ3suh3Meb482qxK6nemOFQiVwPRuINxiLMx6DTkGIRj5YTkUrtqlnv6ZOuJc8
uJRDcF4waGJKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbVpLdGEdmoYrtJhJn4JpQzBr
NxmHMSaIIiRJZllN2rya4s6c3suoa1Z/JheATEORdXOWPDoyqJ5528eY3cOW69O0r5mhQCtlOiOGMhuC
LhiIMh6XNCWPVUuLNCwthntKwatZsZI8poI3alcobWdLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAcV1Qc2Ebm4crtpxOlnxmQCxtNhiFNyyLGBo7gnNk3b2c2cSU2Mage2iLJxqCQDuNh4euKikl
oJZy28aX4MSZ6tG8iHWONCJyKxuIUEiRMCl5HxKFJxeTQzSUT0RmPC8buKRoqYtIpIBHbFozcWtSAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkIR5eGQdrZM5tJdKi3FgOyV3NCGBPjaCFxYunJJ6
1byS1b2P18Shi3mZLxuAQjaLkI+3IiIfo5l5486i1L6ay7e7XkmGNB17OyaBfHemJyhOLyZ2KxWPNh+Q
V0eBJRcknY5yn45fkHlTU0ZBSkZPqqq1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn5iNcFsb
rZE8sZJIf2RbNh1+MSV+QDp7GhcnoJp70r6N38aY3syqiniTOB9/OimFioW3NzY+qJ2K+OTF4sy4r527
Mx53MxmDYkqZbWSFUVNXVk98MRiDNRyLT0WAIxw8TD5WWURcTzJaOCBnKxlnJBZYMCVZSENjmpioAAAA
AAAAAAAAAAAAAAAAAAAAAAAAu7SqW0QYqpBAvKJbblNXMRp/LiN+ODJwJCEtrqeH3MmY4cmb5tWwoJCk
OiN8LhyBfHi2R0ZakYV8++bT8tvYkX2qJxR0NB+Jf2u4UkJVh4RwenKFOiF/MhmJODFxKyZbMR1sPBqD
QBiLQB2SOxyPPB6KOR5/OSNzMSJeQjpfAAAAAAAAAAAAAAAAAAAAAAAA087FUDcdoIhBrphbX0VaLRiB
NCiFLidhLCkuqqGA07+Q38mZ39CnsKKtQSx5KBiAbmuwU1Zra2NZ8d3M3cTPX0uGKBp6OzGOhHmyUT45
sat8jYR+QCZ3OBiWMSGDLB97NR2ROBeWOhyJMBxtRzOCPCKBQiOPPByLQCOHNSBrUkpuAAAAAAAAW0l/
QDNxLixOhYKAbVRIfmovnoteUjhiKxaEPC+MKCBTTUhEwreUv6l7y7aBzL2Pq52cTzt3JRZ+UlKXZm99
QkMv1ca0qJCsPyt2Jx97U1SWXV9yeGJP2MmUy8Ckc1mKOhaFOBqMMRaDMRh6PChxKCE8RkpNAAAAr6fI
bFyaSzGJPSR9Qy53g3idAAAAAAAAOyNpNiR1FxNBU1FXqJqWZVQljn5jRi1pKhaFNyiEIBZBbWZXx7iR
wKl60b2D39Ce0MG2ZU9+JBB+PTqJeoOXMTQquq6odVmQMhp8Jx5+a3GfQ0dDu6KO5c6n5tawuKSjX0Fz
RiZtRilrTjliYVRgQT4rfIBzAAAAAAAA6ObxsqvHlIuvycTWAAAAAAAAAAAAOyBxOSSBHhhUQT9T0szK
UEMoaltcQit4JxSDLRx0IRUzj4Zpw7GFwqh5zbh7zLyD4M23fmaHJwt9NSeLenqtMDBCYlJwUTCNLhGM
QjWYZGKGXFpI59Gzv6SB28aV0cCMpItyqImHmoF3nY1wgnVTST0kAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAARSqANyKEIRpfJSJD8O7vgnttMCI6PCaAKheDLxttGQsdoZRr1cCOup1ty7Z0xrN25M6u
qI2cNBR4MRqLVkuiTEGAKRRZPh6NNBmTYFGlSkBYq52F4dGdtqBv69SZx7BnwaRqzq1+sZlbnY5LY1Mn
joJ1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUjmPNSGEJyFrEg46z83P3drYOClYMh+BKxmB
JBBbIBEXtqZx5cyVvJtqx69qw65u2sGa1bm1UDR0MxqDLRiLOSaMPCSENx6GQjKLXVaCWUtK4siq0cKG
vapv5s2JyKlb2a5xvJRXm4EygnMsU0QiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY02c
MiB/KSJxDQk/iYiI+Pj6aVmXNSOKLx6CHAhMLyEerZxg0rd7v55pwKdfwapo2L2S79K8gGt9OyNxNB2Q
MhyPNCCAOi16VlV/VVhUopRz786p2L6W07qIyaxhupdBvpBOrIE/oIQ3U0MPlYt9AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAg3qkOSZ8MB5+HQ9XX15o9/f5WU2KNCCHMiCAFQY8WUhCz7p9r5NJ
vJpTwqNbvaBj0raI582rs5qRdVx3QixlOihnPS5kZ16AhoCHnJR5taBw17N+2rSCyaRnvpxIs5E2rYg8
oYFBYk0cd25VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARDF9MROCJA1pFxc3
k5KmPzF5LxaBLhpxEwYsY1JK2cOJsphHt5RDxqBcy6lvtZlmtJtovZ5qt5ttqpRzi3pmjX1uo5SAr5t8
t5trwqBhwZpRwZZKt48+pYQspYkzlnw1XEgbWks0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAATjyCORuFLBF4CgI/JBxXNiGAMheEMR5lFQwjQTElrpxowKditZVO79OV5seO0rV8
z7R1uZ1Lup9RsptYs55nval5x7GCzbN+zq5uwJxTvpdIs5I9rpA6noQzln06Y0wjZ1VAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmYy8PiSCMhWBIgtuKhV3OR+PNh2CJxdJ
dWt6ioB0Sz0WkHxKpotW1LWD48WQsZNX28CA5MyRtptlwql458+h38mctp9x18GM9+GlwKhkpI1DppE9
mYY2gW4vTjwThXhnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAX0yQOB58MxeCOR+KOSGIMSBuTkZiAAAAAAAAAAAAWU00U0Ahc106tpxyr5ZguqBn996u2LiL0rCC
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@ -0,0 +1,13 @@
Example Title: Service Request
Category: NI-VISA
Description: This example demonstrates how to use the service request event and
the service request status byte to determine when generated data is ready
and how to read it.
Language: Visual C#
Required Software: NI-VISA
Required Hardware: GPIB Instrument

View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>10.0.21006.1</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>ServiceRequest</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.ServiceRequest</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG;NETFX2_0;NETFX3_5;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX2_0;NETFX3_5;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceRequest", "ServiceRequest.2010.csproj", "{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>11.0.50522.1 RCREL</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>ServiceRequest</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.ServiceRequest</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG;NETFX2_0;NETFX3_5;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX2_0;NETFX3_5;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceRequest", "ServiceRequest.2012.csproj", "{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E318495-ADD7-4B3C-927B-A8E38E77FCEE}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1,430 @@
using System;
using System.Windows.Forms;
using Ivi.Visa;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.SimpleAsynchronousReadWrite
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private MessageBasedSession mbSession;
private string lastResourceString = null;
private IVisaAsyncResult asyncHandle = null;
private System.Windows.Forms.TextBox writeTextBox;
private System.Windows.Forms.TextBox readTextBox;
private System.Windows.Forms.Button writeButton;
private System.Windows.Forms.Button readButton;
private System.Windows.Forms.Button openSessionButton;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Button closeSessionButton;
private System.Windows.Forms.Label stringToWriteLabel;
private System.Windows.Forms.Label stringToReadLabel;
private System.Windows.Forms.Button terminateButton;
private System.Windows.Forms.Label elementsTransferredLabel;
private System.Windows.Forms.TextBox elementsTransferredTextBox;
private System.Windows.Forms.TextBox lastIOStatusTextBox;
private System.Windows.Forms.Label lastIOStatusLabel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
SetupControlState(false);
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(mbSession != null)
{
mbSession.Dispose();
}
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.writeButton = new System.Windows.Forms.Button();
this.readButton = new System.Windows.Forms.Button();
this.openSessionButton = new System.Windows.Forms.Button();
this.writeTextBox = new System.Windows.Forms.TextBox();
this.readTextBox = new System.Windows.Forms.TextBox();
this.clearButton = new System.Windows.Forms.Button();
this.closeSessionButton = new System.Windows.Forms.Button();
this.stringToWriteLabel = new System.Windows.Forms.Label();
this.stringToReadLabel = new System.Windows.Forms.Label();
this.terminateButton = new System.Windows.Forms.Button();
this.elementsTransferredLabel = new System.Windows.Forms.Label();
this.elementsTransferredTextBox = new System.Windows.Forms.TextBox();
this.lastIOStatusTextBox = new System.Windows.Forms.TextBox();
this.lastIOStatusLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// writeButton
//
this.writeButton.Location = new System.Drawing.Point(5, 83);
this.writeButton.Name = "writeButton";
this.writeButton.Size = new System.Drawing.Size(74, 23);
this.writeButton.TabIndex = 3;
this.writeButton.Text = "Write";
this.writeButton.Click += new System.EventHandler(this.write_Click);
//
// readButton
//
this.readButton.Location = new System.Drawing.Point(79, 83);
this.readButton.Name = "readButton";
this.readButton.Size = new System.Drawing.Size(74, 23);
this.readButton.TabIndex = 4;
this.readButton.Text = "Read";
this.readButton.Click += new System.EventHandler(this.read_Click);
//
// openSessionButton
//
this.openSessionButton.Location = new System.Drawing.Point(5, 5);
this.openSessionButton.Name = "openSessionButton";
this.openSessionButton.Size = new System.Drawing.Size(92, 22);
this.openSessionButton.TabIndex = 0;
this.openSessionButton.Text = "Open Session";
this.openSessionButton.Click += new System.EventHandler(this.openSession_Click);
//
// writeTextBox
//
this.writeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.writeTextBox.Location = new System.Drawing.Point(5, 54);
this.writeTextBox.Name = "writeTextBox";
this.writeTextBox.Size = new System.Drawing.Size(275, 20);
this.writeTextBox.TabIndex = 2;
this.writeTextBox.Text = "*IDN?\\n";
//
// readTextBox
//
this.readTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.readTextBox.Location = new System.Drawing.Point(5, 136);
this.readTextBox.Multiline = true;
this.readTextBox.Name = "readTextBox";
this.readTextBox.ReadOnly = true;
this.readTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.readTextBox.Size = new System.Drawing.Size(275, 158);
this.readTextBox.TabIndex = 6;
this.readTextBox.TabStop = false;
//
// clearButton
//
this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.clearButton.Location = new System.Drawing.Point(6, 344);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(275, 24);
this.clearButton.TabIndex = 6;
this.clearButton.Text = "Clear";
this.clearButton.Click += new System.EventHandler(this.clear_Click);
//
// closeSessionButton
//
this.closeSessionButton.Location = new System.Drawing.Point(97, 5);
this.closeSessionButton.Name = "closeSessionButton";
this.closeSessionButton.Size = new System.Drawing.Size(92, 22);
this.closeSessionButton.TabIndex = 1;
this.closeSessionButton.Text = "Close Session";
this.closeSessionButton.Click += new System.EventHandler(this.closeSession_Click);
//
// stringToWriteLabel
//
this.stringToWriteLabel.Location = new System.Drawing.Point(5, 40);
this.stringToWriteLabel.Name = "stringToWriteLabel";
this.stringToWriteLabel.Size = new System.Drawing.Size(91, 14);
this.stringToWriteLabel.TabIndex = 8;
this.stringToWriteLabel.Text = "String to Write:";
//
// stringToReadLabel
//
this.stringToReadLabel.Location = new System.Drawing.Point(5, 122);
this.stringToReadLabel.Name = "stringToReadLabel";
this.stringToReadLabel.Size = new System.Drawing.Size(101, 14);
this.stringToReadLabel.TabIndex = 9;
this.stringToReadLabel.Text = "String Read:";
//
// terminateButton
//
this.terminateButton.Enabled = false;
this.terminateButton.Location = new System.Drawing.Point(205, 83);
this.terminateButton.Name = "terminateButton";
this.terminateButton.Size = new System.Drawing.Size(74, 23);
this.terminateButton.TabIndex = 5;
this.terminateButton.Text = "Terminate";
this.terminateButton.Click += new System.EventHandler(this.terminate_Click);
//
// elementsTransferredLabel
//
this.elementsTransferredLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.elementsTransferredLabel.Location = new System.Drawing.Point(5, 308);
this.elementsTransferredLabel.Name = "elementsTransferredLabel";
this.elementsTransferredLabel.Size = new System.Drawing.Size(116, 11);
this.elementsTransferredLabel.TabIndex = 11;
this.elementsTransferredLabel.Text = "Elements Transferred:";
//
// elementsTransferredTextBox
//
this.elementsTransferredTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.elementsTransferredTextBox.Location = new System.Drawing.Point(5, 321);
this.elementsTransferredTextBox.Name = "elementsTransferredTextBox";
this.elementsTransferredTextBox.ReadOnly = true;
this.elementsTransferredTextBox.Size = new System.Drawing.Size(104, 20);
this.elementsTransferredTextBox.TabIndex = 12;
this.elementsTransferredTextBox.TabStop = false;
//
// lastIOStatusTextBox
//
this.lastIOStatusTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lastIOStatusTextBox.Location = new System.Drawing.Point(113, 321);
this.lastIOStatusTextBox.Name = "lastIOStatusTextBox";
this.lastIOStatusTextBox.ReadOnly = true;
this.lastIOStatusTextBox.Size = new System.Drawing.Size(168, 20);
this.lastIOStatusTextBox.TabIndex = 14;
this.lastIOStatusTextBox.TabStop = false;
//
// lastIOStatusLabel
//
this.lastIOStatusLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lastIOStatusLabel.Location = new System.Drawing.Point(113, 308);
this.lastIOStatusLabel.Name = "lastIOStatusLabel";
this.lastIOStatusLabel.Size = new System.Drawing.Size(116, 11);
this.lastIOStatusLabel.TabIndex = 13;
this.lastIOStatusLabel.Text = "Last I/O Status:";
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(287, 376);
this.Controls.Add(this.lastIOStatusTextBox);
this.Controls.Add(this.elementsTransferredTextBox);
this.Controls.Add(this.readTextBox);
this.Controls.Add(this.writeTextBox);
this.Controls.Add(this.lastIOStatusLabel);
this.Controls.Add(this.elementsTransferredLabel);
this.Controls.Add(this.terminateButton);
this.Controls.Add(this.stringToReadLabel);
this.Controls.Add(this.stringToWriteLabel);
this.Controls.Add(this.closeSessionButton);
this.Controls.Add(this.clearButton);
this.Controls.Add(this.openSessionButton);
this.Controls.Add(this.readButton);
this.Controls.Add(this.writeButton);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(295, 316);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Simple Asynchronous Read/Write";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainForm());
}
private void openSession_Click(object sender, System.EventArgs e)
{
using (SelectResource sr = new SelectResource())
{
if(lastResourceString != null)
{
sr.ResourceName = lastResourceString;
}
DialogResult result = sr.ShowDialog(this);
if(result == DialogResult.OK)
{
lastResourceString = sr.ResourceName;
Cursor.Current = Cursors.WaitCursor;
try
{
using (var rmSession = new ResourceManager())
{
mbSession = (MessageBasedSession)rmSession.Open(sr.ResourceName);
// Use SynchronizeCallbacks to specify that the object marshals callbacks across threads appropriately.
mbSession.SynchronizeCallbacks = true;
SetupControlState(true);
}
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
}
private void closeSession_Click(object sender, System.EventArgs e)
{
SetupControlState(false);
mbSession.Dispose();
}
private void write_Click(object sender, System.EventArgs e)
{
try
{
SetupWaitingControlState(true);
string textToWrite = ReplaceCommonEscapeSequences(writeTextBox.Text);
asyncHandle = mbSession.RawIO.BeginWrite(
textToWrite,
new VisaAsyncCallback(OnWriteComplete),
(object)textToWrite.Length);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void read_Click(object sender, System.EventArgs e)
{
try
{
SetupWaitingControlState(true);
asyncHandle = mbSession.RawIO.BeginRead(
1024,
new VisaAsyncCallback(OnReadComplete),
null);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void clear_Click(object sender, System.EventArgs e)
{
ClearControls();
}
private void terminate_Click(object sender, System.EventArgs e)
{
SetupWaitingControlState(false);
try
{
mbSession.RawIO.AbortAsyncOperation(asyncHandle);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void OnWriteComplete(IVisaAsyncResult result)
{
try
{
SetupWaitingControlState(false);
mbSession.RawIO.EndWrite(result);
lastIOStatusTextBox.Text = "Success";
}
catch(Exception exp)
{
lastIOStatusTextBox.Text = exp.Message;
}
elementsTransferredTextBox.Text = ((int)result.Count).ToString();
}
private void OnReadComplete(IVisaAsyncResult result)
{
try
{
SetupWaitingControlState(false);
string responseString = mbSession.RawIO.EndReadString(result);
readTextBox.Text = InsertCommonEscapeSequences(responseString);
lastIOStatusTextBox.Text = "Success";
}
catch(Exception exp)
{
lastIOStatusTextBox.Text = exp.Message;
}
elementsTransferredTextBox.Text = ((int)result.Count).ToString();
}
private void SetupControlState(bool isSessionOpen)
{
openSessionButton.Enabled = !isSessionOpen;
closeSessionButton.Enabled = isSessionOpen;
writeButton.Enabled = isSessionOpen;
readButton.Enabled = isSessionOpen;
writeTextBox.Enabled = isSessionOpen;
clearButton.Enabled = isSessionOpen;
if(isSessionOpen)
{
ClearControls();
writeTextBox.Focus();
}
}
private void SetupWaitingControlState(bool operationIsInProgress)
{
if (operationIsInProgress)
{
readTextBox.Text = String.Empty;
elementsTransferredTextBox.Text = String.Empty;
lastIOStatusTextBox.Text = String.Empty;
}
terminateButton.Enabled = operationIsInProgress;
writeButton.Enabled = !operationIsInProgress;
readButton.Enabled = !operationIsInProgress;
}
private string ReplaceCommonEscapeSequences(string s)
{
return (s != null) ? s.Replace("\\n", "\n").Replace("\\r", "\r") : s;
}
private string InsertCommonEscapeSequences(string s)
{
return (s != null) ? s.Replace("\n", "\\n").Replace("\r", "\\r") : s;
}
private void ClearControls()
{
readTextBox.Text = String.Empty;
lastIOStatusTextBox.Text = String.Empty;
elementsTransferredTextBox.Text = String.Empty;
}
}
}

View File

@ -0,0 +1,317 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="stringToWriteLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="stringToReadLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="elementsTransferredLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="lastIOStatusLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@ -0,0 +1,15 @@
Example Title: Simple Asynchronous Read/Write
Category: NI-VISA
Description: This example demonstrates how to use the NI-VISA .NET Library to
perform simple asynchronous operations. With asynchronous
operations, you first call a method to start the operation. You then
call a second method to complete the operation. The first method
returns a handle that you can use to check the progress of the operation.
Language: Visual C#
Required Software: NI-VISA
Required Hardware: Any message-based device

View File

@ -0,0 +1,189 @@
using System.Windows.Forms;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.SimpleAsynchronousReadWrite
{
/// <summary>
/// Summary description for SelectResource.
/// </summary>
public class SelectResource : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox availableResourcesListBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.TextBox visaResourceNameTextBox;
private System.Windows.Forms.Label AvailableResourcesLabel;
private System.Windows.Forms.Label ResourceStringLabel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public SelectResource()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SelectResource));
this.availableResourcesListBox = new System.Windows.Forms.ListBox();
this.okButton = new System.Windows.Forms.Button();
this.closeButton = new System.Windows.Forms.Button();
this.visaResourceNameTextBox = new System.Windows.Forms.TextBox();
this.AvailableResourcesLabel = new System.Windows.Forms.Label();
this.ResourceStringLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// availableResourcesListBox
//
this.availableResourcesListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.availableResourcesListBox.Location = new System.Drawing.Point(5, 18);
this.availableResourcesListBox.Name = "availableResourcesListBox";
this.availableResourcesListBox.Size = new System.Drawing.Size(282, 108);
this.availableResourcesListBox.TabIndex = 0;
this.availableResourcesListBox.DoubleClick += new System.EventHandler(this.availableResourcesListBox_DoubleClick);
this.availableResourcesListBox.SelectedIndexChanged += new System.EventHandler(this.availableResourcesListBox_SelectedIndexChanged);
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.okButton.Location = new System.Drawing.Point(5, 187);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(77, 25);
this.okButton.TabIndex = 2;
this.okButton.Text = "OK";
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.closeButton.Location = new System.Drawing.Point(82, 187);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(77, 25);
this.closeButton.TabIndex = 3;
this.closeButton.Text = "Cancel";
//
// visaResourceNameTextBox
//
this.visaResourceNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.visaResourceNameTextBox.Location = new System.Drawing.Point(5, 157);
this.visaResourceNameTextBox.Name = "visaResourceNameTextBox";
this.visaResourceNameTextBox.Size = new System.Drawing.Size(282, 20);
this.visaResourceNameTextBox.TabIndex = 4;
this.visaResourceNameTextBox.Text = "GPIB0::2::INSTR";
//
// AvailableResourcesLabel
//
this.AvailableResourcesLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.AvailableResourcesLabel.Location = new System.Drawing.Point(5, 5);
this.AvailableResourcesLabel.Name = "AvailableResourcesLabel";
this.AvailableResourcesLabel.Size = new System.Drawing.Size(279, 12);
this.AvailableResourcesLabel.TabIndex = 5;
this.AvailableResourcesLabel.Text = "Available Resources:";
//
// ResourceStringLabel
//
this.ResourceStringLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ResourceStringLabel.Location = new System.Drawing.Point(5, 141);
this.ResourceStringLabel.Name = "ResourceStringLabel";
this.ResourceStringLabel.Size = new System.Drawing.Size(279, 13);
this.ResourceStringLabel.TabIndex = 6;
this.ResourceStringLabel.Text = "Resource String:";
//
// SelectResource
//
this.AcceptButton = this.okButton;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.closeButton;
this.ClientSize = new System.Drawing.Size(292, 220);
this.Controls.Add(this.ResourceStringLabel);
this.Controls.Add(this.AvailableResourcesLabel);
this.Controls.Add(this.visaResourceNameTextBox);
this.Controls.Add(this.closeButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.availableResourcesListBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(177, 247);
this.Name = "SelectResource";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Select Resource";
this.Load += new System.EventHandler(this.OnLoad);
this.ResumeLayout(false);
}
#endregion
private void OnLoad(object sender, System.EventArgs e)
{
// This example uses an instance of the NationalInstruments.Visa.ResourceManager class to find resources on the system.
// Alternatively, static methods provided by the Ivi.Visa.ResourceManager class may be used when an application
// requires additional VISA .NET implementations.
using (var rmSession = new ResourceManager())
{
foreach (string s in rmSession.Find("(ASRL|GPIB|TCPIP|USB)?*INSTR"))
{
availableResourcesListBox.Items.Add(s);
}
}
}
private void availableResourcesListBox_DoubleClick(object sender, System.EventArgs e)
{
string selectedString = (string)availableResourcesListBox.SelectedItem;
ResourceName = selectedString;
this.DialogResult = DialogResult.OK;
this.Close();
}
private void availableResourcesListBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
string selectedString = (string)availableResourcesListBox.SelectedItem;
ResourceName = selectedString;
}
public string ResourceName
{
get
{
return visaResourceNameTextBox.Text;
}
set
{
visaResourceNameTextBox.Text = value;
}
}
}
}

View File

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Name">
<value>SelectResource</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="availableResourcesListBox.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="availableResourcesListBox.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="availableResourcesListBox.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="AvailableResourcesLabel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="AvailableResourcesLabel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="AvailableResourcesLabel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelButton.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelButton.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cancelButton.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="okButton.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="ResourceStringLabel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="ResourceStringLabel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="ResourceStringLabel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="visaResourceNameTextBox.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="visaResourceNameTextBox.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="visaResourceNameTextBox.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>10.0.21006.1</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B8E8C039-E317-4A83-94BA-BC85DA03F880}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>SimpleAsynchronousReadWrite</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.SimpleAsynchronousReadWrite</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG;NETFX2_0;NETFX3_5;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX2_0;NETFX3_5;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SelectResource.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SelectResource.resx">
<DependentUpon>SelectResource.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleAsynchronousReadWrite", "SimpleAsynchronousReadWrite.2010.csproj", "{B8E8C039-E317-4A83-94BA-BC85DA03F880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>11.0.50522.1 RCREL</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B8E8C039-E317-4A83-94BA-BC85DA03F880}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>SimpleAsynchronousReadWrite</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.SimpleAsynchronousReadWrite</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;DEBUG;NETFX2_0;NETFX3_5;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX2_0;NETFX3_5;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SelectResource.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SelectResource.resx">
<DependentUpon>SelectResource.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleAsynchronousReadWrite", "SimpleAsynchronousReadWrite.2012.csproj", "{B8E8C039-E317-4A83-94BA-BC85DA03F880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,58 @@
using System.Reflection;
using System.Runtime.CompilerServices;
//
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
//
[assembly: AssemblyTitle("")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
//
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.*")]
//
// In order to sign your assembly you must specify a key to use. Refer to the
// Microsoft .NET Framework documentation for more information on assembly signing.
//
// Use the attributes below to control which key is used for signing.
//
// Notes:
// (*) If no key is specified, the assembly is not signed.
// (*) KeyName refers to a key that has been installed in the Crypto Service
// Provider (CSP) on your machine. KeyFile refers to a file which contains
// a key.
// (*) If the KeyFile and the KeyName values are both specified, the
// following processing occurs:
// (1) If the KeyName can be found in the CSP, that key is used.
// (2) If the KeyName does not exist and the KeyFile does exist, the key
// in the KeyFile is installed into the CSP and used.
// (*) In order to create a KeyFile, you can use the sn.exe (Strong Name) utility.
// When specifying the KeyFile, the location of the KeyFile should be
// relative to the project output directory which is
// %Project Directory%\obj\<configuration>. For example, if your KeyFile is
// located in the project directory, you would specify the AssemblyKeyFile
// attribute as [assembly: AssemblyKeyFile("..\\..\\mykey.snk")]
// (*) Delay Signing is an advanced option - see the Microsoft .NET Framework
// documentation for more information on this.
//
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("")]
[assembly: AssemblyKeyName("")]

View File

@ -0,0 +1,333 @@
using System;
using System.Windows.Forms;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.SimpleReadWrite
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class MainForm : System.Windows.Forms.Form
{
private MessageBasedSession mbSession;
private string lastResourceString = null;
private System.Windows.Forms.TextBox writeTextBox;
private System.Windows.Forms.TextBox readTextBox;
private System.Windows.Forms.Button queryButton;
private System.Windows.Forms.Button writeButton;
private System.Windows.Forms.Button readButton;
private System.Windows.Forms.Button openSessionButton;
private System.Windows.Forms.Button clearButton;
private System.Windows.Forms.Button closeSessionButton;
private System.Windows.Forms.Label stringToWriteLabel;
private System.Windows.Forms.Label stringToReadLabel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public MainForm()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
SetupControlState(false);
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(mbSession != null)
{
mbSession.Dispose();
}
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.queryButton = new System.Windows.Forms.Button();
this.writeButton = new System.Windows.Forms.Button();
this.readButton = new System.Windows.Forms.Button();
this.openSessionButton = new System.Windows.Forms.Button();
this.writeTextBox = new System.Windows.Forms.TextBox();
this.readTextBox = new System.Windows.Forms.TextBox();
this.clearButton = new System.Windows.Forms.Button();
this.closeSessionButton = new System.Windows.Forms.Button();
this.stringToWriteLabel = new System.Windows.Forms.Label();
this.stringToReadLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// queryButton
//
this.queryButton.Location = new System.Drawing.Point(5, 83);
this.queryButton.Name = "queryButton";
this.queryButton.Size = new System.Drawing.Size(74, 23);
this.queryButton.TabIndex = 3;
this.queryButton.Text = "Query";
this.queryButton.Click += new System.EventHandler(this.query_Click);
//
// writeButton
//
this.writeButton.Location = new System.Drawing.Point(79, 83);
this.writeButton.Name = "writeButton";
this.writeButton.Size = new System.Drawing.Size(74, 23);
this.writeButton.TabIndex = 4;
this.writeButton.Text = "Write";
this.writeButton.Click += new System.EventHandler(this.write_Click);
//
// readButton
//
this.readButton.Location = new System.Drawing.Point(153, 83);
this.readButton.Name = "readButton";
this.readButton.Size = new System.Drawing.Size(74, 23);
this.readButton.TabIndex = 5;
this.readButton.Text = "Read";
this.readButton.Click += new System.EventHandler(this.read_Click);
//
// openSessionButton
//
this.openSessionButton.Location = new System.Drawing.Point(5, 5);
this.openSessionButton.Name = "openSessionButton";
this.openSessionButton.Size = new System.Drawing.Size(92, 22);
this.openSessionButton.TabIndex = 0;
this.openSessionButton.Text = "Open Session";
this.openSessionButton.Click += new System.EventHandler(this.openSession_Click);
//
// writeTextBox
//
this.writeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.writeTextBox.Location = new System.Drawing.Point(5, 54);
this.writeTextBox.Name = "writeTextBox";
this.writeTextBox.Size = new System.Drawing.Size(275, 20);
this.writeTextBox.TabIndex = 2;
this.writeTextBox.Text = "*IDN?\\n";
//
// readTextBox
//
this.readTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.readTextBox.Location = new System.Drawing.Point(5, 136);
this.readTextBox.Multiline = true;
this.readTextBox.Name = "readTextBox";
this.readTextBox.ReadOnly = true;
this.readTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.readTextBox.Size = new System.Drawing.Size(275, 119);
this.readTextBox.TabIndex = 6;
this.readTextBox.TabStop = false;
//
// clearButton
//
this.clearButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.clearButton.Location = new System.Drawing.Point(6, 257);
this.clearButton.Name = "clearButton";
this.clearButton.Size = new System.Drawing.Size(275, 24);
this.clearButton.TabIndex = 7;
this.clearButton.Text = "Clear";
this.clearButton.Click += new System.EventHandler(this.clear_Click);
//
// closeSessionButton
//
this.closeSessionButton.Location = new System.Drawing.Point(97, 5);
this.closeSessionButton.Name = "closeSessionButton";
this.closeSessionButton.Size = new System.Drawing.Size(92, 22);
this.closeSessionButton.TabIndex = 1;
this.closeSessionButton.Text = "Close Session";
this.closeSessionButton.Click += new System.EventHandler(this.closeSession_Click);
//
// stringToWriteLabel
//
this.stringToWriteLabel.Location = new System.Drawing.Point(5, 34);
this.stringToWriteLabel.Name = "stringToWriteLabel";
this.stringToWriteLabel.Size = new System.Drawing.Size(91, 14);
this.stringToWriteLabel.TabIndex = 8;
this.stringToWriteLabel.Text = "String to Write:";
//
// stringToReadLabel
//
this.stringToReadLabel.Location = new System.Drawing.Point(5, 117);
this.stringToReadLabel.Name = "stringToReadLabel";
this.stringToReadLabel.Size = new System.Drawing.Size(101, 15);
this.stringToReadLabel.TabIndex = 9;
this.stringToReadLabel.Text = "String Read:";
//
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(287, 289);
this.Controls.Add(this.stringToReadLabel);
this.Controls.Add(this.stringToWriteLabel);
this.Controls.Add(this.closeSessionButton);
this.Controls.Add(this.clearButton);
this.Controls.Add(this.readTextBox);
this.Controls.Add(this.writeTextBox);
this.Controls.Add(this.openSessionButton);
this.Controls.Add(this.readButton);
this.Controls.Add(this.writeButton);
this.Controls.Add(this.queryButton);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(295, 316);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Simple Read/Write";
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new MainForm());
}
private void openSession_Click(object sender, System.EventArgs e)
{
using (SelectResource sr = new SelectResource())
{
if(lastResourceString != null)
{
sr.ResourceName = lastResourceString;
}
DialogResult result = sr.ShowDialog(this);
if(result == DialogResult.OK)
{
lastResourceString = sr.ResourceName;
Cursor.Current = Cursors.WaitCursor;
using (var rmSession = new ResourceManager())
{
try
{
mbSession = (MessageBasedSession)rmSession.Open(sr.ResourceName);
SetupControlState(true);
}
catch (InvalidCastException)
{
MessageBox.Show("Resource selected must be a message-based session");
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
}
}
}
private void closeSession_Click(object sender, System.EventArgs e)
{
SetupControlState(false);
mbSession.Dispose();
}
private void query_Click(object sender, System.EventArgs e)
{
readTextBox.Text = String.Empty;
Cursor.Current = Cursors.WaitCursor;
try
{
string textToWrite = ReplaceCommonEscapeSequences(writeTextBox.Text);
mbSession.RawIO.Write(textToWrite);
readTextBox.Text = InsertCommonEscapeSequences(mbSession.RawIO.ReadString());
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
private void write_Click(object sender, System.EventArgs e)
{
try
{
string textToWrite = ReplaceCommonEscapeSequences(writeTextBox.Text);
mbSession.RawIO.Write(textToWrite);
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
}
private void read_Click(object sender, System.EventArgs e)
{
readTextBox.Text = String.Empty;
Cursor.Current = Cursors.WaitCursor;
try
{
readTextBox.Text = InsertCommonEscapeSequences(mbSession.RawIO.ReadString());
}
catch(Exception exp)
{
MessageBox.Show(exp.Message);
}
finally
{
Cursor.Current = Cursors.Default;
}
}
private void clear_Click(object sender, System.EventArgs e)
{
readTextBox.Text = String.Empty;
}
private void SetupControlState(bool isSessionOpen)
{
openSessionButton.Enabled = !isSessionOpen;
closeSessionButton.Enabled = isSessionOpen;
queryButton.Enabled = isSessionOpen;
writeButton.Enabled = isSessionOpen;
readButton.Enabled = isSessionOpen;
writeTextBox.Enabled = isSessionOpen;
clearButton.Enabled = isSessionOpen;
if(isSessionOpen)
{
readTextBox.Text = String.Empty;
writeTextBox.Focus();
}
}
private string ReplaceCommonEscapeSequences(string s)
{
return s.Replace("\\n", "\n").Replace("\\r", "\r");
}
private string InsertCommonEscapeSequences(string s)
{
return s.Replace("\n", "\\n").Replace("\r", "\\r");
}
}
}

View File

@ -0,0 +1,311 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="stringToWriteLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="stringToReadLabel.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAIAICAAAAEAGACoDAAAJgAAADAwAAABABgAqBwAAM4MAAAoAAAAIAAAAEAAAAABABgAAAAAAAAM
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAjn54Xks/YlUudGIvgW43g3E0eGgsZ1cnaFs1i4VwAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmpWKV0sglnVKz6p8qI1K48iW
zK57vqBq7NOZootMq5lXnYpXWEgllI18AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAdWtMel0foYk02MR7xK9nsp1Lx6901beB0bB91rWAsZNXuqFe5s+LqI1Qb18z
Z2FHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZF09inUopX5NjHRn
dm5rdF5RsZRlyrNw2r1/z6x0wZtk1a94xKBmvp1Zt5hSpY5OmYlYX1Y4AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAeG1ZjnAvknlHUDVeNSB+LBp9NRdmPyo4p6Bz5Nqova55x7R/6NSi
vqp61r+HsJZTs5ZLu59VnohQc2lOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ1Uy
rYlTW0RcMh+HLxSCNRN/LR6IJiVTcFxS69W5yLCI0riJ7tSmvKB25dCiuaNovp5RuZU/qIpAdmU7AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ108oopGpohrQSJ9LxmGIhdJY0ppLB2CNjV7NTE5
5NCv1LKO2L6d28mf1r2S7NOmwah2v6Nru5xSspRBlXw+aFU4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAcGEyup1TjnNqNxiANCJ/NS9FuaOlNSN+PTqLJyxBuK6X3Mes18mxzseh08Gb1b2Uwq1/vaZ0
vJ9duJhHqI46e2ojAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgXtilIBCxKReb1VlMRmANCpvWVJR
zLinTDaANy+HNztfn56U4djF2dS92daz18ap0b2dx7qOvbF5vKZlvptUs5A+oogydnBUAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAY1Qxp45BsY9RW0NtLhqCMjBdg3hk38uoZ0+DOSuJS0pyjYuD7eTM6+PF5d28
3ci9vKOvpJWWmZN1sqVuvqFfuY9Gs4tCWk8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZ1QjrZM9ro5Z
TDVzMB+GKSlHoI9x0L6RemKENCSEXliCaWRY5Naz2cig08Gom4KYTCp5PSN2UEVuUks6sJ9fvZ1ItY4+
XE4pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZFAbp5E3polfQSt0MiGIKylBvaWH3cubkHqOKx6Bb2qX
XFdI0L6T4Medx7CqRzBwOB6FMhqONiaNRz5leW9EvKNOros7YFEoAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAZVIbp5E3n4RfOyR1OCmJLiw9z7WV1sKTnouYJhp+fHqsSEU40L6S38Whn4qeMh97TUORJyFvKBiR
SzuQOSwtsZxkooNKW00yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaVckr5I9knZYNB58PTV+ODU50L+S
3MSZppafMht+eHGrTUpH5dKy1sG0X0uQNx2Ac2eXS0xeNB+CPyqNMihLaFlgY0xYNyVaPzRpZl+BqKa0
AAAAAAAAAAAAAAAAAAAAbFg5s5lKgWZZLhqANS5zSERC1cWY4MqduqysMx15YlumT01Z4s+/1r/LOyl9
QzGSbVt4mJV+RjB6Mx6GLyloNRx9PxmOPyCNPB+KOx+DNiJtVkxzAAAAxsDRenCdcG+DfGhblYJAalBg
LxyGMSdnZmBWxrSH0b6Luq2hQC17SUSUTVNZuayamICkKx94YGCeYFFLzcOReGKJOBeLMhqFNRyCMSFd
WFZum5C6VkCSQiaGQy9z1NHbj4KlOCN2GRU8pZybcGI2VT9sKxiFKR1SkolwwKp80b+E2cmxUjt8NSuJ
WmFzhXx8WT2ILR+FYWeEmYh02sSdz72mbE9zWz5vaVZoT0g3AAAAAAAA6efwubPL4N3oAAAAlIeuOiKD
GhZPtLC3X1ZJPytzLBmBIBE3sqR6wKV1yrZ12cWfel2KMBiIXVadMiJaPR2OSzmdVU1b3c6jw6x91sF+
xKd4tJprlIZOcGFKAAAAAAAAAAAAAAAAAAAAAAAAsKTMOCKEIRtggX+Lta+5NiR/Kxh5IBAmxLF6yap3
xq9pz7aIvKCmOB52MBuPOSOHOSaEVE96j31t38qa0buByatbzKFjpIU6aFkhAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAPy1/Kx10SkddzcrZOieHKRdwOio2vqhovJtYwqVezLGA3sSrb1d1OyZyOiluYVmAhYF1
vKR24r6PyqhptpU7rodAg2gth35mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaVyUMRSAFg5FX1qDMxuD
JRRaRDQ2y7V2s5NE1LFxxKZwu6BnuJtgppFpl4Zsr51+up5uwp5ZvpZIr4s3pIc0fGQralpDAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAppzDOh+DIQtqKxh0NhyHMyVRbGFcdmU3q5BX5ciTxqdu3cOCvqNj
xKx22cOUxK186NCVuJxVqpE/nIY3bFgjjYBvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
YU6RNhuAOiGHNSRylI+fAAAAAAAAWEoxbVk4p5Bfw6p0272O2rqK38CNtZZe172AmINCdGMoXVAlAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe26ieW2gr6zCAAAAAAAAAAAAAAAA
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
</root>

View File

@ -0,0 +1,13 @@
Example Title: Simple Read/Write
Category: NI-VISA
Description: This example demonstrates how to use the NI-VISA .NET Library to
perform simple synchronous I/O operations. You can use this example
to send commands, such as "*IDN?\n", to your instrument.
Language: Visual C#
Required Software: NI-VISA
Required Hardware: Any message-based device

View File

@ -0,0 +1,190 @@
using System.Windows.Forms;
using NationalInstruments.Visa;
namespace NationalInstruments.Examples.SimpleReadWrite
{
/// <summary>
/// Summary description for SelectResource.
/// </summary>
public class SelectResource : System.Windows.Forms.Form
{
private System.Windows.Forms.ListBox availableResourcesListBox;
private System.Windows.Forms.Button okButton;
private System.Windows.Forms.Button closeButton;
private System.Windows.Forms.TextBox visaResourceNameTextBox;
private System.Windows.Forms.Label AvailableResourcesLabel;
private System.Windows.Forms.Label ResourceStringLabel;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public SelectResource()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if(components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SelectResource));
this.availableResourcesListBox = new System.Windows.Forms.ListBox();
this.okButton = new System.Windows.Forms.Button();
this.closeButton = new System.Windows.Forms.Button();
this.visaResourceNameTextBox = new System.Windows.Forms.TextBox();
this.AvailableResourcesLabel = new System.Windows.Forms.Label();
this.ResourceStringLabel = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// availableResourcesListBox
//
this.availableResourcesListBox.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.availableResourcesListBox.Location = new System.Drawing.Point(5, 18);
this.availableResourcesListBox.Name = "availableResourcesListBox";
this.availableResourcesListBox.Size = new System.Drawing.Size(282, 108);
this.availableResourcesListBox.TabIndex = 0;
this.availableResourcesListBox.DoubleClick += new System.EventHandler(this.availableResourcesListBox_DoubleClick);
this.availableResourcesListBox.SelectedIndexChanged += new System.EventHandler(this.availableResourcesListBox_SelectedIndexChanged);
//
// okButton
//
this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
this.okButton.Location = new System.Drawing.Point(5, 187);
this.okButton.Name = "okButton";
this.okButton.Size = new System.Drawing.Size(77, 25);
this.okButton.TabIndex = 2;
this.okButton.Text = "OK";
//
// closeButton
//
this.closeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.closeButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.closeButton.Location = new System.Drawing.Point(82, 187);
this.closeButton.Name = "closeButton";
this.closeButton.Size = new System.Drawing.Size(77, 25);
this.closeButton.TabIndex = 3;
this.closeButton.Text = "Cancel";
//
// visaResourceNameTextBox
//
this.visaResourceNameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.visaResourceNameTextBox.Location = new System.Drawing.Point(5, 157);
this.visaResourceNameTextBox.Name = "visaResourceNameTextBox";
this.visaResourceNameTextBox.Size = new System.Drawing.Size(282, 20);
this.visaResourceNameTextBox.TabIndex = 4;
this.visaResourceNameTextBox.Text = "GPIB0::2::INSTR";
//
// AvailableResourcesLabel
//
this.AvailableResourcesLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.AvailableResourcesLabel.Location = new System.Drawing.Point(5, 5);
this.AvailableResourcesLabel.Name = "AvailableResourcesLabel";
this.AvailableResourcesLabel.Size = new System.Drawing.Size(279, 12);
this.AvailableResourcesLabel.TabIndex = 5;
this.AvailableResourcesLabel.Text = "Available Resources:";
//
// ResourceStringLabel
//
this.ResourceStringLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ResourceStringLabel.Location = new System.Drawing.Point(5, 141);
this.ResourceStringLabel.Name = "ResourceStringLabel";
this.ResourceStringLabel.Size = new System.Drawing.Size(279, 13);
this.ResourceStringLabel.TabIndex = 6;
this.ResourceStringLabel.Text = "Resource String:";
//
// SelectResource
//
this.AcceptButton = this.okButton;
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.CancelButton = this.closeButton;
this.ClientSize = new System.Drawing.Size(292, 220);
this.Controls.Add(this.ResourceStringLabel);
this.Controls.Add(this.AvailableResourcesLabel);
this.Controls.Add(this.visaResourceNameTextBox);
this.Controls.Add(this.closeButton);
this.Controls.Add(this.okButton);
this.Controls.Add(this.availableResourcesListBox);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimumSize = new System.Drawing.Size(177, 247);
this.Name = "SelectResource";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Select Resource";
this.Load += new System.EventHandler(this.OnLoad);
this.ResumeLayout(false);
}
#endregion
private void OnLoad(object sender, System.EventArgs e)
{
// This example uses an instance of the NationalInstruments.Visa.ResourceManager class to find resources on the system.
// Alternatively, static methods provided by the Ivi.Visa.ResourceManager class may be used when an application
// requires additional VISA .NET implementations.
using (var rmSession = new ResourceManager())
{
var resources = rmSession.Find("(ASRL|GPIB|TCPIP|USB)?*");
foreach (string s in resources)
{
availableResourcesListBox.Items.Add(s);
}
}
}
private void availableResourcesListBox_DoubleClick(object sender, System.EventArgs e)
{
string selectedString = (string)availableResourcesListBox.SelectedItem;
ResourceName = selectedString;
this.DialogResult = DialogResult.OK;
this.Close();
}
private void availableResourcesListBox_SelectedIndexChanged(object sender, System.EventArgs e)
{
string selectedString = (string)availableResourcesListBox.SelectedItem;
ResourceName = selectedString;
}
public string ResourceName
{
get
{
return visaResourceNameTextBox.Text;
}
set
{
visaResourceNameTextBox.Text = value;
}
}
}
}

View File

@ -0,0 +1,365 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 1.3
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object]
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object]
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used forserialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AAAAamFJWVAnX1UhZFYla1gpalctWUsqbmVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////////AD///AAP//gAB//wA
AP/4AAB/+AAAf/AAAD/wAAA/4AAAH+AAAB/gAAAf4AAAH+AAAB/gAAAD4AAAAQAAAAAAAAAxAAAAPwAA
AH+AAAB/gAAA/4AAAf/BgAf/4+Af//////////////////////8oAAAAMAAAAGAAAAABABgAAAAAAAAb
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkoOBTkM3SEAjWUohVkcZX08gY1QfZ1giW00ZVUcY
TUAgWk44jIRpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeG9gSi8bZ0IzlHJU
moFLoopP0bd707l6q5FPxq1o07x2q5RPk4A6i3o2alsjRTgWY1hDAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
++O007SCo4RO48aM48qLqZNPk345fGwsXU8YXFEtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvbbQSjh9OCB6NyF6Py95UUl2AAAAAAAAAAAAAAAAAAAA
jYZ8QjYkTDwfbl4zhHI/rJVdrZRZr5NZyqxyyKlurI5VrJFajHdAcV4qV0cXTkAgkop4AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzsndkIWw
kYexrKbDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2VQTkcnR0MWSEETSD4VRTkRQzQLTDwYT0Ii
SEApcGpYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAP///////wAA////////
AAD///////8AAP///////wAA//8AB///AAD//AAB//8AAP/wAAB//wAA/+AAAD//AAD/wAAAH/8AAP+A
AAAP/wAA/wAAAAf/AAD+AAAAA/8AAP4AAAAD/wAA/AAAAAH/AAD8AAAAAf8AAPgAAAAA/wAA+AAAAAD/
AAD4AAAAAP8AAPgAAAAAfwAA+AAAAAB/AADwAAAAAH8AAPAAAAAAfwAA8AAAAAB/AADwAAAAAD8AAPAA
AAAABwAA8AAAAAADAADwAAAAAAEAAIAAAAAAgQAAgAAAAADDAACAAAAAAf8AAIAAAAAB/wAAgAAAAAP/
AACAAAAAA/8AAIAAAAAH/wAAwAAAAA//AADAAAAAH/8AAMAAAAA//wAA4DgAAP//AADgfAAB//8AAPD/
gA///wAA////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA
</value>
</data>
<data name="$this.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="$this.DrawGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.GridSize" type="System.Drawing.Size, System.Drawing, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>8, 8</value>
</data>
<data name="$this.Language" type="System.Globalization.CultureInfo, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>(Default)</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="$this.Name">
<value>SelectResource</value>
</data>
<data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</data>
<data name="$this.TrayHeight" type="System.Int32, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>80</value>
</data>
<data name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="availableResourcesListBox.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="availableResourcesListBox.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="availableResourcesListBox.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="AvailableResourcesLabel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="AvailableResourcesLabel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="AvailableResourcesLabel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelButton.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="cancelButton.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="cancelButton.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="okButton.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="okButton.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="ResourceStringLabel.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="ResourceStringLabel.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="ResourceStringLabel.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="visaResourceNameTextBox.DefaultModifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
<data name="visaResourceNameTextBox.Locked" type="System.Boolean, mscorlib, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>False</value>
</data>
<data name="visaResourceNameTextBox.Modifiers" type="System.CodeDom.MemberAttributes, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>Private</value>
</data>
</root>

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>10.0.21006.1</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B8E8C039-E317-4A83-94BA-BC85DA03F880}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>SimpleReadWrite</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.SimpleReadWrite</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SelectResource.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SelectResource.resx">
<DependentUpon>SelectResource.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleReadWrite", "SimpleReadWrite.2010.csproj", "{B8E8C039-E317-4A83-94BA-BC85DA03F880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<ProjectType>Local</ProjectType>
<ProductVersion>11.0.50522.1 RCREL</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{B8E8C039-E317-4A83-94BA-BC85DA03F880}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ApplicationIcon>App.ico</ApplicationIcon>
<AssemblyKeyContainerName>
</AssemblyKeyContainerName>
<AssemblyName>SimpleReadWrite</AssemblyName>
<AssemblyOriginatorKeyFile>
</AssemblyOriginatorKeyFile>
<DefaultClientScript>JScript</DefaultClientScript>
<DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
<DefaultTargetSchema>IE50</DefaultTargetSchema>
<DelaySign>false</DelaySign>
<OutputType>WinExe</OutputType>
<RootNamespace>NationalInstruments.Examples.SimpleReadWrite</RootNamespace>
<RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
<StartupObject>
</StartupObject>
<FileUpgradeFlags>
</FileUpgradeFlags>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\Debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>DEBUG;TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>true</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>false</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
<ConfigurationOverrideFile>
</ConfigurationOverrideFile>
<DefineConstants>TRACE;NETFX3_5;NETFX2_0;NETFX4_0;NETFX4_5</DefineConstants>
<DocumentationFile>
</DocumentationFile>
<DebugSymbols>false</DebugSymbols>
<FileAlignment>4096</FileAlignment>
<NoStdLib>false</NoStdLib>
<NoWarn>
</NoWarn>
<Optimize>true</Optimize>
<RegisterForComInterop>false</RegisterForComInterop>
<RemoveIntegerChecks>false</RemoveIntegerChecks>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<WarningLevel>4</WarningLevel>
<PlatformTarget>AnyCPU</PlatformTarget>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Ivi.Visa, Culture=neutral, PublicKeyToken=a128c98f1d7717c1, processorArchitecture=MSIL" />
<Reference Include="NationalInstruments.Visa, Culture=neutral, PublicKeyToken=2eaa5af0834e221d, processorArchitecture=MSIL" />
<Reference Include="System">
<Name>System</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.dll</HintPath>
</Reference>
<Reference Include="System.Data">
<Name>System.Data</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Data.dll</HintPath>
</Reference>
<Reference Include="System.Drawing">
<Name>System.Drawing</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Drawing.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms">
<Name>System.Windows.Forms</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.Windows.Forms.dll</HintPath>
</Reference>
<Reference Include="System.Xml">
<Name>System.XML</Name>
<HintPath>..\..\..\..\..\..\..\..\..\..\WINNT\Microsoft.NET\Framework\v1.0.3705\System.XML.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Content Include="App.ico" />
<Compile Include="AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SelectResource.cs">
<SubType>Form</SubType>
</Compile>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SelectResource.resx">
<DependentUpon>SelectResource.cs</DependentUpon>
</EmbeddedResource>
<AppDesigner Include="Properties\" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSHARP.Targets" />
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleReadWrite", "SimpleReadWrite.2012.csproj", "{B8E8C039-E317-4A83-94BA-BC85DA03F880}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8E8C039-E317-4A83-94BA-BC85DA03F880}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,243 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "AsyncIO"=.\GPIB\AsyncIO_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "AsyncIntr"=".\VXI-VME\AsyncIntr_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "AsyncSRQ"=.\GPIB\AsyncSRQ_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "FindRsrc"=.\General\FindRsrc_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "HighReg"=".\VXI-VME\HighReg_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "Locking"=.\General\Locking_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "LowReg"=".\VXI-VME\LowReg_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "RdWrt"=.\General\RdWrt_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "RdWrtSrl"=.\Serial\RdWrtSrl_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "ReserveTrig"=.\PXI\ReserveTrig_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "RouteTrig"=.\PXI\RouteTrig_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "ShareSys"=".\VXI-VME\ShareSys_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "TCPIP"=.\TCPIP\TCPIP_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "WaitIntr"=".\VXI-VME\WaitIntr_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "WaitSRQ"=.\GPIB\WaitSRQ_MSVC.dsp - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "WaitTrig"=".\VXI-VME\WaitTrig_MSVC.dsp" - Package Owner=<4>
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
begin source code control
end source code control
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@ -0,0 +1,240 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AsyncIO", "Gpib\AsyncIO_MSVC_VS2005.vcproj", "{0DF1F546-0EB8-426B-AE08-3247ACC1F355}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AsyncIntr", "Vxi-vme\AsyncIntr_MSVC_VS2005.vcproj", "{B45A4F23-689C-4756-BCD7-B999BDBB29A5}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AsyncSRQ", "Gpib\AsyncSRQ_MSVC_VS2005.vcproj", "{FB2EAF25-2003-4295-A24B-2869DDF335D8}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FindRsrc", "General\FindRsrc_MSVC_VS2005.vcproj", "{93BA1AE2-1344-4B95-993F-16314E4E1832}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HighReg", "Vxi-vme\HighReg_MSVC_VS2005.vcproj", "{5287D317-A439-4C06-B49C-1D180B7A257B}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Locking", "General\Locking_MSVC_VS2005.vcproj", "{6B2088ED-A867-4708-9067-92E75E092EB5}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LowReg", "Vxi-vme\LowReg_MSVC_VS2005.vcproj", "{4851B238-5BD8-407F-A9C4-B7460E42BCE3}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RdWrt", "General\RdWrt_MSVC_VS2005.vcproj", "{2FA33368-82C2-49B8-AC94-460A34C719C1}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RdWrtSrl", "Serial\RdWrtSrl_MSVC_VS2005.vcproj", "{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReserveTrig", "PXI\ReserveTrig_MSVC_VS2005.vcproj", "{10767517-D9FC-4241-9DD9-805ECA12A584}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RouteTrig", "PXI\RouteTrig_MSVC_VS2005.vcproj", "{C00818A7-D55D-48BE-9E32-09389E1DD4EB}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ShareSys", "Vxi-vme\ShareSys_MSVC_VS2005.vcproj", "{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TCPIP", "TCPIP\TCPIP_MSVC_VS2005.vcproj", "{02C1C19C-5E65-420B-959C-145A0264F934}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WaitIntr", "Vxi-vme\WaitIntr_MSVC_VS2005.vcproj", "{11155569-0F34-48BB-A2CB-5325486864EB}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WaitSRQ", "Gpib\WaitSRQ_MSVC_VS2005.vcproj", "{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WaitTrig", "Vxi-vme\WaitTrig_MSVC_VS2005.vcproj", "{D397112D-1904-4BB2-AEA7-994095BF4A43}"
ProjectSection(WebsiteProperties) = preProject
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.Debug = "False"
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Debug|Win32.ActiveCfg = Debug|Win32
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Debug|Win32.Build.0 = Debug|Win32
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Debug|x64.ActiveCfg = Debug|x64
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Debug|x64.Build.0 = Debug|x64
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Release|Win32.ActiveCfg = Release|Win32
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Release|Win32.Build.0 = Release|Win32
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Release|x64.ActiveCfg = Release|x64
{0DF1F546-0EB8-426B-AE08-3247ACC1F355}.Release|x64.Build.0 = Release|x64
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Debug|Win32.ActiveCfg = Debug|Win32
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Debug|Win32.Build.0 = Debug|Win32
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Debug|x64.ActiveCfg = Debug|x64
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Debug|x64.Build.0 = Debug|x64
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Release|Win32.ActiveCfg = Release|Win32
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Release|Win32.Build.0 = Release|Win32
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Release|x64.ActiveCfg = Release|x64
{B45A4F23-689C-4756-BCD7-B999BDBB29A5}.Release|x64.Build.0 = Release|x64
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Debug|Win32.ActiveCfg = Debug|Win32
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Debug|Win32.Build.0 = Debug|Win32
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Debug|x64.ActiveCfg = Debug|x64
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Debug|x64.Build.0 = Debug|x64
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Release|Win32.ActiveCfg = Release|Win32
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Release|Win32.Build.0 = Release|Win32
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Release|x64.ActiveCfg = Release|x64
{FB2EAF25-2003-4295-A24B-2869DDF335D8}.Release|x64.Build.0 = Release|x64
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Debug|Win32.ActiveCfg = Debug|Win32
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Debug|Win32.Build.0 = Debug|Win32
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Debug|x64.ActiveCfg = Debug|x64
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Debug|x64.Build.0 = Debug|x64
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Release|Win32.ActiveCfg = Release|Win32
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Release|Win32.Build.0 = Release|Win32
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Release|x64.ActiveCfg = Release|x64
{93BA1AE2-1344-4B95-993F-16314E4E1832}.Release|x64.Build.0 = Release|x64
{5287D317-A439-4C06-B49C-1D180B7A257B}.Debug|Win32.ActiveCfg = Debug|Win32
{5287D317-A439-4C06-B49C-1D180B7A257B}.Debug|Win32.Build.0 = Debug|Win32
{5287D317-A439-4C06-B49C-1D180B7A257B}.Debug|x64.ActiveCfg = Debug|x64
{5287D317-A439-4C06-B49C-1D180B7A257B}.Debug|x64.Build.0 = Debug|x64
{5287D317-A439-4C06-B49C-1D180B7A257B}.Release|Win32.ActiveCfg = Release|Win32
{5287D317-A439-4C06-B49C-1D180B7A257B}.Release|Win32.Build.0 = Release|Win32
{5287D317-A439-4C06-B49C-1D180B7A257B}.Release|x64.ActiveCfg = Release|x64
{5287D317-A439-4C06-B49C-1D180B7A257B}.Release|x64.Build.0 = Release|x64
{6B2088ED-A867-4708-9067-92E75E092EB5}.Debug|Win32.ActiveCfg = Debug|Win32
{6B2088ED-A867-4708-9067-92E75E092EB5}.Debug|Win32.Build.0 = Debug|Win32
{6B2088ED-A867-4708-9067-92E75E092EB5}.Debug|x64.ActiveCfg = Debug|x64
{6B2088ED-A867-4708-9067-92E75E092EB5}.Debug|x64.Build.0 = Debug|x64
{6B2088ED-A867-4708-9067-92E75E092EB5}.Release|Win32.ActiveCfg = Release|Win32
{6B2088ED-A867-4708-9067-92E75E092EB5}.Release|Win32.Build.0 = Release|Win32
{6B2088ED-A867-4708-9067-92E75E092EB5}.Release|x64.ActiveCfg = Release|x64
{6B2088ED-A867-4708-9067-92E75E092EB5}.Release|x64.Build.0 = Release|x64
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Debug|Win32.ActiveCfg = Debug|Win32
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Debug|Win32.Build.0 = Debug|Win32
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Debug|x64.ActiveCfg = Debug|x64
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Debug|x64.Build.0 = Debug|x64
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Release|Win32.ActiveCfg = Release|Win32
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Release|Win32.Build.0 = Release|Win32
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Release|x64.ActiveCfg = Release|x64
{4851B238-5BD8-407F-A9C4-B7460E42BCE3}.Release|x64.Build.0 = Release|x64
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Debug|Win32.ActiveCfg = Debug|Win32
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Debug|Win32.Build.0 = Debug|Win32
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Debug|x64.ActiveCfg = Debug|x64
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Debug|x64.Build.0 = Debug|x64
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Release|Win32.ActiveCfg = Release|Win32
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Release|Win32.Build.0 = Release|Win32
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Release|x64.ActiveCfg = Release|x64
{2FA33368-82C2-49B8-AC94-460A34C719C1}.Release|x64.Build.0 = Release|x64
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Debug|Win32.ActiveCfg = Debug|Win32
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Debug|Win32.Build.0 = Debug|Win32
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Debug|x64.ActiveCfg = Debug|x64
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Debug|x64.Build.0 = Debug|x64
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Release|Win32.ActiveCfg = Release|Win32
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Release|Win32.Build.0 = Release|Win32
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Release|x64.ActiveCfg = Release|x64
{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}.Release|x64.Build.0 = Release|x64
{10767517-D9FC-4241-9DD9-805ECA12A584}.Debug|Win32.ActiveCfg = Debug|Win32
{10767517-D9FC-4241-9DD9-805ECA12A584}.Debug|Win32.Build.0 = Debug|Win32
{10767517-D9FC-4241-9DD9-805ECA12A584}.Debug|x64.ActiveCfg = Debug|x64
{10767517-D9FC-4241-9DD9-805ECA12A584}.Debug|x64.Build.0 = Debug|x64
{10767517-D9FC-4241-9DD9-805ECA12A584}.Release|Win32.ActiveCfg = Release|Win32
{10767517-D9FC-4241-9DD9-805ECA12A584}.Release|Win32.Build.0 = Release|Win32
{10767517-D9FC-4241-9DD9-805ECA12A584}.Release|x64.ActiveCfg = Release|x64
{10767517-D9FC-4241-9DD9-805ECA12A584}.Release|x64.Build.0 = Release|x64
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Debug|Win32.ActiveCfg = Debug|Win32
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Debug|Win32.Build.0 = Debug|Win32
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Debug|x64.ActiveCfg = Debug|x64
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Debug|x64.Build.0 = Debug|x64
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Release|Win32.ActiveCfg = Release|Win32
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Release|Win32.Build.0 = Release|Win32
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Release|x64.ActiveCfg = Release|x64
{C00818A7-D55D-48BE-9E32-09389E1DD4EB}.Release|x64.Build.0 = Release|x64
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Debug|Win32.ActiveCfg = Debug|Win32
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Debug|Win32.Build.0 = Debug|Win32
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Debug|x64.ActiveCfg = Debug|x64
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Debug|x64.Build.0 = Debug|x64
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Release|Win32.ActiveCfg = Release|Win32
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Release|Win32.Build.0 = Release|Win32
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Release|x64.ActiveCfg = Release|x64
{E44BBCCF-7F0A-4969-988C-196A2B3EAA98}.Release|x64.Build.0 = Release|x64
{02C1C19C-5E65-420B-959C-145A0264F934}.Debug|Win32.ActiveCfg = Debug|Win32
{02C1C19C-5E65-420B-959C-145A0264F934}.Debug|Win32.Build.0 = Debug|Win32
{02C1C19C-5E65-420B-959C-145A0264F934}.Debug|x64.ActiveCfg = Debug|x64
{02C1C19C-5E65-420B-959C-145A0264F934}.Debug|x64.Build.0 = Debug|x64
{02C1C19C-5E65-420B-959C-145A0264F934}.Release|Win32.ActiveCfg = Release|Win32
{02C1C19C-5E65-420B-959C-145A0264F934}.Release|Win32.Build.0 = Release|Win32
{02C1C19C-5E65-420B-959C-145A0264F934}.Release|x64.ActiveCfg = Release|x64
{02C1C19C-5E65-420B-959C-145A0264F934}.Release|x64.Build.0 = Release|x64
{11155569-0F34-48BB-A2CB-5325486864EB}.Debug|Win32.ActiveCfg = Debug|Win32
{11155569-0F34-48BB-A2CB-5325486864EB}.Debug|Win32.Build.0 = Debug|Win32
{11155569-0F34-48BB-A2CB-5325486864EB}.Debug|x64.ActiveCfg = Debug|x64
{11155569-0F34-48BB-A2CB-5325486864EB}.Debug|x64.Build.0 = Debug|x64
{11155569-0F34-48BB-A2CB-5325486864EB}.Release|Win32.ActiveCfg = Release|Win32
{11155569-0F34-48BB-A2CB-5325486864EB}.Release|Win32.Build.0 = Release|Win32
{11155569-0F34-48BB-A2CB-5325486864EB}.Release|x64.ActiveCfg = Release|x64
{11155569-0F34-48BB-A2CB-5325486864EB}.Release|x64.Build.0 = Release|x64
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Debug|Win32.ActiveCfg = Debug|Win32
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Debug|Win32.Build.0 = Debug|Win32
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Debug|x64.ActiveCfg = Debug|x64
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Debug|x64.Build.0 = Debug|x64
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Release|Win32.ActiveCfg = Release|Win32
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Release|Win32.Build.0 = Release|Win32
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Release|x64.ActiveCfg = Release|x64
{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}.Release|x64.Build.0 = Release|x64
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Debug|Win32.ActiveCfg = Debug|Win32
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Debug|Win32.Build.0 = Debug|Win32
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Debug|x64.ActiveCfg = Debug|x64
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Debug|x64.Build.0 = Debug|x64
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Release|Win32.ActiveCfg = Release|Win32
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Release|Win32.Build.0 = Release|Win32
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Release|x64.ActiveCfg = Release|x64
{D397112D-1904-4BB2-AEA7-994095BF4A43}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,120 @@
/*********************************************************************/
/* This example demonstrates how you might query your system for */
/* a particular instrument. This example queries for all */
/* GPIB, serial or VXI instruments. Notice that VISA is able to */
/* find GPIB and VXI instruments because the instruments have a */
/* predefined protocol. But serial instruments do not. Hence, */
/* VISA merely indicates that a serial port is available. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Use viFindRsrc() to query for the first available instrument */
/* Open a session to this device */
/* Find the next instrument using viFindNext() */
/* Open a session to this device. */
/* Loop on finding the next instrument until all have been found*/
/* Close all VISA Sessions */
/*********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "visa.h"
static char instrDescriptor[VI_FIND_BUFLEN];
static ViUInt32 numInstrs;
static ViFindList findList;
static ViSession defaultRM, instr;
static ViStatus status;
int main(void)
{
/* First we will need to open the default resource manager. */
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Find all the VISA resources in our system and store the number of resources
* in the system in numInstrs. Notice the different query descriptions a
* that are available.
Interface Expression
--------------------------------------
GPIB "GPIB[0-9]*::?*INSTR"
VXI "VXI?*INSTR"
GPIB-VXI "GPIB-VXI?*INSTR"
Any VXI "?*VXI[0-9]*::?*INSTR"
Serial "ASRL[0-9]*::?*INSTR"
PXI "PXI?*INSTR"
All instruments "?*INSTR"
All resources "?*"
*/
status = viFindRsrc (defaultRM, "?*INSTR", &findList, &numInstrs, instrDescriptor);
if (status < VI_SUCCESS)
{
printf ("An error occurred while finding resources.\nHit enter to continue.");
fflush(stdin);
getchar();
viClose (defaultRM);
return status;
}
printf("%d instruments, serial ports, and other resources found:\n\n",numInstrs);
printf("%s \n",instrDescriptor);
/* Now we will open a session to the instrument we just found. */
status = viOpen (defaultRM, instrDescriptor, VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening a session to %s\n",instrDescriptor);
}
else
{
/* Now close the session we just opened. */
/* In actuality, we would probably use an attribute to determine */
/* if this is the instrument we are looking for. */
viClose (instr);
}
while (--numInstrs)
{
/* stay in this loop until we find all instruments */
status = viFindNext (findList, instrDescriptor); /* find next desriptor */
if (status < VI_SUCCESS)
{ /* did we find the next resource? */
printf ("An error occurred finding the next resource.\nHit enter to continue.");
fflush(stdin);
getchar();
viClose (defaultRM);
return status;
}
printf("%s \n",instrDescriptor);
/* Now we will open a session to the instrument we just found */
status = viOpen (defaultRM, instrDescriptor, VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening a session to %s\n",instrDescriptor);
}
else
{
/* Now close the session we just opened. */
/* In actuality, we would probably use an attribute to determine */
/* if this is the instrument we are looking for. */
viClose (instr);
}
} /* end while */
status = viClose(findList);
status = viClose (defaultRM);
printf ("\nHit enter to continue.");
fflush(stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="FindRsrc" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=FindRsrc - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "FindRsrc_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "FindRsrc_MSVC.mak" CFG="FindRsrc - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "FindRsrc - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "FindRsrc - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "FindRsrc - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/FindRsrc.exe"
!ELSEIF "$(CFG)" == "FindRsrc - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/FindRsrc.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "FindRsrc - Win32 Release"
# Name "FindRsrc - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\FindRsrc.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="FindRsrc"
ProjectGUID="{93BA1AE2-1344-4B95-993F-16314E4E1832}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/FindRsrc.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/FindRsrc.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/FindRsrc.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/FindRsrc.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/FindRsrc.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/FindRsrc_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="FindRsrc.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,211 @@
/********************************************************************/
/* This example demonstrates VISA locking */
/* */
/* In VISA, applications can open multiple sessions to the same */
/* resource simultaneously and access that resource through these */
/* different sessions concurrently. */
/* In some cases, an application may need to restrict other */
/* sessions from accessing that resource. */
/* For example, an application may need to execute a write and a */
/* read operation as an atomic operation so that no other */
/* operations intervene between the write and read operations. */
/* If another application or even this same application were to */
/* perform another write between this first write and read, then it */
/* could put the instrument in an unstable state. */
/* This is where locking becomes convenient. The application can */
/* lock the resource before invoking the write operation and unlock */
/* it after the read operation, to execute them as a single step. */
/* This prevents other applications from accessing the resource */
/* and prevents possible contention. VISA defines locking */
/* to restrict accesses to resources for such special circumstances.*/
/* */
/* The VISA locking mechanism enforces arbitration of accesses to */
/* resources on an individual basis. If a session locks a resource, */
/* operations invoked by other sessions are returned with an error. */
/* */
/* This VI opens two sessions to an instrument and locks the first */
/* session. The first session then writes the String to Write to */
/* the instrument and reads a response of the desired length. */
/* */
/* The second session tries to do the same task but will not */
/* succeed unless the first session is unlocked. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Open 2 VISA sessions to an instrument */
/* Lock the first session */
/* Read and write to that instrument using the first session */
/* Unlock the first session */
/* Now read and write to the instrument with the second session*/
/* Close the VISA Sessions */
/********************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "visa.h"
static ViSession defaultRM;
static ViSession instr1, instr2;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static ViStatus status;
static unsigned char buffer[100];
static int cchar;
static char stringinput[512];
int main (void)
{
/*
* First we must call viOpenDefaultRM to get the resource manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Now we will open a session to a GPIB instrument at address 2.
* We must use the handle from viOpenDefaultRM and we must
* also use a string that indicates which instrument to open. This
* is called the instrument descriptor. The format for this string
* can be found in the function panel by right clicking on the
* description parameter. After opening a session to the
* device, we will get a handle to the instrument which we
* will use in later Visa functions. The two parameters in this
* function which are reserved for future functionality.
* These two parameters are given the value VI_NULL.
*/
status = viOpen (defaultRM, "GPIB0::2::INSTR", VI_NULL, VI_NULL, &instr1);
if (status < VI_SUCCESS)
{
printf ("Cannot open a session to the device.\n");
goto Close;
}
/*
* Now we will open another session to a GPIB instrument at address 2.
*/
status = viOpen (defaultRM, "GPIB0::2::INSTR", VI_NULL, VI_NULL, &instr2);
if (status < VI_SUCCESS)
{
printf ("Cannot open a second session to the device.\n");
goto Close;
}
/*
* Now we will lock the first session to the resource using the
* viLock function. Notice that the locking command takes a parameter
* which can be set to VI_EXCLUSIVE_LOCK or VI_SHARED_LOCK. The exclusive
* lock will only let that session access the device until the
* lock is released. The shared locking option uses the last two parameters
* which are set to VI_NULL for the exclusive lock. The first of these
* is a requested access key for the shared lock. The last parameter is
* a return value with the actual key assigned to the lock. If the shared
* lock is used the return actual key value can be used by another session
* for the actual key parameter to gain access to the locked resource.
* Please refer to the NI-VISA User Manual for more information.
*/
status = viLock (instr1, VI_EXCLUSIVE_LOCK, VI_TMO_IMMEDIATE, VI_NULL, VI_NULL);
if (status < VI_SUCCESS)
{
printf("Error locking the session");
goto Close;
}
/*
* Now we will write the string "*IDN?\n" to the device and read back the
* Response from the session that obtained a lock on the resource
*/
strcpy(stringinput,"*IDN?\n");
status = viWrite (instr1, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
if (status < VI_SUCCESS)
{
printf("Error writing to the device\n");
goto Close;
}
/*
* Now we will attempt to read back a response from the device to
* the identification query that was sent. We will use the viRead
* function to acquire the data. We will try to read back 100 bytes.
* After the data has been read the response is displayed.
*/
status = viRead (instr1, buffer, 100, &retCount);
if (status < VI_SUCCESS)
{
printf("Error reading a response from the device\n");
goto Close;
}
else
{
printf("\nData read: %*s\n",retCount,buffer);
}
/*
* Now we will ask the user if they want to unlock the resource.
* Then we will try the same operations with the second session. If the
* resource is not unlocked these operations will fail as would any attempts
* to modify global attributes by the second session.
*/
printf("Do you wish to unlock the resource so the second session can also access it(y/n)?\n");
cchar = getchar ();
if (cchar == 'y' || cchar == 'Y')
{
status = viUnlock (instr1);
if (status < VI_SUCCESS)
{
printf("Error unlocking the resource\n");
goto Close;
}
}
/*
* Now we will attempt the same read and write sequence we attempted with the first
* session. If the lock was not removed this will fail
*/
status = viWrite (instr2, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
if (status == VI_ERROR_RSRC_LOCKED)
{
printf("The resource is locked you can't write to it!\n");
}
/*
* Now we will attempt to read back a response from the device to
* the identification query that was sent. We will use the viRead
* function to acquire the data. We will try to read back 100 bytes.
* After the data has been read the response is displayed.
*/
status = viRead (instr2, buffer, 100, &retCount);
if (status == VI_ERROR_RSRC_LOCKED)
{
printf("The resource is still locked you can't read from it!\n");
}
else
{
printf("\nData read: %*s\n",retCount,buffer);
}
Close:
status = viClose(instr1);
status = viClose(instr2);
status = viClose(defaultRM);
printf("Finished closing sessions.\nHit enter to continue.\n");
fflush(stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="Locking" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=Locking - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "Locking_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Locking_MSVC.mak" CFG="Locking - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Locking - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "Locking - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "Locking - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/Locking.exe"
!ELSEIF "$(CFG)" == "Locking - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/Locking.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "Locking - Win32 Release"
# Name "Locking - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\Locking.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="Locking"
ProjectGUID="{6B2088ED-A867-4708-9067-92E75E092EB5}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/Locking.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/Locking.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/Locking.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/Locking.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/Locking.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/Locking.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/Locking.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/Locking.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/Locking_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="Locking.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,136 @@
/********************************************************************/
/* Read and Write to an Instrument Example */
/* */
/* This code demonstrates synchronous read and write commands to a */
/* GPIB, serial or message-based VXI instrument using VISA. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Open VISA Session to an Instrument */
/* Write the Identification Query Using viWrite */
/* Try to Read a Response With viRead */
/* Close the VISA Session */
/********************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "visa.h"
static ViSession defaultRM;
static ViSession instr;
static ViStatus status;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static unsigned char buffer[100];
static char stringinput[512];
/*
* In every source code or header file that you use it is necessary to prototype
* your VISA variables at the beginning of the file. You need to declare the VISA
* session, VISA integers, VISA strings, VISA pointers, and VISA floating variables.
* Remember that if you are prototyping variables that are to be used as part of the
* VISA session that need this prototyping. As an example, above retCount has been
* prototyped as a static variable to this particular module. It is an integer of
* bit length 32. If you are uncertain how to declare your VISA prototypes refer
* to the VISA help under the Section titled Type Assignments Table. The VISA
* help is located in your NI-VISA directory or folder.
*/
int main(void)
{
/*
* First we must call viOpenDefaultRM to get the resource manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Now we will open a VISA session to a device at Primary Address 2.
* You can use any address for your instrument. In this example we are
* using GPIB Primary Address 2.
*
* We must use the handle from viOpenDefaultRM and we must
* also use a string that indicates which instrument to open. This
* is called the instrument descriptor. The format for this string
* can be found in the NI-VISA User Manual.
* After opening a session to the device, we will get a handle to
* the instrument which we will use in later VISA functions.
* The two parameters in this function which are left blank are
* reserved for future functionality. These two parameters are
* given the value VI_NULL.
*
* This example will also work for serial or VXI instruments by changing
* the instrument descriptor from GPIB0::2::INSTR to ASRL1::INSTR or
* VXI0::2::INSTR depending on the necessary descriptor for your
* instrument.
*/
status = viOpen (defaultRM, "GPIB0::2::INSTR", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("Cannot open a session to the device.\n");
goto Close;
}
/*
* Set timeout value to 5000 milliseconds (5 seconds).
*/
status = viSetAttribute (instr, VI_ATTR_TMO_VALUE, 5000);
/*
* At this point we now have a session open to the instrument at
* Primary Address 2. We can use this session handle to write
* an ASCII command to the instrument. We will use the viWrite function
* to send the string "*IDN?", asking for the device's identification.
*/
strcpy(stringinput,"*IDN?");
status = viWrite (instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
if (status < VI_SUCCESS)
{
printf("Error writing to the device\n");
goto Close;
}
/*
* Now we will attempt to read back a response from the device to
* the identification query that was sent. We will use the viRead
* function to acquire the data. We will try to read back 100 bytes.
* After the data has been read the response is displayed.
*/
status = viRead (instr, buffer, 100, &retCount);
if (status < VI_SUCCESS)
{
printf("Error reading a response from the device\n");
}
else
{
printf("Data read: %*s\n",retCount,buffer);
}
/*
* Now we will close the session to the instrument using
* viClose. This operation frees all system resources.
*/
Close:
printf("Closing Sessions\nHit enter to continue.");
fflush(stdin);
getchar();
status = viClose(instr);
status = viClose(defaultRM);
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="RdWrt" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=RdWrt - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "RdWrt_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "RdWrt_MSVC.mak" CFG="RdWrt - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "RdWrt - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "RdWrt - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "RdWrt - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/RdWrt.exe"
!ELSEIF "$(CFG)" == "RdWrt - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/RdWrt.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "RdWrt - Win32 Release"
# Name "RdWrt - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\RdWrt.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="RdWrt"
ProjectGUID="{2FA33368-82C2-49B8-AC94-460A34C719C1}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrt.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrt.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrt.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrt.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrt.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrt.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrt.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrt.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrt_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="RdWrt.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,177 @@
/**************************************************************************/
/* Asynchronous I/O Completion Example */
/* */
/* This example shows how to use an asynchronous event handling function */
/* that is called when an asynchronous input/output operation completes. */
/* Compare this to viRead and viWrite which block the application until */
/* either the call returns successfully or a timeout occurs. Read and */
/* write operations can be quite slow sometimes, so these asynchronous */
/* operations will allow you processor to perform other tasks. */
/* The code uses VISA functions and sets a flag in the callback upon */
/* completion of an asynchronous read from a GPIB device to break out of */
/* an otherwise infinite loop. The flow of the code is as follows: */
/* */
/* Open A Session To The VISA Resource Manager */
/* Open A Session To A GPIB Device */
/* Install A Handler For Asynchronous IO Completion Events */
/* Enable Asynchronous IO Completion Events */
/* Write A Command To The Instrument */
/* Call The Asynchronous Read Command */
/* Start A Loop That Can Only Be Broken By A Handler Flag Or Timeout */
/* Print Out The Returned Data */
/* Close The Instrument Session */
/* Close The Resource Manager Session */
/**************************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "visa.h"
/* Prototype for the event handler for asynchronous i/o completion */
ViStatus _VI_FUNCH AsyncHandler(ViSession vi, ViEventType etype, ViEvent event, ViAddr userHandle);
#define READ_BUFFER_SIZE 4096
static ViJobId job;
static unsigned char data[READ_BUFFER_SIZE];
static ViAddr uhandle;
static ViStatus status, StatusSession;
static ViSession inst, Sessionparam;
static ViEventType EventTypeparam;
static ViAddr Addressparam;
static ViUInt32 BytesToWrite;
static ViSession defaultRM;
static ViUInt32 rcount, RdCount;
static volatile ViBoolean stopflag = VI_FALSE;
static int letter;
static char stringinput[256];
/*
* The handler function. The instrument session, the type of event, and a
* handle to the event are passed to the function along with a user handle
* which is basically a label that could be used to reference the handler.
* The only thing done in the handler is to set a flag that allows the
* program to finish. Always return VI_SUCCESS from your handler.
*/
ViStatus _VI_FUNCH AsyncHandler(ViSession vi, ViEventType etype, ViEvent event, ViAddr userHandle)
{
Sessionparam = vi;
EventTypeparam = etype;
Addressparam = userHandle;
viGetAttribute (event, VI_ATTR_STATUS, &StatusSession);
viGetAttribute (event, VI_ATTR_RET_COUNT, &RdCount);
stopflag = VI_TRUE;
return VI_SUCCESS;
}
int main (void)
{
/*
* First we open a session to the VISA resource manager. We are
* returned a handle to the resource manager session that we must
* use to open sessions to specific instruments.
*/
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Next we use the resource manager handle to open a session to a
* GPIB instrument at device 2. A handle to this session is
* returned in the handle inst. Please consult the NI-VISA User Manual
* for the syntax for using other instruments.
*/
status = viOpen (defaultRM, "GPIB::2::INSTR", VI_NULL, VI_NULL, &inst);
/*
* Now we install the handler for asynchronous i/o completion events.
* To install the handler, we must pass our instrument session, the type of
* event to handle, the handler function name and a user handle
* which acts as a handle to the handler function.
*/
status = viInstallHandler (inst, VI_EVENT_IO_COMPLETION, AsyncHandler, uhandle);
/* Now we must actually enable the I/O completion event so that our
* handler will see the events. Note, one of the parameters is
* VI_HNDLR indicating that we want the events to be handled by
* an asynchronous event handler. The alternate mechanism for handling
* events is to queue them and read events off of the queue when
* you want to check them in your program.
*/
status = viEnableEvent (inst, VI_EVENT_IO_COMPLETION, VI_HNDLR, VI_NULL);
/*
* Now the VISA write command is used to send a request to the
* instrument to generate a sine wave. This demonstrates the
* synchronous read operation that blocks the application until viRead()
* returns. Note that the command syntax is instrument specific.
*/
/*
* Here you specify which string you wish to send to your instrument.
* The command listed below is device specific. You may have to change
* command to accommodate your instrument.
*/
strcpy(stringinput,"SOUR:FUNC SIN; SENS: DATA?\n");
BytesToWrite = (ViUInt32)strlen(stringinput);
status = viWrite (inst, (ViBuf)stringinput,BytesToWrite, &rcount);
/*
* Next the asynchronous read command is called to read back the
* date from the instrument. Immediately after this is called
* the program goes into a loop which will terminate
* on an i/o completion event triggering the asynchronous callback.
* Note that the asynchronous read command returns a job id that is
* a handle to the asynchronous command. We can use this handle
* to terminate the read if too much time has passed.
*/
status = viReadAsync (inst, data, READ_BUFFER_SIZE - 1, &job);
printf("\n\nHit enter to continue.");
letter = getchar();
/*
* If the asynchronous callback was called and the flag was set
* we print out the returned data otherwise we terminate the
* asynchronous job.
*/
if (stopflag == VI_TRUE)
{
/* RdCount was set in the callback */
/* Add a NULL terminator to the read buffer */
data[RdCount] = '\0';
printf ("Here is the data: %s", data);
}
else
{
status = viTerminate (inst, VI_NULL, job);
printf("The asynchronous read did not complete.\n");
}
printf ("\nHit enter to continue.");
fflush(stdin);
getchar();
/*
* Now we close the instrument session and the resource manager
* session to free up resources.
*/
status = viClose(inst);
status = viClose(defaultRM);
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="AsyncIO" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=AsyncIO - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "AsyncIO_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "AsyncIO_MSVC.mak" CFG="AsyncIO - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "AsyncIO - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "AsyncIO - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "AsyncIO - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/AsyncIO.exe"
!ELSEIF "$(CFG)" == "AsyncIO - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/AsyncIO.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "AsyncIO - Win32 Release"
# Name "AsyncIO - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\AsyncIO.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="AsyncIO"
ProjectGUID="{0DF1F546-0EB8-426B-AE08-3247ACC1F355}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIO.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIO.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIO.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIO.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIO.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIO_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="AsyncIO.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,202 @@
/**************************************************************************/
/* Asynchronous SRQ Event Handling Example */
/* */
/* This example shows how to use an asynchronous event handling function */
/* that is called when a service request (SRQ) is issued. */
/* This code uses VISA functions and sets a flag in the handler for the */
/* occurrence of a service request from a GPIB device to break out of */
/* an otherwise infinite loop. The flow of the code is as follows: */
/* */
/* Open A Session To The VISA Resource Manager */
/* Open A Session To A GPIB Device */
/* Install An Event Handler For SRQ Events */
/* Enable SRQ Events */
/* Write A Command To The Instrument To Cause It To Generate An SRQ */
/* Start An Infinite Loop That Can Only Be Stopped By A Handler Flag */
/* Print Out The Data */
/* Close The Instrument Session */
/* Close The Resource Manager Session */
/**************************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "visa.h"
/* Prototype for the SRQ event handler */
ViStatus _VI_FUNCH SRQhandler(ViSession vi, ViEventType etype, ViEvent event, ViAddr userHandle);
#define READ_BUFFER_SIZE 4096
static unsigned char data[READ_BUFFER_SIZE];
static ViAddr uhandle;
static ViStatus status;
static ViUInt32 BytesToRead;
static ViSession inst;
static ViSession defaultRM;
static ViSession Sessionparam;
static ViEventType EventTypeparam;
static ViAddr Addressparam;
static ViUInt32 rcount, rdcount=0;
static volatile ViBoolean stopflag = VI_FALSE;
static int letter;
static char stringinput[256];
/*
* The instrument session, the type of event, and a handle to the event are
* passed to the event handler function along with a user handle which is basically a
* label that could be used to reference the handler.
* First, the event handler calls viReadSTB() to get the serial poll byte from the
* instrument. With GPIB SRQ events, viReadSTB() must be called otherwise
* later SRQ events will not be detected. The handler then reads in the
* data to a global variable and sets a flag that allows the program to
* finish. This is an instrument specific implementation that requires
* viWrite() and viRead() to be called here. Always return VI_SUCCESS from your handler.
*/
ViStatus _VI_FUNCH SRQhandler(ViSession vi, ViEventType etype, ViEvent event, ViAddr userHandle)
{
ViUInt16 stb;
Sessionparam = vi;
EventTypeparam = etype;
Addressparam = userHandle;
status = viReadSTB (inst, &stb);
strcpy (stringinput,"SENS: DATA?\n");
status = viWrite (vi, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &rcount);
BytesToRead = READ_BUFFER_SIZE - 1;
status = viRead (vi, data, BytesToRead, &rdcount);
stopflag = VI_TRUE;
return VI_SUCCESS;
}
int main(void)
{
/*
* First we open a session to the VISA resource manager. We are
* returned a handle to the resource manager session that we must
* use to open sessions to specific instruments.
*/
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Next we use the resource manager handle to open a session to a
* GPIB instrument at address 2. A handle to this session is
* returned in the handle inst.
*/
status = viOpen (defaultRM, "GPIB::2::INSTR", VI_NULL, VI_NULL, &inst);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the device simulator\nHit enter to continue.");
fflush(stdin);
getchar();
goto Close;
}
/*
* Now we install the handler for service request events.
* We must pass our instrument session to the handler, the type of
* event to handle, the handler function name and a user handle
* which acts as a user-defined handle passed to the handler
* function.
*/
status = viInstallHandler (inst, VI_EVENT_SERVICE_REQ, SRQhandler, uhandle);
if (status < VI_SUCCESS)
{
printf("The event handler could not be successfully installed.\nHit enter to continue.");
fflush(stdin);
getchar();
goto Close;
}
/* Now we must actually enable the service request event so that our
* handler will see the events. Note that one of the parameters is
* VI_HNDLR indicating that we want the SRQ events to be handled by
* an asynchronous handler. The alternate mechanism for handling
* events is to queue them and read events from the queue when
* you want to dequeue them in your program.
*/
status = viEnableEvent (inst, VI_EVENT_SERVICE_REQ, VI_HNDLR, VI_NULL);
if (status < VI_SUCCESS)
{
printf("The SRQ event could not be enabled.\nHit enter to continue.");
fflush(stdin);
getchar();
goto Close;
}
/*
* Now the VISA write function is used to instruct the
* instrument to generate a sine wave and assert the SRQ line
* when it is finished. Notice that this is specific to one
* particular instrument.
*/
strcpy (stringinput,"*ESE 0x01; *SRE 0x20; SOUR:FUNC SIN; *OPC\n");
status = viWrite (inst, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &rcount);
printf("The program has passed all of the other status tests.\n");
if (status < VI_SUCCESS)
{
printf("Error writing to the instrument.\nHit enter to continue.");
fflush(stdin);
getchar();
goto Close;
}
/*
* Now the program goes into a wait loop which will only terminate
* if a service request event triggers the asynchronous callback.
*/
printf("Hit enter to continue.");
letter = getchar();
/*
* If the asynchronous event handler was called, then stopflag was set.
* Now, we print out the data read back.
*/
if (stopflag == VI_TRUE)
{
/* rdcount was set in callback */
/* Add a NULL terminator to the read buffer */
data[rdcount] = '\0';
printf ("Here is the data %s\n", data);
printf ("Hit enter to continue.");
fflush(stdin);
getchar();
}
/*
* Now we must uninstall the event handler, and close the session to
* the instrument and the session to the resource manager.
*/
status = viUninstallHandler (inst, VI_EVENT_SERVICE_REQ, SRQhandler, uhandle);
if (status < VI_SUCCESS)
{
printf("There was an error uninstalling the handler.\nHit enter to continue.");
fflush(stdin);
getchar();
}
Close:
status = viClose (inst);
status = viClose (defaultRM);
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="AsyncSRQ" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=AsyncSRQ - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "AsyncSRQ_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "AsyncSRQ_MSVC.mak" CFG="AsyncSRQ - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "AsyncSRQ - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "AsyncSRQ - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "AsyncSRQ - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/AsyncSRQ.exe"
!ELSEIF "$(CFG)" == "AsyncSRQ - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/AsyncSRQ.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "AsyncSRQ - Win32 Release"
# Name "AsyncSRQ - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\AsyncSRQ.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="AsyncSRQ"
ProjectGUID="{FB2EAF25-2003-4295-A24B-2869DDF335D8}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncSRQ.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="AsyncSRQ.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,166 @@
/**************************************************************************/
/* Synchronous SRQ Event Handling Example */
/* */
/* This example shows how to enable VISA to detect SRQ events. */
/* The program writes a command to a device and then waits to receive */
/* an SRQ event before trying to read the response. */
/* */
/* Open A Session To The VISA Resource Manager */
/* Open A Session To A GPIB Device */
/* Enable SRQ Events */
/* Write A Command To The Instrument */
/* Wait to receive an SRQ event */
/* Read the Data */
/* Print Out The Data */
/* Close The Instrument Session */
/* Close The Resource Manager Session */
/**************************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "visa.h"
static ViSession inst;
static ViSession defaultRM;
static ViUInt32 WaitTimeout = 30000; /* Timeout in milliseconds */
static ViEvent ehandle;
static ViEventType etype;
static ViStatus status;
static ViUInt32 rcount;
static ViUInt16 statusByte;
static unsigned char data[3000];
static char stringinput[512], nextstringinput[512];
int main(void)
{
/*
* First we open a session to the VISA resource manager. We are
* returned a handle to the resource manager session that we must
* use to open sessions to specific instruments.
*/
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Next we use the resource manager handle to open a session to a
* GPIB instrument at address 2. A handle to this session is
* returned in the handle inst.
*/
status = viOpen (defaultRM, "GPIB::2::INSTR", VI_NULL, VI_NULL, &inst);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the device simulator");
goto Close;
}
/* Now we must enable the service request event so that VISA
* will receive the events. Note: one of the parameters is
* VI_QUEUE indicating that we want the events to be handled by
* a synchronous event queue. The alternate mechanism for handling
* events is to set up an asynchronous event handling function using
* the VI_HNDLR option. The events go into a queue which by default
* can hold 50 events. This maximum queue size can be changed with
* an attribute but it must be called before the events are enabled.
*/
status = viEnableEvent (inst, VI_EVENT_SERVICE_REQ, VI_QUEUE, VI_NULL);
if (status < VI_SUCCESS)
{
printf("The SRQ event could not be enabled");
goto Close;
}
/*
* Now the VISA write command is used to send a request to the
* instrument to generate a sine wave and assert the SRQ line
* when it is finished. Notice that this is specific to one
* particular instrument.
*/
strcpy(stringinput,"SRE 0x10; SOUR:FUNC SIN\n");
status = viWrite (inst, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &rcount);
if (status < VI_SUCCESS)
{
printf("Error writing to the instrument\n");
goto Close;
}
/*
* Now we wait for an SRQ event to be received by the event queue.
* The timeout is in milliseconds and is set to 30000 or 30 seconds.
* Notice that a handle to the event is returned by the viWaitOnEvent
* call. This event handle can be used to obtain various
* attributes of the event. Finally, the event handle should be closed
* to free system resources.
*/
printf("\nWaiting for an SRQ Event\n\n");
status = viWaitOnEvent (inst, VI_EVENT_SERVICE_REQ, WaitTimeout, &etype, &ehandle);
/*
* If an SRQ event was received we first read the status byte with
* the viReadSTB function. This should always be called after
* receiving a GPIB SRQ event, or subsequent events will not be
* received properly. Then the data is read and the event is closed
* and the data is displayed. Otherwise sessions are closed and the
* program terminates.
*/
if (status >= VI_SUCCESS)
{
status = viReadSTB (inst, &statusByte);
if (status < VI_SUCCESS)
{
printf("There was an error reading the status byte");
goto Close;
}
strcpy(nextstringinput,"SENS: DATA?\n");
status = viWrite (inst, (ViBuf)nextstringinput, (ViUInt32)strlen(nextstringinput), &rcount);
if (status < VI_SUCCESS)
{
printf("There was an error writing the command to get the data");
goto Close;
}
status = viRead (inst, data, 3000, &rcount);
if (status < VI_SUCCESS)
{
printf("There was an error reading the data");
goto Close;
}
status = viClose (ehandle);
if (status < VI_SUCCESS)
{
printf("There was an error closing the event handle");
goto Close;
}
printf("Here is the data: %*s\n", rcount, data);
}
/*
* Now we must close the session to the instrument and the session
* to the resource manager.
*/
Close:
status = viClose (inst);
status = viClose (defaultRM);
printf ("Hit enter to continue.");
fflush (stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="WaitSRQ" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=WaitSRQ - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "WaitSRQ_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "WaitSRQ_MSVC.mak" CFG="WaitSRQ - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "WaitSRQ - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "WaitSRQ - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "WaitSRQ - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/WaitSRQ.exe"
!ELSEIF "$(CFG)" == "WaitSRQ - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/WaitSRQ.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "WaitSRQ - Win32 Release"
# Name "WaitSRQ - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\WaitSRQ.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="WaitSRQ"
ProjectGUID="{5C98A41B-F832-4AE9-BD75-A450FA2A45AA}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/WaitSRQ.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/WaitSRQ.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/WaitSRQ.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/WaitSRQ.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/WaitSRQ_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="WaitSRQ.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,78 @@
/**************************************************************
* This example opens a session to a PXI BACKPLANE resource and
* reserves trigger lines for an identified PXI system.
* The PXI BACKPLANE resource will follow the format:
* PXI0::?::BACKPLANE
* where ? is the number of your PXI chassis in MAX.
*
* Note that the unreserve call only executes if the reservation
* was successfully made. You must use caution when unreserving
* triggers as you could remove automatic reservations made by
* drivers such as DAQmx which could result in hardware damage.
*
* For more information on PXI Timing and Triggering, please see
* KB 3TCCT2D8 at ni.com/support
***************************************************************/
/* Includes */
#define NIVISA_PXI /* to include PXI VISA Attributes */
#include <visa.h>
/* Prototypes */
int ReserveTrigger (int myTrigger, int myBusSegment);
/* Definitions */
int main (void)
{
ViStatus status;
status = ReserveTrigger (0, 1);
return status;
}
int ReserveTrigger (int myTrigger, int myBusSegment)
{
ViSession RsrcManager;
ViSession vi;
ViStatus status = VI_SUCCESS;
/* Open VISA Resource Manager and PXI Backplane Resource */
status = viOpenDefaultRM (&RsrcManager);
if (status < VI_SUCCESS)
goto ReserveDone;
status = viOpen (RsrcManager, "PXI0::2::BACKPLANE", 0, 0, &vi);
if (status < VI_SUCCESS)
goto CloseRMSession;
/* Set the Trigger ID and the Trigger Bus Attributes */
status = viSetAttribute (vi, VI_ATTR_TRIG_ID, myTrigger);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
status = viSetAttribute (vi, VI_ATTR_PXI_TRIG_BUS, myBusSegment);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
/* Reserve the Trigger */
status = viAssertTrigger (vi, VI_TRIG_PROT_RESERVE);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
/* TODO: Enter code that requires the trigger reserved here */
/* UnReserve the Trigger - only do this if we succeeded in Reserving */
status = viAssertTrigger (vi, VI_TRIG_PROT_UNRESERVE);
CloseBackplaneSession:
/* Close the VISA Session to the PXI Backplane */
viClose (vi);
CloseRMSession:
viClose (RsrcManager);
ReserveDone:
return (status);
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="ReserveTrig" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=ReserveTrig - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "ReserveTrig_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "ReserveTrig_MSVC.mak" CFG="ReserveTrig - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "ReserveTrig - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "ReserveTrig - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "ReserveTrig - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/ReserveTrig.exe"
!ELSEIF "$(CFG)" == "ReserveTrig - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/ReserveTrig.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "ReserveTrig - Win32 Release"
# Name "ReserveTrig - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\ReserveTrig.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="ReserveTrig"
ProjectGUID="{10767517-D9FC-4241-9DD9-805ECA12A584}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/ReserveTrig.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/ReserveTrig.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/ReserveTrig.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/ReserveTrig.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/ReserveTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="ReserveTrig.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,80 @@
/**************************************************************
* This example opens a session to a PXI BACKPLANE resource and
* routes trigger lines for an identified PXI system.
* The PXI BACKPLANE resource will follow the format:
* PXI0::?::BACKPLANE
* where ? is the number of your PXI chassis in MAX.
*
* Note that this program routes triggers from a source bus
* to a destination bus but does not reserve a trigger line
* in the source bus. This could allow multiple boards to drive
* a single trigger line which could damage your hardware.
* See the "Reserve PXI Trigger" example for a method of reserving
* the source trigger so automatic drivers such as DAQmx avoid
* using the same line.
*
* For more information on PXI Timing and Triggering, please see
* KB 3TCCT2D8 at ni.com/support
***************************************************************/
/* Includes */
#define NIVISA_PXI /* to include PXI VISA Attributes */
#include <visa.h>
/* Prototypes */
int RouteTrigger (ViInt16 myTrigger, int mySourceSegment, int myDestinationSegment);
/* Definitions */
int main (void)
{
ViStatus status;
status = RouteTrigger (0, 1, 3);
return status;
}
int RouteTrigger (ViInt16 myTrigger, int mySourceSegment, int myDestinationSegment)
{
ViSession RsrcManager;
ViSession vi;
ViStatus status = VI_SUCCESS;
/* Open VISA Resource Manager and PXI Backplane Resource */
status = viOpenDefaultRM (&RsrcManager);
if (status < VI_SUCCESS)
goto RouteDone;
status = viOpen (RsrcManager, "PXI0::2::BACKPLANE", 0, 0, &vi);
if (status < VI_SUCCESS)
goto CloseRMSession;
/* Set the Source and Destination bus PXI VISA Attributes */
status = viSetAttribute (vi, VI_ATTR_PXI_SRC_TRIG_BUS, mySourceSegment);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
status = viSetAttribute (vi, VI_ATTR_PXI_DEST_TRIG_BUS,myDestinationSegment);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
/* Route the trigger */
status = viMapTrigger (vi, myTrigger, myTrigger, VI_NULL);
if (status < VI_SUCCESS)
goto CloseBackplaneSession;
/* TODO: Enter code that requires the trigger routed here */
/* UnRoute the trigger - only do this if we succeeded in Routing */
status = viUnmapTrigger (vi, myTrigger, myTrigger);
CloseBackplaneSession:
/* Close your VISA Sessions */
status = viClose (vi);
CloseRMSession:
status = viClose (RsrcManager);
RouteDone:
return (status);
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="RouteTrig" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=RouteTrig - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "RouteTrig_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "RouteTrig_MSVC.mak" CFG="RouteTrig - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "RouteTrig - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "RouteTrig - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "RouteTrig - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/RouteTrig.exe"
!ELSEIF "$(CFG)" == "RouteTrig - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/RouteTrig.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "RouteTrig - Win32 Release"
# Name "RouteTrig - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\RouteTrig.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="RouteTrig"
ProjectGUID="{C00818A7-D55D-48BE-9E32-09389E1DD4EB}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RouteTrig.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RouteTrig.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RouteTrig.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RouteTrig.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RouteTrig.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RouteTrig_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="RouteTrig.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,159 @@
/********************************************************************/
/* Read and Write to a Serial Instrument */
/* */
/* This code demonstrates sending synchronous read & write commands */
/* through the serial port using VISA. */
/* The example writes the "*IDN?\n" string to the serial port (COM1)*/
/* and attempts to read back a result using the write and read */
/* functions. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Open VISA Session to an Instrument */
/* Configure the Serial Port */
/* Write the Identification Query Using viWrite */
/* Try to Read a Response With viRead */
/* Close the VISA Session */
/********************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "visa.h"
static ViSession defaultRM;
static ViSession instr;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static ViStatus status;
static unsigned char buffer[100];
static char stringinput[512];
int main(void)
{
/*
* First we must call viOpenDefaultRM to get the manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf ("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Now we will open a VISA session to the serial port (COM1).
* We must use the handle from viOpenDefaultRM and we must
* also use a string that indicates which instrument to open. This
* is called the instrument descriptor. The format for this string
* can be found in the function panel by right clicking on the
* descriptor parameter. After opening a session to the
* device, we will get a handle to the instrument which we
* will use in later VISA functions. The AccessMode and Timeout
* parameters in this function are reserved for future
* functionality. These two parameters are given the value VI_NULL.
*/
status = viOpen (defaultRM, "ASRL1::INSTR", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("Cannot open a session to the device.\n");
goto Close;
}
/*
* At this point we now have a session open to the serial instrument.
* Now we need to configure the serial port:
*/
/* Set the timeout to 5 seconds (5000 milliseconds). */
status = viSetAttribute (instr, VI_ATTR_TMO_VALUE, 5000);
/* Set the baud rate to 4800 (default is 9600). */
status = viSetAttribute (instr, VI_ATTR_ASRL_BAUD, 4800);
/* Set the number of data bits contained in each frame (from 5 to 8).
* The data bits for each frame are located in the low-order bits of
* every byte stored in memory.
*/
status = viSetAttribute (instr, VI_ATTR_ASRL_DATA_BITS, 8);
/* Specify parity. Options:
* VI_ASRL_PAR_NONE - No parity bit exists,
* VI_ASRL_PAR_ODD - Odd parity should be used,
* VI_ASRL_PAR_EVEN - Even parity should be used,
* VI_ASRL_PAR_MARK - Parity bit exists and is always 1,
* VI_ASRL_PAR_SPACE - Parity bit exists and is always 0.
*/
status = viSetAttribute (instr, VI_ATTR_ASRL_PARITY, VI_ASRL_PAR_NONE);
/* Specify stop bit. Options:
* VI_ASRL_STOP_ONE - 1 stop bit is used per frame,
* VI_ASRL_STOP_ONE_5 - 1.5 stop bits are used per frame,
* VI_ASRL_STOP_TWO - 2 stop bits are used per frame.
*/
status = viSetAttribute (instr, VI_ATTR_ASRL_STOP_BITS, VI_ASRL_STOP_ONE);
/* Specify that the read operation should terminate when a termination
* character is received.
*/
status = viSetAttribute (instr, VI_ATTR_TERMCHAR_EN, VI_TRUE);
/* Set the termination character to 0xA
*/
status = viSetAttribute (instr, VI_ATTR_TERMCHAR, 0xA);
/* We will use the viWrite function to send the device the string "*IDN?\n",
* asking for the device's identification.
*/
strcpy (stringinput,"*IDN?\n");
status = viWrite (instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
if (status < VI_SUCCESS)
{
printf ("Error writing to the device.\n");
goto Close;
}
/*
* Now we will attempt to read back a response from the device to
* the identification query that was sent. We will use the viRead
* function to acquire the data. We will try to read back 100 bytes.
* This function will stop reading if it finds the termination character
* before it reads 100 bytes.
* After the data has been read the response is displayed.
*/
status = viRead (instr, buffer, 100, &retCount);
if (status < VI_SUCCESS)
{
printf ("Error reading a response from the device.\n");
}
else
{
printf ("\nData read: %*s\n", retCount, buffer);
}
/*
* Now we will close the session to the instrument using
* viClose. This operation frees all system resources.
*/
Close:
status = viClose (instr);
status = viClose (defaultRM);
printf ("Hit enter to continue.");
fflush (stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="RdWrtSrl" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=RdWrtSrl - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "RdWrtSrl_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "RdWrtSrl_MSVC.mak" CFG="RdWrtSrl - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "RdWrtSrl - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "RdWrtSrl - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "RdWrtSrl - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/RdWrtSrl.exe"
!ELSEIF "$(CFG)" == "RdWrtSrl - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/RdWrtSrl.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "RdWrtSrl - Win32 Release"
# Name "RdWrtSrl - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\RdWrtSrl.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="RdWrtSrl"
ProjectGUID="{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtSrl.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtSrl_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="RdWrtSrl.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,112 @@
# Microsoft Developer Studio Project File - Name="TCPIP" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=TCPIP - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "TCPIP_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "TCPIP_MSVC.mak" CFG="TCPIP - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "TCPIP - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "TCPIP - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "TCPIP - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "TCPIP - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "TCPIP - Win32 Release"
# Name "TCPIP - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\tcpip.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,493 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="TCPIP"
ProjectGUID="{02C1C19C-5E65-420B-959C-145A0264F934}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pdb"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.pdb"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/TCPIP_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="tcpip.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,73 @@
/*********************************************************************/
/* This example demonstrates opening a simple TCPIP connection and */
/* does a read and checks a few properties. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Open a session to the TCP/IP site at NI */
/* Perform a read, and check properties */
/* Close all VISA Sessions */
/*********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "visa.h"
static char outputBuffer[VI_FIND_BUFLEN];
static ViSession defaultRM, instr;
static ViStatus status;
static ViUInt32 count;
static ViUInt16 portNo;
int main(void)
{
/* First we will need to open the default resource manager. */
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/* Now we will open a session via TCP/IP to ni.com */
status = viOpen (defaultRM, "TCPIP0::ftp.ni.com::21::SOCKET", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening the session to TCPIP0::ftp.ni.com::21::SOCKET\n");
viClose(defaultRM);
exit (EXIT_FAILURE);
}
viSetAttribute (instr, VI_ATTR_TCPIP_NODELAY, VI_TRUE);
status = viRead (instr, (ViBuf)outputBuffer, 25, &count);
if (status < VI_SUCCESS)
{
printf("viRead failed with error code %x \n",status);
viClose(defaultRM);
exit (EXIT_FAILURE);
}
printf("The server response is:\n %s\n\n",outputBuffer);
status = viGetAttribute (instr, VI_ATTR_TCPIP_ADDR, outputBuffer);
printf(" Address: %s\n",outputBuffer);
status = viGetAttribute (instr, VI_ATTR_TCPIP_HOSTNAME, outputBuffer);
printf(" Host Name: %s\n",outputBuffer);
status = viGetAttribute (instr, VI_ATTR_TCPIP_PORT, &portNo);
printf(" Port: %d\n",portNo);
status = viGetAttribute (instr, VI_ATTR_RSRC_CLASS, outputBuffer);
printf(" Resource Class: %s\n",outputBuffer);
status = viClose (instr);
status = viClose (defaultRM);
printf ("\nHit enter to continue.");
fflush(stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,143 @@
/********************************************************************/
/* Read and Write to a USBTMC Instrument */
/* */
/* This code demonstrates sending synchronous read & write commands */
/* to an USB Test & Measurement Class (USBTMC) instrument using */
/* NI-VISA */
/* The example writes the "*IDN?\n" string to all the USBTMC */
/* devices connected to the system and attempts to read back */
/* results using the write and read functions. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Open VISA Session to an Instrument */
/* Write the Identification Query Using viWrite */
/* Try to Read a Response With viRead */
/* Close the VISA Session */
/********************************************************************/
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
/* Functions like strcpy are technically not secure because they do */
/* not contain a 'length'. But we disable this warning for the VISA */
/* examples since we never copy more than the actual buffer size. */
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "visa.h"
static ViSession defaultRM;
static ViSession instr;
static ViUInt32 numInstrs;
static ViFindList findList;
static ViUInt32 retCount;
static ViUInt32 writeCount;
static ViStatus status;
static char instrResourceString[VI_FIND_BUFLEN];
static unsigned char buffer[100];
static char stringinput[512];
int main(void)
{
int i;
/*
* First we must call viOpenDefaultRM to get the manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf ("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/* Find all the USB TMC VISA resources in our system and store the */
/* number of resources in the system in numInstrs. */
status = viFindRsrc (defaultRM, "USB?*INSTR", &findList, &numInstrs, instrResourceString);
if (status < VI_SUCCESS)
{
printf ("An error occurred while finding resources.\nHit enter to continue.");
fflush(stdin);
getchar();
viClose (defaultRM);
return status;
}
/*
* Now we will open VISA sessions to all USB TMC instruments.
* We must use the handle from viOpenDefaultRM and we must
* also use a string that indicates which instrument to open. This
* is called the instrument descriptor. The format for this string
* can be found in the function panel by right clicking on the
* descriptor parameter. After opening a session to the
* device, we will get a handle to the instrument which we
* will use in later VISA functions. The AccessMode and Timeout
* parameters in this function are reserved for future
* functionality. These two parameters are given the value VI_NULL.
*/
for (i=0; i<numInstrs; i++)
{
if (i > 0)
viFindNext (findList, instrResourceString);
status = viOpen (defaultRM, instrResourceString, VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("Cannot open a session to the device %d.\n", i+1);
continue;
}
/*
* At this point we now have a session open to the USB TMC instrument.
* We will now use the viWrite function to send the device the string "*IDN?\n",
* asking for the device's identification.
*/
strcpy (stringinput,"*IDN?\n");
status = viWrite (instr, (ViBuf)stringinput, (ViUInt32)strlen(stringinput), &writeCount);
if (status < VI_SUCCESS)
{
printf ("Error writing to the device %d.\n", i+1);
status = viClose (instr);
continue;
}
/*
* Now we will attempt to read back a response from the device to
* the identification query that was sent. We will use the viRead
* function to acquire the data. We will try to read back 100 bytes.
* This function will stop reading if it finds the termination character
* before it reads 100 bytes.
* After the data has been read the response is displayed.
*/
status = viRead (instr, buffer, 100, &retCount);
if (status < VI_SUCCESS)
{
printf ("Error reading a response from the device %d.\n", i+1);
}
else
{
printf ("\nDevice %d: %*s\n", i+1, retCount, buffer);
}
status = viClose (instr);
}
/*
* Now we will close the session to the instrument using
* viClose. This operation frees all system resources.
*/
status = viClose (defaultRM);
printf ("Hit enter to continue.");
fflush (stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="RdWrtUSBTMC" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=RdWrtUSBTMC - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "RdWrtUSBTMC_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "RdWrtUSBTMC_MSVC.mak" CFG="RdWrtUSBTMC - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "RdWrtUSBTMC - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "RdWrtUSBTMC - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "RdWrtUSBTMC - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/RdWrtUSBTMC.exe"
!ELSEIF "$(CFG)" == "RdWrtUSBTMC - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/RdWrtUSBTMC.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "RdWrtUSBTMC - Win32 Release"
# Name "RdWrtUSBTMC - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\RdWrtUSBTMC.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="RdWrtUSBTMC"
ProjectGUID="{373DBF7A-ADAD-43D1-B9A1-DDC7421C5B4F}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/RdWrtUSBTMC_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="RdWrtUSBTMC.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,410 @@
/*********************************************************************/
/* This example demonstrates how you may query the USB RAW devices */
/* and list the descriptors associated with those devices. */
/* */
/* The general flow of the code is */
/* Open Resource Manager */
/* Use viFindRsrc() to query available USB RAW instrument */
/* Open a session to the device found */
/* Display the descriptors for this device */
/* Repeat process with the next instrument using viFindNext() */
/* Close all VISA Sessions */
/*********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "visa.h"
/* Defines */
#define USB_REQUESTTYPE_GET_DESCRIPTOR 0x80
#define USB_REQUEST_GET_DESCRIPTOR 6
#define USB_DESCRIPTOR_TYPE_DEVICE 0x01
#define USB_DESCRIPTOR_TYPE_CONFIG 0x02
#define USB_DESCRIPTOR_TYPE_STRING 0x03
#define USB_DESCRIPTOR_TYPE_INTERFACE 0x04
#define USB_DESCRIPTOR_TYPE_ENDPOINT 0x05
#define USB_DESCRIPTOR_LANGUAGE_ENGLISH 0x0409
/* Typedefs */
typedef struct {
ViUInt8 bLength;
ViUInt8 bDescriptorType;
ViUInt16 bcdUSB;
ViUInt8 bDeviceClass;
ViUInt8 bDeviceSubClass;
ViUInt8 bDeviceProtocol;
ViUInt8 bMaxPacketSize0;
ViUInt16 idVendor;
ViUInt16 idProduct;
ViUInt16 bcdDevice;
ViUInt8 iManufacturer;
ViUInt8 iProduct;
ViUInt8 iSerialNumber;
ViUInt8 bNumConfigurations;
} tUsbDeviceDesc;
typedef struct {
ViUInt8 bLength;
ViUInt8 bDescriptorType;
ViUInt16 wTotalLength;
ViUInt8 bNumInterfaces;
ViUInt8 bConfigurationValue;
ViUInt8 iConfiguration;
ViUInt8 bmAttributes;
ViUInt8 MaxPower;
} tUsbConfigDesc;
typedef struct {
ViUInt8 bLength;
ViUInt8 bDescriptorType;
ViUInt8 bInterfaceNumber;
ViUInt8 bAlternateSetting;
ViUInt8 bNumEndpoints;
ViUInt8 bInterfaceClass;
ViUInt8 bInterfaceSubClass;
ViUInt8 bInterfaceProtocol;
ViUInt8 iInterface;
} tUsbInterfaceDesc;
typedef struct {
ViUInt8 bLength;
ViUInt8 bDescriptorType;
ViUInt8 bEndpointAddress;
ViUInt8 bmAttributes;
ViUInt16 wMaxPacketSize;
ViUInt8 bInterval;
} tUsbEndpointDesc ;
typedef struct {
ViUInt8 bLength;
ViUInt8 bDescriptorType;
} tUsbCommonDesc;
/* Prototypes */
void GetStringDescriptor(ViUInt8 stringIndex, ViString stringDesc);
void DisplayEndPointTransferType(ViUInt8 bmAttr);
void DisplayDeviceDescriptor(ViSession instrHandle);
void DisplayConfigDescriptor(ViSession instrHandle);
void TraverseConfigDescriptor(ViChar* configDesc);
/* Variables */
static char instrDescriptor[VI_FIND_BUFLEN];
static ViUInt32 numInstrs;
static ViFindList findList;
static ViSession defaultRM, instr;
static ViStatus status;
int main(void)
{
/* First we will need to open the default resource manager. */
status = viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/* Find all the RAW USB VISA resources in our system and store the */
/* number of resources in the system in numInstrs. */
status = viFindRsrc (defaultRM, "USB?*RAW", &findList, &numInstrs, instrDescriptor);
if (status < VI_SUCCESS)
{
printf ("An error occurred while finding resources.\nHit enter to continue.");
fflush(stdin);
getchar();
viClose (defaultRM);
return status;
}
printf("%d USB RAW instruments found:\n\n",numInstrs);
printf("%s \n\n",instrDescriptor);
/* Now we will open a session to the instrument we just found. */
status = viOpen (defaultRM, instrDescriptor, VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening a session to %s\n",instrDescriptor);
}
else
{
DisplayDeviceDescriptor(instr);
DisplayConfigDescriptor(instr);
viClose (instr);
}
while (--numInstrs)
{
/* stay in this loop until we find all instruments */
status = viFindNext (findList, instrDescriptor); /* find next desriptor */
if (status < VI_SUCCESS)
{ /* did we find the next resource? */
printf ("An error occurred finding the next resource.\nHit enter to continue.");
fflush(stdin);
getchar();
viClose (defaultRM);
return status;
}
printf("%s \n",instrDescriptor);
/* Now we will open a session to the instrument we just found */
status = viOpen (defaultRM, instrDescriptor, VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("An error occurred opening a session to %s\n",instrDescriptor);
}
else
{
DisplayDeviceDescriptor(instr);
DisplayConfigDescriptor(instr);
viClose (instr);
}
} /* end while */
status = viClose(findList);
status = viClose(defaultRM);
printf ("\nHit enter to continue.");
fflush(stdin);
getchar();
return 0;
}
/*********************************************************************/
/* Retrieve the string descriptor for the device */
/* stringIndex: input parameter containing the index for the string */
/* descriptor */
/* stringDesc: output buffer to hold the string descriptor */
/*********************************************************************/
void GetStringDescriptor(ViUInt8 stringIndex, ViString stringDesc)
{
ViUInt16 inBuffer[VI_FIND_BUFLEN];
ViUInt16 stringDescLen;
ViUInt16 retCount;
ViUInt16 i;
tUsbCommonDesc inBufferHeader;
ViStatus status;
/* Query the length of the string package */
status = viUsbControlIn (instr, USB_REQUESTTYPE_GET_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR,
USB_DESCRIPTOR_TYPE_STRING << 8 | stringIndex, USB_DESCRIPTOR_LANGUAGE_ENGLISH, 2, (ViPBuf)&inBufferHeader, &retCount);
if (status < VI_SUCCESS)
{
printf("An error occured when retrieving string descriptor header.\n");
}
if (inBufferHeader.bLength > sizeof(inBuffer))
{
stringDesc[0] = '\0';
printf ("String descriptor size %hu greater than maximum supported size %hu\n",inBufferHeader.bLength,sizeof(inBuffer));
return;
}
/* Query the String Descriptor */
status = viUsbControlIn (instr, USB_REQUESTTYPE_GET_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR,
USB_DESCRIPTOR_TYPE_STRING << 8 | stringIndex, USB_DESCRIPTOR_LANGUAGE_ENGLISH, inBufferHeader.bLength,
(ViPBuf)inBuffer, &retCount);
if (status < VI_SUCCESS)
{
printf("An error occured when retrieving string descriptor.\n");
}
/* Reformat the string */
stringDescLen = (inBufferHeader.bLength / 2) - 1;
for (i = 0; i < stringDescLen; ++i)
{
stringDesc[i] = (ViChar)inBuffer[i+1];
}
/* Append End of the String */
stringDesc[stringDescLen]='\0';
}
/*********************************************************************/
/* Print the Endpoint Transfer Type to console output */
/* bmAttr: bmAttribute value for the Endpoint */
/*********************************************************************/
void DisplayEndPointTransferType(ViUInt8 bmAttr)
{
switch (bmAttr & 0x03)
{
case 0:
printf("Control");
break;
case 1:
printf("Isochronous");
break;
case 2:
printf("Bulk");
break;
case 3:
printf("Interrupt");
break;
default:
printf("Unrecognized Type");
}
printf("\n");
}
/*********************************************************************/
/* This function queries the device descriptor using the instrument */
/* handle that is passed in. Then it print the device descriptor to */
/* console output */
/*********************************************************************/
void DisplayDeviceDescriptor(ViSession instrHandle)
{
ViUInt16 retCount;
ViChar stringDesc[VI_FIND_BUFLEN];
tUsbDeviceDesc deviceDesc;
ViStatus status;
/* Get Device Descriptor */
status = viUsbControlIn (instrHandle, USB_REQUESTTYPE_GET_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR,
USB_DESCRIPTOR_TYPE_DEVICE << 8, 0, sizeof(tUsbDeviceDesc), (ViPBuf)&deviceDesc, &retCount);
if (status < VI_SUCCESS)
{
printf("An error occured when retrieving device descriptor.\n");
}
/* Display Device Descriptor */
printf("*********************\n");
printf("* Device Descriptor *\n");
printf("*********************\n");
printf("bcdUSB:\t\t\t 0x%04X\n",deviceDesc.bcdUSB);
printf("bDeviceClass:\t\t 0x%02X\n",deviceDesc.bDeviceClass);
printf("bDeviceSubClass:\t 0x%02X\n",deviceDesc.bDeviceSubClass);
printf("bDeviceProtocol:\t 0x%02X\n", deviceDesc.bDeviceProtocol);
printf("bMaxPacketSize0:\t 0x%02X\n", deviceDesc.bMaxPacketSize0);
printf("idVendor:\t\t 0x%04X\n", deviceDesc.idVendor);
printf("idProduct:\t\t 0x%04X\n", deviceDesc.idProduct);
printf("bcdDevice:\t\t 0x%04X\n", deviceDesc.bcdDevice);
/* A few Device Descriptor items also could include String Descriptors */
printf("iManufacturer:\t\t 0x%02X\n", deviceDesc.iManufacturer);
if (deviceDesc.iManufacturer != 0)
{
GetStringDescriptor(deviceDesc.iManufacturer,stringDesc);
printf("\t\t\t \"%s\"\n",stringDesc);
}
printf("iProduct:\t\t 0x%02X\n", deviceDesc.iProduct);
if (deviceDesc.iProduct != 0)
{
GetStringDescriptor(deviceDesc.iProduct,stringDesc);
printf("\t\t\t \"%s\"\n",stringDesc);
}
printf("iSerialNumber:\t\t 0x%02X\n", deviceDesc.iSerialNumber);
if (deviceDesc.iSerialNumber != 0)
{
GetStringDescriptor(deviceDesc.iSerialNumber,stringDesc);
printf("\t\t\t \"%s\"\n",stringDesc);
}
printf("bNumConfigurations:\t 0x%02X\n", deviceDesc.bNumConfigurations);
printf("\n");
}
/*********************************************************************/
/* This function queries the config descriptor using the instrument */
/* handle that is passed in. Then it print the config descriptor to */
/* console output */
/*********************************************************************/
void DisplayConfigDescriptor(ViSession instrHandle)
{
tUsbConfigDesc configDescOnly;
ViStatus status;
ViUInt16 retCount;
ViChar configDescComplete[2048];
/* Retrieve the config descriptor */
status = viUsbControlIn(instrHandle, USB_REQUESTTYPE_GET_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR,
USB_DESCRIPTOR_TYPE_CONFIG << 8, 0, sizeof(tUsbConfigDesc),
(ViPBuf)&configDescOnly, &retCount);
if (status < VI_SUCCESS)
{
printf("An error occured when retrieving configuration descriptor.\n");
}
if (configDescOnly.wTotalLength > 2048)
{
printf("Actual size of complete configuration descriptor (%lu) is greater than maximum buffer size (%lu)\n", configDescOnly.wTotalLength, 2048);
return;
}
/* Retrieve the entire config descriptors */
status = viUsbControlIn(instrHandle, USB_REQUESTTYPE_GET_DESCRIPTOR, USB_REQUEST_GET_DESCRIPTOR,
USB_DESCRIPTOR_TYPE_CONFIG << 8, 0, configDescOnly.wTotalLength,
(ViPBuf)configDescComplete, &retCount);
if (status < VI_SUCCESS)
{
printf("An error occured when retrieving configuration descriptor.\n");
}
/* Traverse and Display the entire config descriptor */
printf("****************************\n");
printf("* Configuration Descriptor *\n");
printf("****************************\n");
printf("wTotalLength:\t\t 0x%04X\n", configDescOnly.wTotalLength);
printf("bNumInterfaces:\t\t 0x%02X\n", configDescOnly.bNumInterfaces);
printf("bConfigurationValue:\t 0x%02X\n", configDescOnly.bConfigurationValue);
printf("iConfiguration:\t\t 0x%02X\n", configDescOnly.iConfiguration);
printf("bmAttributes:\t\t 0x%02X\n", configDescOnly.bmAttributes);
printf("MaxPower:\t\t 0x%02X\n\n", configDescOnly.MaxPower);
TraverseConfigDescriptor(configDescComplete);
}
/*********************************************************************/
/* This function parses the complete config descriptor. */
/* Then it print the device descriptor to console output. */
/*********************************************************************/
void TraverseConfigDescriptor(ViChar* pConfigDesc)
{
ViUInt16 currentOffset = ((tUsbConfigDesc *)pConfigDesc)->bLength; /* Skip over the config descriptor */
ViUInt16 totalSize = ((tUsbConfigDesc *)pConfigDesc)->wTotalLength;
tUsbInterfaceDesc * pInterfaceDesc;
tUsbEndpointDesc * pEndpointDesc;
while (currentOffset < totalSize)
{
/* Interface Descriptor */
if (((tUsbCommonDesc *)(pConfigDesc + currentOffset))->bDescriptorType == USB_DESCRIPTOR_TYPE_INTERFACE)
{
pInterfaceDesc = (tUsbInterfaceDesc *)(pConfigDesc + currentOffset);
printf("************************\n");
printf("* Interface Descriptor *\n");
printf("************************\n");
printf("bInterfaceNumber:\t 0x%02X\n",pInterfaceDesc->bInterfaceNumber);
printf("bAlternatedSetting:\t 0x%02X\n",pInterfaceDesc->bAlternateSetting);
printf("bNumEndpoints:\t\t 0x%02X\n",pInterfaceDesc->bNumEndpoints);
printf("bInterfaceClass:\t 0x%02X\n",pInterfaceDesc->bInterfaceClass);
printf("bInterfaceSubClass:\t 0x%02X\n",pInterfaceDesc->bInterfaceSubClass);
printf("bInterfaceProtocol:\t 0x%02X\n",pInterfaceDesc->bInterfaceProtocol);
printf("bInterface:\t\t 0x%02X\n",pInterfaceDesc->iInterface);
printf("\n");
}
/* Endpoint Descriptor */
else if (((tUsbCommonDesc *)(pConfigDesc + currentOffset))->bDescriptorType == USB_DESCRIPTOR_TYPE_ENDPOINT)
{
pEndpointDesc = (tUsbEndpointDesc *)(pConfigDesc + currentOffset);
printf("***********************\n");
printf("* Endpoint Descriptor *\n");
printf("***********************\n");
printf("bEndpointAddress:\t 0x%02X\n",pEndpointDesc->bEndpointAddress);
printf("Transfer Type:\t\t ");
DisplayEndPointTransferType(pEndpointDesc->bmAttributes);
printf("wMaxPacketSize:\t\t 0x%02X\n",pEndpointDesc->wMaxPacketSize);
printf("bInterval:\t\t 0x%02X\n",pEndpointDesc->bInterval);
printf("\n");
}
/* update the iterator */
currentOffset += ((tUsbCommonDesc *)(pConfigDesc + currentOffset))->bLength;
}
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="USBDescriptors" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=USBDescriptors - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "USBDescriptors_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "USBDescriptors_MSVC.mak" CFG="USBDescriptors - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "USBDescriptors - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "USBDescriptors - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "USBDescriptors - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/USBDescriptors.exe"
!ELSEIF "$(CFG)" == "USBDescriptors - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/USBDescriptors.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "USBDescriptors - Win32 Release"
# Name "USBDescriptors - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\USBDescriptors.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,493 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="USBDescriptors"
ProjectGUID="{02C1C19C-5E65-420B-959C-145A0264F934}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pdb"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.pdb"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/USBDescriptors_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="USBDescriptors.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,159 @@
/**********************************************************************/
/* Asynchronous Interrupt Handling Example */
/* */
/* This code opens a session to a controller at Logical Address zero */
/* This example installs an event handler to receive interrupts or */
/* signals. The program can be easily tested by running it and then */
/* asserting interrupts using VXI Interactive Control, VIC. */
/* VIC can be used to assert an interrupt or generate a signal. */
/* Send the StatusId = 0xfd00 for this example. The driver does not */
/* pass interrupts generated from National Instruments' controllers */
/* with certain StatusId values to the event handler. */
/* */
/* The general flow of this code is: */
/* Open Resource Manager */
/* Open VISA session to an instrument */
/* Enable A Handler For Interrupt Events */
/* Wait For An Interrupt Event */
/* (Assert An Interrupt From VIC) */
/* Continue to Wait For Interrupt Events Until User Ends Program */
/* Close the VISA session */
/**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "visa.h"
static ViUInt16 StatusID;
static ViSession instr;
static ViSession defaultRM;
static ViStatus status;
static int tempchar;
ViStatus _VI_FUNCH IntrHandler(ViSession instr, ViEventType etype, ViEvent event, ViAddr userhandle);
/*
* Here we define the function that is called whenever an interrupt event
* is received.
*/
ViStatus _VI_FUNCH IntrHandler(ViSession instr, ViEventType etype, ViEvent event, ViAddr userhandle)
{
/* etype is a number which identifies the event type that has been received. */
viGetAttribute (event, VI_ATTR_SIGP_STATUS_ID, &StatusID);
printf("An event was received. The Status/ID value is 0x%x\n",StatusID);
/* System calls are allowed to be used inside the event handler on
all VISA supported platforms other than Macintosh. */
return VI_SUCCESS;
}
/*
* main code.
*/
int main (void)
{
/*
* First we must call viOpenDefaultRM to get the manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Note: at this point it would be proper programming procedure to
* to call viFindRsrc to find available instruments to which we can
* open a session. The viFindRsrc function returns the descriptor
* for the first of these instrument. viFindNext can then be used to
* get descriptors for the other instruments. These descriptors
* are then used to open a session to the desired instrument.
* For simplicity, we will assume there is a controller
* at Logical Address zero and open a session to this address.
*/
/*
* Now we will open a VISA session to the device at logical
* address zero. We must use the resource manager handle
* from viOpenDefaultRM. We must also use a string which will
* indicate which instrument to open. This is called the
* instrument descriptor. The format for this string can
* be found in the NI-VISA User Manual. After opening a session to the
* device, we will get a handle to the instrument which we
* will use in later VISA functions. The remaining two parameters
* in this function are reserved for future functionality.
* They are given the values VI_NULL.
*/
status = viOpen (defaultRM, "VXI::0::INSTR", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf("Can not open a VISA session to VXI0::0::INSTR\n");
viClose (defaultRM);
exit (EXIT_SUCCESS);
}
/*
* Now we will install the event handler that will monitor interrupt
* events. The handler is named IntrHandler. uhandle is a handle
* allowing data to be passed to the handler from the application.
*/
status = viInstallHandler (instr, VI_EVENT_VXI_SIGP, IntrHandler, VI_NULL);
if (status < VI_SUCCESS)
{
printf("Could not install the interrupt handler.\n");
viClose (defaultRM);
exit (EXIT_SUCCESS);
}
/*
* Now we will enable signal processing events so the program can
* receive them into its event handler. It will only receive events for
* interrupts or signals. See the other interrupt example to see how things
* would differ if events were queued.
*/
status = viEnableEvent (instr, VI_EVENT_VXI_SIGP, VI_HNDLR, VI_NULL);
if (status < VI_SUCCESS)
{
printf("Could not enable the interrupt event.\n");
viClose (defaultRM);
exit (EXIT_SUCCESS);
}
/*
* Under Windows 3.x or the Macintosh, Yield() or PeekMessage() functions
* may need to be called to give up processor time so that VISA events
* will be invoked. Under WIN32 or UNIX, this is not necessary because
* VISA event handlers are spawned in a separate thread.
*/
printf("Press any key to stop waiting for events.\n");
fflush(stdin);
tempchar=getchar();
/*
* The VXI Interactive Control program, VIC, can be used to
* assert an interrupt or generate a signal. Send the StatusId = 0xFD00
* for this example. The driver does not pass interrupts generated from
* National Instruments' controllers with certain StatusId values to
* to the event handler.
*/
/* Now we will uninstall the handler we installed to handle interrupts
* Calling this function will implicitly call viDisableEvent().
* Note that unlike viWaitonEvent, the event is closed for us when we
* exit the handler. Compare this with the other interrupt example. */
status = viUninstallHandler (instr, VI_EVENT_VXI_SIGP, IntrHandler, VI_NULL);
/* Now we will close the session to the instrument using
* viClose. We will tell VISA what to close using the handle, "instr". */
viClose (instr);
viClose (defaultRM);
printf("\nHit Enter to continue.");
fflush(stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="AsyncIntr" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=AsyncIntr - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "AsyncIntr_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "AsyncIntr_MSVC.mak" CFG="AsyncIntr - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "AsyncIntr - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "AsyncIntr - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "AsyncIntr - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/AsyncIntr.exe"
!ELSEIF "$(CFG)" == "AsyncIntr - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/AsyncIntr.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "AsyncIntr - Win32 Release"
# Name "AsyncIntr - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\AsyncIntr.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="AsyncIntr"
ProjectGUID="{B45A4F23-689C-4756-BCD7-B999BDBB29A5}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIntr.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIntr.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIntr.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/AsyncIntr.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/AsyncIntr_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="AsyncIntr.c"
>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@ -0,0 +1,153 @@
/**************************************************************/
/* High Level Register Access Example */
/* */
/* This example reads and writes the offset register of the */
/* device at logical address 0. To do this, the code reads */
/* the register at 0xC006 in A16 space, then writes the value*/
/* back to the same register. Then it moves the first four */
/* configuration registers into local RAM and displays this */
/* on the STDIO window. This code uses only VISA functions. */
/* */
/* The general flow of this code is: */
/* Open Resource Manager */
/* Open VISA session to the instrument at LA 0 */
/* Read the offset register */
/* Write the same value back to the offset register */
/* Move in the first 4 config registers */
/* Close VISA session */
/**************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include "visa.h"
static ViSession defaultRM;
static ViSession instr;
static ViUInt16 value;
static ViBusAddress offset;
static ViUInt16 data[4];
static ViBusSize count;
static ViStatus status;
int main (void)
{
/*
* First we must call viOpenDefaultRM to get the manager
* handle. We will store this handle in defaultRM.
*/
status=viOpenDefaultRM (&defaultRM);
if (status < VI_SUCCESS)
{
printf("Could not open a session to the VISA Resource Manager!\n");
exit (EXIT_FAILURE);
}
/*
* Note: at this point it would be proper programming procedure to
* to call viFindRsrc to find available instruments to which we can
* open a session. The viFindRsrc function returns the descriptor
* for the first of these instrument. viFindNext can then be used to
* get descriptors for the other instruments. These descriptors
* are then used to open a session to the desired instrument.
* For simplicity, we will assume there is a controller
* at Logical Address zero and open a session to this address.
*/
/*
* Now we will open a VISA session to the device at logical
* address zero. We must use the resource manager handle
* from viOpenDefaultRM. We must also use a string which will
* indicate which instrument to open. This is called the
* instrument descriptor. The format for this string can
* be found in the NI-VISA User Manual. After opening a session to the
* device, we will get a handle to the instrument which we
* will use in later VISA functions. The remaining two parameters
* in this function are reserved for future functionality.
* They are given the values VI_NULL.
*/
status = viOpen (defaultRM, "VXI0::0::INSTR", VI_NULL, VI_NULL, &instr);
if (status < VI_SUCCESS)
{
printf ("Cannot open a session to the device.\n");
viClose (defaultRM);
exit (EXIT_SUCCESS);
}
/*
* Now we will read in the offset register and display it
* on the screen. We must use the session handle to the
* instrument from the viOpen function. We will be reading
* 16 bits by using the viIn16 function.
*/
offset = 0x6; /* offset in A16 space from the base of the device's memory */
/*
* Note that the offset is relative to the base of the device's
* memory in that address space. Offset is not the absolute address
* of the device.
*/
status = viIn16 (instr, VI_A16_SPACE, offset, &value);
if (status < VI_SUCCESS) /* an error occurred */
{
printf ("Cannot communicate with device.\n");
}
else /* read was successful */
{
printf ("The offset register of the device at LA 0 is 0x%x\n", value);
}
/*
* Now we will write out the value just read with the
* viOut16 function. We will write this to the offset
* register of the device at logical address zero
* using the instrument handle returned from viOpen.
*/
status = viOut16 (instr, VI_A16_SPACE, offset, value);
if (status < VI_SUCCESS) /* success */
{
printf("Cannot write data to registers.\n");
}
else /* an error occurred */
{
printf ("0x%x was written correctly to the Offset Register.\n",value);
}
/*
* Now we will move the first 4 configuration registers into local
* memory. This will be done using viMoveIn16.
*/
offset = 0; /* we want to get data from 0xC000-0xC007 */
count = 4; /* move 4 16-bit pieces of data */
status = viMoveIn16 (instr, VI_A16_SPACE, offset, count, data);
if (status < VI_SUCCESS) /* error occurred */
{
printf ("Could not move data.\n");
}
else /* successful move */
{
printf ("\nThe first 4 configuration registers are:\n");
printf ("Register 0 = 0x%04hX\n", data[0]);
printf ("Register 1 = 0x%04hX\n", data[1]);
printf ("Register 2 = 0x%04hX\n", data[2]);
printf ("Register 3 = 0x%04hX\n", data[3]);
}
/*
* Now we must close the session to the instrument using
* viClose. We must tell VISA what to close by use of the
* instrument handle, "instr". We will also close the VISA
* Resource Manager.
*/
status = viClose (instr);
status = viClose (defaultRM);
printf("\nHit Enter to continue.");
fflush(stdin);
getchar();
return 0;
}

View File

@ -0,0 +1,115 @@
# Microsoft Developer Studio Project File - Name="HighReg" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=HighReg - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "HighReg_MSVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "HighReg_MSVC.mak" CFG="HighReg - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "HighReg - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "HighReg - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "HighReg - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /machine:I386 /out:"Release/HighReg.exe"
!ELSEIF "$(CFG)" == "HighReg - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "$(VXIPNPPATH)\WinNT\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib /nologo /subsystem:console /map /debug /machine:I386 /out:"Debug/HighReg.exe" /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "HighReg - Win32 Release"
# Name "HighReg - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\HighReg.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visa.h
# End Source File
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\include\visatype.h
# End Source File
# End Group
# Begin Group "Library Files"
# PROP Default_Filter "lib"
# Begin Source File
SOURCE=$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib
# End Source File
# End Group
# End Target
# End Project

View File

@ -0,0 +1,501 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="HighReg"
ProjectGUID="{5287D317-A439-4C06-B49C-1D180B7A257B}"
>
<Platforms>
<Platform
Name="Win32"
/>
<Platform
Name="x64"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/HighReg.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/HighReg.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/HighReg.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/HighReg.map"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Debug|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg.exe"
LinkIncremental="2"
SuppressStartupBanner="true"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/HighReg.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/HighReg.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|x64"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
UseOfMFC="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
TargetEnvironment="3"
TypeLibraryName="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.tlb"
HeaderFileName=""
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="$(VXIPNPPATH)\WinNT\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
StringPooling="true"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
PrecompiledHeaderFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.pch"
AssemblerListingLocation="$(PlatformName)\$(ConfigurationName)/"
ObjectFile="$(PlatformName)\$(ConfigurationName)/"
ProgramDataBaseFileName="$(PlatformName)\$(ConfigurationName)/"
WarningLevel="3"
SuppressStartupBanner="true"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
Culture="1033"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg.exe"
LinkIncremental="1"
SuppressStartupBanner="true"
ProgramDatabaseFile="$(PlatformName)\$(ConfigurationName)/HighReg.pdb"
GenerateMapFile="true"
MapFileName="$(PlatformName)\$(ConfigurationName)/HighReg.map"
SubSystem="1"
TargetMachine="17"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
SuppressStartupBanner="true"
OutputFile="$(PlatformName)\$(ConfigurationName)/HighReg_MSVC.bsc"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
>
<File
RelativePath="HighReg.c"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
/>
</FileConfiguration>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visa.h"
>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\include\visatype.h"
>
</File>
</Filter>
<Filter
Name="Library Files"
Filter="lib"
>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib\msc\visa32.lib"
>
<FileConfiguration
Name="Debug|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
<File
RelativePath="$(VXIPNPPATH)\WinNT\lib_x64\msc\visa64.lib"
>
<FileConfiguration
Name="Debug|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
ExcludedFromBuild="true"
>
<Tool
Name="VCCustomBuildTool"
/>
</FileConfiguration>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

Some files were not shown because too many files have changed in this diff Show More