I'm trying to write a program to interface with an I/O card. The hardware's provided documentation is in C# and I have never used C# before. So, pardon me if this question seems very basic or elementary.
Using the manufacturer's functions calls for at least 3 variables per I/O pin and there are 55 pins. That means a lot of defined variables. As I am writing my code, I am finding that its very ugly. I am reusing snippets here and there that could easily be made a function. But making them a function, I lose the ability to access the multitude of variables. Is there some simple way to do this?
Here is an shortened version of what I am currently working with. The missing pieces look the same. I'm using VS2012. Thanks in advance.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
/* Tool Changer Controller Program
* In theory, this program will run the tool changer through a full cycle.
* This includes: removing the current tool,
* placing the current tool in its appropriate location on the carousel,
* moving the carousel to the correct location of the new tool,
* placing the new tool in the spindle so it is ready for use.
*/
namespace Tool_Changer
{
class Program
{
static void Main(string[] args)
{
// Create PoKeys55 device object
PoKeysDevice_DLL.PoKeysDevice device = new PoKeysDevice_DLL.PoKeysDevice();
// Define all pins and correlate to correct pin
// Pin: Pin #, Status: pass/fail returned, State: On/Off status
// Swivel
byte SwivelCCWA_Pin = 0; //Set*
bool SwivelCCWA_Status = false;
bool SwivelCCWA_State = false;
byte SwivelCWA_Pin = 2; //Set*
bool SwivelCWA_Status = false;
bool SwivelCWA_State = false;
// Telescope
byte TeleExtA_Pin = 4; //Set*
bool TeleExtA_Status = false;
bool TeleExtA_State = false;
byte TeleRetA_Pin = 6; //Set*
bool TeleRetA_Status = false;
bool TeleRetA_State = false;
// Grabber
byte GrabberOpen_Pin = 12; //Set*
bool GrabberOpen_Status = false;
bool GrabberOpen_State = false;
byte ToolPresent_Pin = 13; //Get
bool ToolPresent_Status = false;
bool ToolPresent_State = false;
// Begin Tool Change procedure.
SwivelCWA_State = false;
SwivelCCWA_State = true;
SwivelCWA_Status = device.SetOutput(SwivelCWA_Pin, SwivelCWA_State); // Turn off CW
SwivelCCWA_Status = device.SetOutput(SwivelCCWA_Pin, SwivelCCWA_State); // Turn on CCW
Thread.Sleep(1000);
GrabberOpen_State = true;
GrabberOpen_Status = device.SetOutput(GrabberOpen_Pin, GrabberOpen_State); // Open Grabber
TeleRetA_State = false;
TeleExtA_State = true;
TeleRetA_Status = device.SetOutput(TeleRetA_Pin, TeleRetA_State); // Turn off retract
TeleExtA_Status = device.SetOutput(TeleExtA_Pin, TeleExtA_State); // Turn on extend
Thread.Sleep(1000);