Description
SolidSoils4Arduino is a client library built on the .NET Framework 4.5 and providing an easy way to interact with Arduino boards.
The library implements the main communication protocols, the first of which is the Firmata protocol.
It aims to make communication with Arduino boards in MS .NET projects easier
through a comprehensive and consistent set of methods and events.
The library supports the following protocols:
SolidSoils4Arduino alternatives and similar packages
Based on the "Misc" category.
Alternatively, view SolidSoils4Arduino alternatives based on common mentions on social networks and blogs.
-
Polly
Polly is a .NET resilience and transient-fault-handling library that allows developers to express policies such as Retry, Circuit Breaker, Timeout, Bulkhead Isolation, and Fallback in a fluent and thread-safe manner. From version 6.0.1, Polly targets .NET Standard 1.1 and 2.0+. -
FluentValidation
A popular .NET validation library for building strongly-typed validation rules. -
MediatR
Simple, unambitious mediator implementation in .NET -
Humanizer
Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities -
Edge.js
Run .NET and Node.js code in the same process on Windows, macOS, and Linux. -
ReactJS.NET
.NET library for JSX compilation and server-side rendering of React components -
Rant
The Rant Procedural Text Generation DSL http://berkin.me/rant/ -
YoutubeExplode
Abstraction layer over YouTube's internal API -
Hashids.net
A small .NET package to generate YouTube-like hashes from one or many numbers. Use hashids when you do not want to expose your database ids to the user. -
ScriptCS
Write C# apps with a text editor, nuget and the power of Roslyn! -
Coravel
Near-zero config .NET library that makes advanced application features like Task Scheduling, Caching, Queuing, Event Broadcasting, and more a breeze! -
Enums.NET
Enums.NET is a high-performance type-safe .NET enum utility library -
Scientist.NET
A .NET library for carefully refactoring critical paths. It's a port of GitHub's Ruby Scientist library -
WorkflowEngine
WorkflowEngine.NET - component that adds workflow in your application. It can be fully integrated into your application, or be in the form of a specific service (such as a web service). -
Jurassic
A .NET library to parse and execute JavaScript code. -
HidLibrary
This library enables you to enumerate and communicate with Hid compatible USB devices in .NET. -
Warden
Define "health checks" for your applications, resources and infrastructure. Keep your Warden on the watch. -
Guard
A high-performance, extensible argument validation library. -
DeviceId
A simple library providing functionality to generate a 'device ID' that can be used to uniquely identify a computer. -
Aeron.NET
Efficient reliable UDP unicast, UDP multicast, and IPC message transport - .NET port of Aeron -
Jot
Jot is a library for persisting and applying .NET application state. -
ByteSize
ByteSize is a utility class that makes byte size representation in code easier by removing ambiguity of the value being represented. ByteSize is to bytes what System.TimeSpan is to time. -
Streams
A lightweight F#/C# library for efficient functional-style pipelines on streams of data. -
Jering.Javascript.NodeJS
Invoke Javascript in NodeJS, from C# -
Mediator.Net
A simple mediator for .Net for sending command, publishing event and request response with pipelines supported -
LINQPad.QueryPlanVisualizer
SQL Server and PostgreSQL query execution plan visualizer for LINQPad -
DeviceDetector.NET
The Universal Device Detection library will parse any User Agent and detect the browser, operating system, device used (desktop, tablet, mobile, tv, cars, console, etc.), brand and model. -
Valit
Valit is dead simple validation for .NET Core. No more if-statements all around your code. Write nice and clean fluent validators instead! -
https://github.com/minhhungit/ConsoleTableExt
A fluent library to print out a nicely formatted table in a console application C# -
FormHelper
ASP.NET Core - Transform server-side validations to client-side without writing any javascript code. (Compatible with Fluent Validation) -
SystemWrapper
.NET library for easier testing of system APIs. -
Validot
Validot is a performance-first, compact library for advanced model validation. Using a simple declarative fluent interface, it efficiently handles classes, structs, nested members, collections, nullables, plus any relation or combination of them. It also supports translations, custom logic extensions with tests, and DI containers. -
Shielded
A strict and mostly lock-free Software Transactional Memory (STM) for .NET -
Outcome.NET
Never write a result wrapper again! Outcome.NET is a simple, powerful helper for methods that return a value, but sometimes also need to return validation messages, warnings, or a success bit. -
RecordParser
Zero Allocation Writer/Reader Parser for .NET Core -
NaturalSort.Extension
๐ Extension method for StringComparison that adds support for natural sorting (e.g. "abc1", "abc2", "abc10" instead of "abc1", "abc10", "abc2"). -
FlatMapper
FlatMapper is a library to import and export data from and to plain text files. -
NIdenticon
NIdenticon is a library for creating simple Identicons -
SystemTextJson.JsonDiffPatch
High-performance, low-allocating JSON object diff and patch extension for System.Text.Json. Support generating patch document in RFC 6902 JSON Patch format. -
AzureCrawler
Take HTML Snapshots for your Angular, Ember, Durandal or any JavaScript applications -
BerTlv.NET
A library for parsing BER TLV data (like EMV credit cards). -
trybot
A transient fault handling framework including such resiliency solutions as Retry, Timeout, Fallback, Rate Limit and Circuit Breaker. -
AdaskoTheBeAsT.FluentValidation.MediatR
FluentValidation behavior for MediatR
Free Global Payroll designed for tech teams
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of SolidSoils4Arduino or a related project?
README
SolidSoils4Arduino
SolidSoils4Arduino is a client library built on .NET Standard 2.1. It offers an easy way to interact with Arduino boards. The library implements the main communication protocols, the first of which is the Firmata protocol. It aims to make communication with Arduino boards in MS .NET projects easier through a comprehensive and consistent set of methods and events.
The library supports the following protocols:
- Serial (ASCII) messaging
- Firmata
- I2C (as it has become part of Firmata)
All protocols can be mixed. The library brokers all incoming message types and directs them to the appropriate requestors (synchronous as well as asynchronous).
Currently Standard Firmata 2.6 is supported. (Extra capabilities of Standard Firmata Plus and Configurable Firmata are currently not supported by this client library.)
Technology: C#/Microsoft .NET Standard 2.1
Dependencies: none
Downloads
The library is available as a NuGet package.
API Documentation
Getting started
Setup your Arduino with StandardFirmata
- Download the Arduino IDE and install it.
- Connect your Arduino board to your computer using an USB cable.
- Start the Arduino IDE and navigate to File > Examples > Firmata > StandardFirmata.
- Upload the sketch.
Basic test (C#)
Preparation
- Your Arduino is setup with the StandardFirmata sketch (see above).
- An LED is connected to pin 10 of your Arduino.
Further steps
- Open Visual Studio and create a new C# console program project.
- Add NuGet package SolidSoils.Arduino.Client.
- In Program.cs put the following code:
using System;
using Solid.Arduino.Firmata;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
ISerialConnection connection = GetConnection();
if (connection != null)
using (var session = new ArduinoSession(connection))
PerformBasicTest(session);
Console.WriteLine("Press a key");
Console.ReadKey(true);
}
private static ISerialConnection GetConnection()
{
Console.WriteLine("Searching Arduino connection...");
ISerialConnection connection = EnhancedSerialConnection.Find();
if (connection == null)
Console.WriteLine("No connection found. Make shure your Arduino board is attached to a USB port.");
else
Console.WriteLine($"Connected to port {connection.PortName} at {connection.BaudRate} baud.");
return connection;
}
private static void PerformBasicTest(IFirmataProtocol session)
{
var firmware = session.GetFirmware();
Console.WriteLine($"Firmware: {firmware.Name} version {firmware.MajorVersion}.{firmware.MinorVersion}");
var protocolVersion = session.GetProtocolVersion();
Console.WriteLine($"Firmata protocol version {protocolVersion.Major}.{protocolVersion.Minor}");
session.SetDigitalPinMode(10, PinMode.DigitalOutput);
session.SetDigitalPin(10, true);
Console.WriteLine("Command sent: Light on (pin 10)");
Console.WriteLine("Press a key");
Console.ReadKey(true);
session.SetDigitalPin(10, false);
Console.WriteLine("Command sent: Light off");
}
}
}
Display board capabilities
Preparation
- Your Arduino is setup with the StandardFirmata sketch (see above).
- In this example the Arduino is connected to COM3 at 57600 baud. Modify as needed.
Further steps
- Open Visual Studio and create a new C# console program project.
- Add NuGet package SolidSoils.Arduino.Client.
- In Program.cs put the following code:
using System;
using Solid.Arduino.Firmata;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
DisplayPortCapabilities();
Console.WriteLine("Press a key");
Console.ReadKey(true);
}
private static void DisplayPortCapabilities()
{
using (var session = new ArduinoSession(new EnhancedSerialConnection("COM3", SerialBaudRate.Bps_57600)))
{
BoardCapability cap = session.GetBoardCapability();
Console.WriteLine();
Console.WriteLine("Board Capability:");
foreach (var pin in cap.Pins)
{
Console.WriteLine("Pin {0}: Input: {1}, Output: {2}, Analog: {3}, Analog-Res: {4}, PWM: {5}, PWM-Res: {6}, Servo: {7}, Servo-Res: {8}, Serial: {9}, Encoder: {10}, Input-pullup: {11}",
pin.PinNumber,
pin.DigitalInput,
pin.DigitalOutput,
pin.Analog,
pin.AnalogResolution,
pin.Pwm,
pin.PwmResolution,
pin.Servo,
pin.ServoResolution,
pin.Serial,
pin.Encoder,
pin.InputPullup);
}
}
}
}
}
Current status
v1.0.0
Milestones
- Firmata protocol implemented, unit- and integration-tested.
- I2C protocol implemented and unit-tested.
- Serial ASCII protocol implemented and unit-tested.
- API fully documented.
- IObservable methods implemented (to be unittested).
- Mono support added.
- NuGet package published.
License
Contributing
If you discover a bug or would like to propose a new feature, please open a new issue.
To contribute, fork this respository and create a new topic branch for the bug, feature or other existing issue you are addressing. Submit the pull request against the master branch.
If you would like to contribute but don't have a specific bugfix or new feature to contribute, you can take on an existing issue. Add a comment to the issue to express your intent to begin work and/or to get any additional information about the issue.
Please, test your contributed code thoroughly. In your pull request, describe tests performed to ensure that no existing code is broken and that any changes maintain backwards compatibility with the existing API.
*Note that all licence references and agreements mentioned in the SolidSoils4Arduino README section above
are relevant to that project's source code only.