using System;
using MccDaq; // add reference to project for MccDaq
namespace TinSCanExample
{
class Program
{
public const int BLOCKSIZE = 50;
public const int CHANCOUNT = 4;
public const int FIRSTCHANNEL = 0;
public const int LASTCHANNEL = 3;
public const int FREQ = 2;
public const int BUFFERSIZE = BLOCKSIZE * CHANCOUNT;
public const string DEVICE = "QUAD04";
static void Main(string[] args)
{
MccDaq.ErrorInfo RetVal;
int BoardNum = 0;
//locate the USB-TC
BoardNum = GetBoardNum(DEVICE);
if (BoardNum == -1)
{
Console.WriteLine("No {0} detected!", DEVICE);
WaitForKey();
return;
}
else
{
MccBoard daq = new MccDaq.MccBoard(BoardNum);
MccDaq.Quadrature Quadrature = MccDaq.Quadrature.X1Quad;
MccDaq.CountingMode CountingMode = MccDaq.CountingMode.ModuloN;
MccDaq.DataEncoding DataEncoding = MccDaq.DataEncoding.BinaryEncoding;
MccDaq.IndexMode IndexMode = MccDaq.IndexMode.IndexDisabled;
MccDaq.OptionState InvertIndex = MccDaq.OptionState.Disabled;
MccDaq.FlagPins FlagPins = MccDaq.FlagPins.CarryBorrow;
MccDaq.OptionState GateEnable = MccDaq.OptionState.Enabled;
int CounterNum = 1;
for (CounterNum = 1; CounterNum < 3; CounterNum++)
{
RetVal = daq.C7266Config(CounterNum,
Quadrature,
CountingMode,
DataEncoding,
IndexMode,
InvertIndex,
FlagPins,
GateEnable);
IsError(RetVal); //check function return value
MccDaq.CounterRegister RegName;
int LoadValue = 0; //set the counter to begin reading at zero
RegName = (MccDaq.CounterRegister)(MccDaq.CounterRegister.QuadCount1 + CounterNum - 1);
RetVal = daq.CLoad32(RegName, LoadValue);
IsError(RetVal); //check function return value
LoadValue = 100000; //set the counter to roll over to zero at 100000
RegName = (MccDaq.CounterRegister)(MccDaq.CounterRegister.QuadPreset1 + CounterNum - 1);
RetVal = daq.CLoad32(RegName, LoadValue);
IsError(RetVal); //check function return value
}
System.ConsoleKeyInfo cki = new System.ConsoleKeyInfo();
MccDaq.StatusBits SBits = 0;
int EncoderData;
Console.WriteLine("\nPress any key to Exit...\n");
do
{
CounterNum = 1;
RetVal = daq.CIn32(CounterNum, out EncoderData);
IsError(RetVal);//check function return value
daq.CStatus(CounterNum, out SBits);
if ((SBits & MccDaq.StatusBits.Updown) != 0)
Console.Write("Encoder #1 {0}\tDirection {1}\t", EncoderData.ToString("00000"), "UP ");
else
Console.Write("Encoder #1 {0}\tDirection {1}\t", EncoderData.ToString("00000"), "DOWN");
CounterNum = 2;
RetVal = daq.CIn32(CounterNum, out EncoderData);
IsError(RetVal);//check function return value
daq.CStatus(CounterNum, out SBits);
if ((SBits & MccDaq.StatusBits.Updown) != 0)
Console.Write("Encoder #2 {0}\tDirection {1}\r", EncoderData.ToString("00000"), "UP ");
else
Console.Write("Encoder #2 {0}\tDirection {1}\r", EncoderData.ToString("00000"), "DOWN");
} while (!Console.KeyAvailable);
cki = Console.ReadKey();
}
}
/************************************************************************/
public static int GetBoardNum(string dev)
{
for (int BoardNum = 0; BoardNum < 99; BoardNum++)
{
MccDaq.MccBoard daq = new MccDaq.MccBoard(BoardNum);
if (daq.BoardName.Contains(dev))
{
Console.WriteLine("{0} board number = {1}\n", dev, BoardNum.ToString());
daq.FlashLED();
return BoardNum;
}
}
return -1;
}
/************************************************************************/
public static void WaitForKey()
{
Console.WriteLine("\nPress any key to continue...");
do
{ //idle loop
System.Threading.Thread.Sleep(10);
} while (!Console.KeyAvailable);
}
/************************************************************************/
public static int IsError(ErrorInfo e)
{
if (e.Value != 0)
{
Console.WriteLine(e.Message);
WaitForKey();
return 1;
}
return 0;
}
}
}