|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.IO.Ports;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
@ -13,8 +14,19 @@ namespace Rs.MotionPlat.AuxiliaryEquipment
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class LaserEquipment
|
|
|
|
|
{
|
|
|
|
|
List<byte> bufferList = new List<byte>();
|
|
|
|
|
SerialPort serialPort;
|
|
|
|
|
const string regStr = @"[+-]\d{5}";
|
|
|
|
|
|
|
|
|
|
public LaserEquipment()
|
|
|
|
|
{
|
|
|
|
|
serialPort = new SerialPort();
|
|
|
|
|
serialPort.PortName = "COM1";
|
|
|
|
|
serialPort.Parity = Parity.None;
|
|
|
|
|
serialPort.StopBits = StopBits.One;
|
|
|
|
|
serialPort.DataBits = 8;
|
|
|
|
|
serialPort.BaudRate = 38400;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 是否已经连接上设备
|
|
|
|
|
/// </summary>
|
|
|
|
@ -22,22 +34,72 @@ namespace Rs.MotionPlat.AuxiliaryEquipment
|
|
|
|
|
|
|
|
|
|
public bool Open()
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (serialPort != null && serialPort.IsOpen)
|
|
|
|
|
{
|
|
|
|
|
serialPort.Close();
|
|
|
|
|
}
|
|
|
|
|
IsConnected = true;
|
|
|
|
|
serialPort.Open();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
IsConnected = false;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public double Read()
|
|
|
|
|
{
|
|
|
|
|
bool readOk = false;
|
|
|
|
|
double val = -999.999;
|
|
|
|
|
if (IsConnected)
|
|
|
|
|
{
|
|
|
|
|
serialPort.Write("%01#RMD**\r");
|
|
|
|
|
string value=serialPort.ReadLine();
|
|
|
|
|
if(Regex.IsMatch(value, regStr))
|
|
|
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
|
|
|
stopwatch.Start();
|
|
|
|
|
while (!readOk && stopwatch.ElapsedMilliseconds<3000)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
int datalen = serialPort.BytesToRead;
|
|
|
|
|
if (datalen>0)
|
|
|
|
|
{
|
|
|
|
|
byte[] buffer=new byte[datalen];
|
|
|
|
|
serialPort.Read(buffer, 0, datalen);
|
|
|
|
|
foreach (byte b in buffer)
|
|
|
|
|
{
|
|
|
|
|
if(b!=13)
|
|
|
|
|
{
|
|
|
|
|
bufferList.Add(b);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
bufferList.Add((byte)b);
|
|
|
|
|
readOk = true;
|
|
|
|
|
return ParseValue();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return val;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
double ParseValue()
|
|
|
|
|
{
|
|
|
|
|
string val = Encoding.ASCII.GetString(bufferList.ToArray());
|
|
|
|
|
|
|
|
|
|
Regex reg = new Regex("[+-][^*]*");
|
|
|
|
|
if(reg.IsMatch(val))
|
|
|
|
|
{
|
|
|
|
|
string v1 = reg.Match(val).Value;
|
|
|
|
|
double v2 = double.Parse(v1)/10000;
|
|
|
|
|
return v2;
|
|
|
|
|
}
|
|
|
|
|
bufferList.Clear();
|
|
|
|
|
return -999.999;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|