| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | using System;using System.Collections.Generic;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Runtime.InteropServices;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Ipc;using OTSMeasureApp.ServiceCenter;namespace ServiceInterface{    public class HardwareController     {               //[DllImport("user32.dll", EntryPoint = "SendMessage")]        //private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);        private IpcSEMController remoteObj;        private bool ifConnect = false;        static HardwareController sem = null;       public static HardwareController GetSemController()        {            if (sem == null)            {                sem = new HardwareController();            }            return sem;        }        private HardwareController()        {                        }        public bool Connect()        {            if (!ifConnect)            {                IpcClientChannel channel = new IpcClientChannel();                //Register the channel with ChannelServices.                ChannelServices.RegisterChannel(channel, false);                remoteObj = (IpcSEMController)Activator.GetObject(typeof(IpcSEMController), "ipc://ServerChannel/RemoteObject");                if (remoteObj == null)                {                    return false;                }                ifConnect = true;            }                       return true;        }        public bool DisConnect()        {            //remoteObj = null;            return true;        }        public bool MoveSEMToPoint(Point poi, double rotation)        {            //Connect();            if (remoteObj == null)            {                return false;            }            return remoteObj.MoveSEMToPoint(poi , rotation);        }        public bool GetSemPositionXY(ref double ls_PositionX, ref double ls_PositionY, ref double ls_PositionR)        {            //Connect();            if (remoteObj == null)            {                return false;            }            return remoteObj.GetSemPositionXY(ref ls_PositionX,ref ls_PositionY, ref ls_PositionR);        }          }}
 |