
class clsFaulhaber
{
private static SerialPort conn= new SerialPort();
private static int POS = 0x00;
private static int OST = 0x00;
private static bool Enable = false;
private static bool Error = false;
public static void Open()
{
conn.PortName = "COM2";
conn.BaudRate = 9600;
conn.DataBits = 8;
conn.StopBits = StopBits.One;
conn.Parity = Parity.None;
conn.ReadTimeout = 1500;
try
{
conn.Open();
}
catch
{
MessageBox.Show("Open " + conn.PortName + " Fill! Program will Run in debug Mode ");
return;
}
}
private static void SendCommend(SerialPort sp, string str)
{
byte[] data = Encoding.Default.GetBytes(str + '\r');
sp.Write(data, 0, data.Length);
}
private static bool GetResponse(SerialPort sp, ref string str)
{
sp.ReadTimeout = 3000;
try
{
str = sp.ReadTo("\r\n");
Error = false;
}
catch
{
str = string.Empty;
Error = true;
return false;
}
return true;
}
public static void ReadPOS()
{
string str = string.Empty;
conn.DiscardInBuffer();
conn.DiscardOutBuffer();
SendCommend(conn, "POS");
str = string.Empty;
if (GetResponse(conn, ref str))
{
if (clsLib.IsNumber(str))
{
POS = Convert.ToInt32(str);
}
}
}
public static void ReadOST()
{
string str = string.Empty;
conn.DiscardInBuffer();
conn.DiscardOutBuffer();
SendCommend(conn, "OST");
str = string.Empty;
if (GetResponse(conn, ref str))
{
if (clsLib.IsNumber(str))
{
OST = Convert.ToInt32(str);
}
}
}
public static void Task()
{
string str = string.Empty;
while (true)
{
if (!conn.IsOpen)
{
Thread.Sleep(2000);
continue;
}
ReadPOS();
ReadOST();
Thread.Sleep(10);
}
}
public static bool SVON(bool EN)
{
if (!conn.IsOpen) return false;
string str = string.Empty;
bool flag = false;
if (!EN) SendCommend(conn, "DI");
else SendCommend(conn, "EN");
Enable = false;
if (GetResponse(conn, ref str))
{
if (str == "OK")
{
flag = true;
}
}
if (!flag) Enable = false;
else Enable = EN;
return flag;
}
public static bool SearchHome()
{
OST = OST & 0xFFFF;
if (!conn.IsOpen) return false;
string str = string.Empty;
bool flag = false;
conn.DiscardInBuffer();
conn.DiscardOutBuffer();
SendCommend(conn, "GOHOSEQ");
if (GetResponse(conn, ref str))
{
if (str == "OK")
{
flag = true;
}
}
return flag;
}
public static bool Reset()
{
if (!conn.IsOpen) return false;
string str = string.Empty;
bool flag = false;
SendCommend(conn, "HO");
if (GetResponse(conn, ref str))
{
if (str == "OK")
{
flag = true;
}
}
return flag;
}
public static bool Move(int target)
{
OST = OST & 0xFFFF;
if (!conn.IsOpen) return false;
string str = string.Empty;
bool flag = false;
SendCommend(conn, "LA" + target.ToString());
if (!GetResponse(conn, ref str))
{
return flag;
}
if (str != "OK")
{
return flag;
}
SendCommend(conn, "M");
if (!GetResponse(conn, ref str))
{
return flag;
}
if (str != "OK")
{
return flag;
}
flag = true;
return flag;
}
public static int Encode
{
get
{
return POS;
}
}
public static bool TPOS
{
get
{
return ((OST & 0x10000) > 0x00) ? true : false;
}
}
public static bool Homing
{
get
{
return ((OST & 0x01) > 0x00) ? true : false;
}
}
public static bool SON
{
get
{
return Enable;
}
}
public static bool Alarm
{
get
{
if (!conn.IsOpen) return true;
return Error;
}
}
}
沒有留言:
張貼留言