Language - C Sharp: Difference between revisions

From Phidgets Support
No edit summary
No edit summary
(321 intermediate revisions by 10 users not shown)
Line 1: Line 1:
Preamble about the language and its general strengths and weaknesses.
<metadesc>Communicate over USB with sensors, controllers and relays with Phidgets! Our C# library supports Windows/MacOS/Linux using Visual Studio or Mono.</metadesc>
[[Category:Language]]
__NOTOC__
We provide support for the C# language in all major operating systems. We also provide instructions on how to get your project started in a number of common development environments. Select your operating system and preferred development environment below, and follow the instructions to get your project running with Phidgets.


==Assessment for use with Phidgets==
If you do not know which development environment you want to use, or your development environment of choice is not listed, we recommend starting with Mono as the simplest path to getting your code running. Visual Studio is the most popular way to build C# projects, but it also has a steep learning curve.
Our honest opinion on how well this language is suited to controlling Phidgets. If it is a poor choice, suggest and link similar (better) languages.


==Support==
Once you have set up your development environment to run with Phidgets, we recommend you follow our guide on [[Phidget Programming Basics]]. The guide will showcase the fundamentals of programming with Phidgets, with examples in C#.
C# is a [[Levels of Support|fully supported]] language.


==Restrictions==
== Setup Guide ==
In this section, list any restrictions or limitations that this particular language may impose. For example, incompatibility with certain operating systems.
<div class="phd-deck-sequence">
{{PT3_CSHARP_CHOOSE}}{{PT3_CSHARP_WIN_VS}}{{PT3_CSHARP_WIN_VS_1}}{{PT3_CSHARP_WIN_VS_2}}
{{PT3_CSHARP_WIN_MONO}}{{PT3_CSHARP_MAC_MONO}}{{PT3_CSHARP_LNX_MONO}}{{PT3_CSHARP_LNX_DOTNET}}{{PT3_CSHARP_MAC_DOTNET}}{{PT3_CSHARP_WIN_MONODEV}}


==Development Environments and Compilers==
===Visual Studio 2003===
Describe each major version and notable differences relating to programming Phidgets.
===Visual Studio 2005===
===Visual Studio 2008===
===Visual Studio 2010===
==Environment and Libraries==
First, we need to set up the proper environment and get the necessary files off the Phidgets website.
Visit the drivers section at www.phidgets.com and get the latest:
* [http://www.phidgets.com/drivers.php Phidget Framework]
You will need the Phidget Framework to use and program with Phidgets. We also recommend that
you download the following reference materials:
* [http://www.phidgets.com/documentation/Phidget21.NET.zip .NET API Manual]
* [http://www.phidgets.com/documentation/Programming_Manual.pdf Programming Manual]
* The Product Manual for your device (link to the "Device Functionality" page)
* Example Programs written in C# [[http://www.phidgets.com/downloads/examples/CSharp_2.1.8.20110615.zip Windows]] [[http://www.phidgets.com/downloads/examples/CE_2.1.8.20110615.zip .NET Compact Framework]]
The .NET API manual lists calls and events for every type of Phidget and can be used as a reference.
You can find a high level discussion about programming with Phidgets in general in the Programming
Manual. The Device Functionality page explains the general operational information for your device. You may want to have these manuals
open while working through these instructions.
==Getting Started==
===Setting up a Phidgets Project===
The Phidget examples were written using Visual C# 2005 and this tutorial assumes its use. Newer
versions of Visual Studio Express are freely available for download from Microsoft. Older versions of
Visual Studio work as well and would be set up in a similar manner (Note: you would have to recreate
the user interface in the examples for Visual Studio versions earlier than 2005). In Visual Studio:
* Generate a new C# Windows Application with a descriptive name such as PhidgetTest.
* Launch the Add Reference window (Project | Add Reference).
* Under the .NET tab, select the most recent Phidget21.NET library. If it does not appear in this list, then you can Browse to the Phidget Framework installation directory and add the Phidget21.NET. dll. For earlier versions of Visual Studio, you will want to use the Phidget21.NET1.1.dll instead.
* Place a TextBox on your main form for the purpose of capturing output.
* Hook the form's Load and FormClosing events. Phidget initialization and shutdown will take place
there.
The project now has access to Phidgets and we are ready to begin coding.
===Coding For Your Phidget===
Before you can use the Phidget, you must include a reference in the code to the libraries. Launch the
code editor for your form and add this to your using statements:Getting_Started_CSharp created: 11/10/10 Page 2
using Phidgets;
using Phidgets.Events;
Afterwards, a Phidget object will need to be declared and then initialized. For example, we can
declare a PhidgetInterfaceKit inside our form with:
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=CSharp>
    namespace PhidgetTest
    {
        public partial class Form1 : Form
        {
            //The Phidget object declaration
            private InterfaceKit ifKit;
            public Form1()
            {
                InitializeComponent();
            }
            //... Form1_Load and Form1_OnClosing here
        }
    }
</source>
</font>
</div>
The object name for any type of Phidget is listed in the API manual. Every type of Phidget also
inherits functionality from the Phidget base class.
===Connecting to the Phidget===
Next, the program needs to try and connect to the Phidget through a call to open(). Open will tell the
program to continuously try to connect to a Phidget, based on the parameters given, even trying to
reconnect if it gets disconnected. This means that simply calling open does not guarantee you can
use the Phidget immediately. We can handle this by using event driven programming and tracking
the AttachEvents and DetachEvents, or by calling waitForAttachment. WaitForAttachment will block
indefinitely until a connection is made to the Phidget, or an optional timeout is exceeded.
 
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=CSharp>
   
private void Form1_Load(object sender, EventArgs e)
{
    ifKit = new InterfaceKit();
    ifKit.open();
    ifKit.waitForAttachment(3000);
}
</source>
</font>
</div>
The different types of open can be used with parameters to try and get the first device it can find,
open based on its serial number, or even open across the network. The API manual lists all of the
available modes that open provides. One important thing to remember is that when working with
Phidgets, a local connection will reserve the device until closed. This prevents any other instances
from retrieving data from the Phidget, including other programs. The one connection per device limit
does not apply when exclusively using the Phidget Webservice.
===Event Driven Programming===
We recommend the use of event driven programming when working with Phidgets. In C# we can
hook an event handler at loading with the following code:
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=CSharp>
ifKit.SensorChange += new SensorChangeEventHandler(ifKit_SensorChange);
</source>
</font>
</div>
</div>


The ifKit_SensorChange method is defined as follows:
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=CSharp>
        void ifKit_SensorChange(object sender, SensorChangeEventArgs e)
        {
            textBox1.Text = "Index " + e.Index + " Value: " + e.Value;
        }
</source>
</font>
</div>
With this function, the code inside ifKit_SensorChange will get executed every time the
PhidgetInterfaceKit reports a change on one of its analog inputs. Some events such as Attach and
Detach belong to the base Phidget object and thus are common to all types of Phidgets. Please refer
to the API manual for a full list of events and their usage.
At the end of your program, unhook any events and call Application.DoEvents(). This will make sure
there are no outstanding events being processed before calling close.
<div style="background-color: #f3f3f3; border-color: #1c9edb; border-width:1px; border-style: dashed;">
<font size="3">
<source lang=CSharp>
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            ifKit.SensorChange -= new SensorChangeEventHandler(ifKit_SensorChange);
            //run any events in the message queue
            Application.DoEvents();
            ifKit.close();
        }
</source>
</font>
</div>
Working directly with the Phidget
Some values can be read and sent directly to the Phidget, simply use the instance members and
properties. This is also how you would set properties on the Phidget such as the output state or
sensor sensitivity. These functions can be used inside a polling loop as an alternative to event driven
programming.
int val = ifKit.sensors[0].Value;


===Working with multiple Phidgets===
== Quick Downloads ==
If you already know what you're doing and just need the files, you can find them all below.


Multiple Phidgets of the same type can easily be run inside the same program. In our case, it 
=== Documentation ===
requires another PhidgetInterfaceKit instance to be defined and initialized. The new instance can then
be set up, opened and used in the same process as the previous one.
If the application needs to distinguish between the devices, open can be called with the serial
number of a specific Phidget.


===Other Phidgets===
*{{Phidget22API}} (Select C# from drop-down menu)


The design given in this document can also be followed for almost all Phidgets. For example, if
=== Example Code ===
you were using a PhidgetRFID instead of an PhidgetInterfacekit, you would declare an RFID object
instead of an InterfaceKit. The methods and events available would change but they can be accessed
in a similar manner.


==Building your Project==
*{{SampleCode|CSharp|C# Examples}}
Describe the different ways a project could be built using this language.


==Common Problems and Solutions/Workarounds==
===Libraries===
Here you can put various frequent problems and our recommended solutions.


==API Reference==
{{AllQuickDownloads}}
This language uses the .NET API, which can be found [http://www.phidgets.com/documentation/web/NETDoc/Index.html here].

Revision as of 21:03, 27 May 2024


We provide support for the C# language in all major operating systems. We also provide instructions on how to get your project started in a number of common development environments. Select your operating system and preferred development environment below, and follow the instructions to get your project running with Phidgets.

If you do not know which development environment you want to use, or your development environment of choice is not listed, we recommend starting with Mono as the simplest path to getting your code running. Visual Studio is the most popular way to build C# projects, but it also has a steep learning curve.

Once you have set up your development environment to run with Phidgets, we recommend you follow our guide on Phidget Programming Basics. The guide will showcase the fundamentals of programming with Phidgets, with examples in C#.

Setup Guide

C# - Select Development Environment

Select your Development Environment:

Windows

MacOS

Linux

Language - C#

Windows with Visual Studio

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

Visual Studio is an IDE provided by Microsoft that can be used to develop code in a wide variety of programming languages, including C#.

Requirements

Nuget

The Phidget22.NET library is now available on nuget.org here. Nuget is the recommended way to install and use the .NET library in Visual Studio. The nuget package adds targets for .NET Core and .NET Standard, so it should be usable from almost any .NET environment which also supports the C library. See the New Project section on the next slide for step-by-step instructions for adding the nuget package.

Using Phidgets in Your Programs

There are two ways you can use Phidgets in Visual Studio. You can either start from a sample project provided by our code sample generator, or you can start a new project from scratch.

Select your preferred method below for instructions:

«
»

Visual Studio Code Sample

Finding Code Samples

To find the code sample to use for your Phidget, navigate to the Code Samples page and select your device from the drop-down menu.

Once you select your device, the code sample generator will give you a working code sample, and a selection of options to customize it to your needs.

The code samples we provide for C# are written to be used as Console Applications, but the concepts within can easily be re-purposed for use in a Windows Forms Application.

Using the Code Samples

If it's unclear what any of the options do, click on the nearby '?' for more info.

Once you've made your selections, click the Visual Studio Project button under Downloads.

Using the Code Samples

Extract the files and open the .sln file.

Then start the example by pressing the Start button:

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Visual Studio New Project

Setting up a New Project

Create a new project (a C# Console Application will be created for this example):

Setting up a New Project

Next, right-click on References in the solution explorer and choose Manage NuGet Packages.

Setting up a New Project

On the following screen, click the Browse tab and use the search bar to find Phidget22.NET.

Setting up a New Project

Next, install the latest stable version Phidget22.NET

Success! The project now has access to Phidgets. You can confirm it was installed properly by checking the References:

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

Windows with Mono

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

Mono is an open-source programming environment that aims to make Microsoft .NET applications available across all operating systems.

Requirements

First, make sure you have the following installed:

Phidgets Drivers for Windows

Mono

Finding Code Samples

To find the code sample to use for your Phidget, navigate to the Code Samples page and select your device from the drop-down menu.

Once you select your device, the code sample generator will give you a working code sample, and a selection of options to customize it to your needs.

Using the Code Samples

If it's unclear what any of the options do, click on the nearby '?' for more info.

Once you've made your selections, click the Download Example button under Downloads.

Setting up a New Project

When you are building a project from scratch, or adding Phidget functionality to an existing project, you'll need to configure your development environment to properly link the Phidget .NET library.

The easiest way to allow Mono to access the Phidgets .NET library is to place a copy of the Phidget22.NET dll in the same folder as your program.

First, determine which version of the .NET Framework your version of Mono implements by checking the Mono Release Documentation.

Next, download the Phidget22 Development Libraries, which contain dlls for each .NET version.

Navigate in the zip file to /lib/dotnet/netXX where 'XX' is your .NET Framework version (for example, net46 for .NET 4.6), and grab the Phidget22.NET.dll from that folder.

Setting up a New Project

Next, move the Phidget22.NET.dll you extracted into the same folder as your program.

Your folder should look somehting like this:

Compile and Run

Once you are ready to run your program, open the Command Prompt and navigate to your project folder. Next, enter the following command:

mcs /r:Phidget22.NET.dll Program.cs

This will create an executable file called Program.exe. Type in the following command to run the example:

mono Program.exe

Success! The project is now using Phidgets.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

macOS with Mono

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

Mono is an open-source programming environment that aims to make Microsoft .NET applications available across all operating systems.

Requirements

First, make sure you have the following installed:

Phidgets Drivers for macOS

Mono

● You'll also need a copy of Phidget22.NET.dll

Finding Code Samples

To find the code sample to use for your Phidget, navigate to the Code Samples page and select your device from the drop-down menu.

Once you select your device, the code sample generator will give you a working code sample, and a selection of options to customize it to your needs.

Using the Code Samples

If it's unclear what any of the options do, click on the nearby '?' for more info.

Once you've made your selections, click the Download Example button under Downloads.

Setting up a New Project

Whether you are running our examples or adding Phidget functionality to an existing project, you'll need to configure your development environment to properly link the Phidget .NET library.

The easiest way to allow Mono to access the Phidgets .NET library is to place a copy of the Phidget22.NET dll in the same folder as your program.

First, determine which version of the .NET Framework your version of Mono implements by checking the Mono Release Documentation.

Next, download the Phidget22 Development Libraries, which contain dlls for each .NET version.

Navigate in the zip file to /lib/dotnet/netXX where 'XX' is your .NET Framework version (for example, net46 for .NET 4.6), and grab the Phidget22.NET.dll from that folder.

Setting up a New Project

Next, move the Phidget22.NET.dll you extracted into the same folder as your program.

Finally, you need to create a configuration file. Create a new file in the same directory and name it Phidget22.NET.dll.config. Copy the content below to the file.

<configuration>
<dllmap dll="phidget22.dll" target="/Library/Frameworks/Phidget22.framework/Versions/Current/Phidget22" />
</configuration>

Setting up a New Project

Your project directory should now look like this:

Compile and Run

Once you are ready to run your program, open the Terminal and navigate to your project folder. Next, enter the following command:

mcs Program.cs -r:Phidget22.NET.dll

This will create an executable file called Program.exe. Type in the following command to run your program:

mono Program.exe

Success! The project is now using Phidgets.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

Linux with Mono

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

Mono is an open-source programming environment that aims to make Microsoft .NET applications available across all operating systems.

Requirements

First, make sure you have the following installed:

Phidgets Drivers for Linux

● Mono

● A copy of Phidget22.NET.dll


You need our C development libraries in order to use Mono. You can install them with:

apt-get install libphidget22-dev

If you don't already have Mono installed, you can get it with:

apt-get install mono-complete

Setting UDev Rules

By default, Linux will not allow regular users to access physical hardware, as a security feature. This means that you must grant yourself root privileges via sudo to run Phidgets code.

sudo mono program.exe

To avoid having to use sudo every time, you can set up a rules file to allow it automatically using the vendor code for Phidget USB devices. Create a text file called 99-libphidget22.rules containing the following line:

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666"

Mode 666 means every user has permission to read and write to the specified devices. Next, move this file to /etc/udev/rules.d. Now you can run code that uses Phidgets as a regular user without sudo.

Finding Code Samples

To find the code sample to use for your Phidget, navigate to the Code Samples page and select your device from the drop-down menu.

Once you select your device, the code sample generator will give you a working code sample, and a selection of options to customize it to your needs.

Using the Code Samples

If it's unclear what any of the options do, click on the nearby '?' for more info.

Once you've made your selections, click the Download Example button under Downloads.

Setting up a New Project

Whether you are running our examples or adding Phidget functionality to an existing project, you'll need to configure your development environment to properly link the Phidget .NET library.

The easiest way to allow Mono to access the Phidgets .NET library is to place a copy of the Phidget22.NET dll in the same folder as your program.

First, determine which version of the .NET Framework your version of Mono implements by checking the Mono Release Documentation.

Next, download the Phidget22 Development Libraries, which contain dlls for each .NET version.

Navigate in the zip file to /lib/dotnet/netXX where 'XX' is your .NET Framework version (for example, net46 for .NET 4.6), and grab the Phidget22.NET.dll from that folder.

Setting up a New Project

Move the Phidget22.NET.dll you extracted into the same folder as your program.

Your project directory should now look like this:

Compile and Run

Once you are ready to run your program, open the Terminal and navigate to your project folder. Next, enter the following command:

mcs Program.cs -r:Phidget22.NET.dll

An executable file will be created. Run the program using mono with the following command:

mono Program.exe

Success! The project is now using Phidgets.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

Linux with dotnet CLI

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

The dotnet command-line interface is the quickest way to start programming in C#.

Setting UDev Rules

By default, Linux will not allow regular users to access physical hardware, as a security feature. This means that you must grant yourself root privileges via sudo to run Phidgets code.

sudo dotnet run

To avoid having to use sudo every time, you can set up a rules file to allow it automatically using the vendor code for Phidget USB devices. Create a text file called 99-libphidget22.rules containing the following line:

SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="06c2", ATTRS{idProduct}=="00[3-a][0-f]", MODE="666"

Mode 666 means every user has permission to read and write to the specified devices. Next, move this file to /etc/udev/rules.d. Now you can run code that uses Phidgets as a regular user without sudo.

Installing dotnet CLI

For installation instructions, visit Microsoft's documentation and select your Linux distro.

Usually, this will involve adding Microsoft packages to your repository and then installing dotnet via apt-get.

If you are a Visual Studio Code user, you can get the '.NET Install Tool' extension instead of installing manually.

Setting up a New Project

Create a new C# project using the following command:

dotnet new console -o helloworld

This will create a new C# console application in a folder named helloworld in your current directory. Next, enter the folder and type:

dotnet run

If everything installed properly, the application should build and you'll see 'Hello, World!' printed in the terminal.

Getting Phidgets Sample Code

Next we'll use this base project to run some Phidgets sample code. Go to the product page for your Phidget and go to the Code Samples tab. Select C# from the language drop-down and use the check boxes to modify the example if you'd like.

Click the copy button in the corner of the code sample and paste it into the Program.cs for your HelloWorld program, overwriting the existing code.

Compile and Run

Once you've pasted the sample code into the .cs file and saved, you need to add the Phidgets .NET package to your project:

dotnet add package Phidget22.NET

Then you can re-build the project using

dotnet run

Success! The project is now using Phidgets.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

MacOS with dotnet CLI

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

The dotnet command-line interface is the quickest way to start programming in C#.

Installing dotnet CLI

If you plan on using any USB Phidgets that use the HID stack, you'll need to install the Phidget drivers for MacOS. You can check which stack your USB Phidgets use by checking the 'USB Stack' in the product specifications. If all of your Phidgets use the PHIDUSB stack, you can skip installing the drivers.

Next, visit Microsoft's .NET page and download .NET after confirming compatibility with your version of MacOS.

Click on the .pkg file once it's finished downloading, and follow the steps to install the .NET SDK.

If you are a Visual Studio Code user, you can get the '.NET Install Tool' extension instead of installing manually.

Setting up a New Project

Open Finder and go to Utilities -> Terminal. Create a new C# project using the following command:

dotnet new console -o helloworld

This will create a new C# console application in a folder named helloworld in your current directory. Next, type cd helloworld to enter the folder, and type:

dotnet run

If everything installed properly, the application will build and you'll see 'Hello, World!' printed in the terminal. You can open Program.cs using the text editor to see the code.

Getting Phidgets Sample Code

Next we'll use this base project to run some Phidgets sample code. Go to the product page for your Phidget and go to the Code Samples tab. Select C# from the language drop-down and use the check boxes to modify the example if you'd like.

Click the copy button in the corner of the code sample and paste it into the Program.cs for your HelloWorld program, overwriting the existing code.

Compile and Run

Once you've pasted the sample code into the .cs file and saved, you need to add the Phidgets .NET package to your project using this terminal command:

dotnet add package Phidget22.NET

Then you can re-build the project using

dotnet run

Success! The project is now using Phidgets.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»

Language - C#

Windows with MonoDevelop / Xamarin Studio

Welcome to using Phidgets with C#! By using C#, you will have access to the complete Phidget22 API, including events.

MonoDevelop is an open-source programming environment that mimics the capabilities of Microsoft Visual Studio and is available across all operating systems.

Requirements

First, make sure you have the following installed:

Phidgets Drivers for Windows

● MonoDevelop or Xamarin Studio

Setting up a New Project

When you are building a project from scratch, or adding Phidget function calls to an existing project, you'll need to configure your development environment to properly link the Phidget .NET library.

First, create a new .NET project:

Setting up a New Project

Name the project and click Create.

Setting up a New Project

Next, add a reference to the Phidget .NET library:

Setting up a New Project

On the following screen, select Phidget22.NET.dll:

Success! The project now has access to Phidgets.

Finding Code Samples

To find the code sample to use for your Phidget, navigate to the Code Samples page and select your device from the drop-down menu.

Once you select your device, the code sample generator will give you a working code sample, and a selection of options to customize it to your needs.

Using the Code Samples

If it's unclear what any of the options do, click on the nearby '?' for more info.

Once you've made your selections, click the copy button and paste the code into your new project.

What's Next?

Now that you've set up Phidgets in your programming environment, you should read our guide on Phidget Programming Basics to learn the fundamentals of programming with Phidgets.

«
»


Quick Downloads

If you already know what you're doing and just need the files, you can find them all below.

Documentation

Example Code

Libraries