Note that there are some explanatory texts on larger screens.

plurals
  1. POUsing multiple variables across multiple functions in C#
    text
    copied!<p>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.</p> <p>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?</p> <p>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.</p> <pre><code>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); </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload