Example #1
0
        //读写EEPROM完成后的回调事件
        private void ReadWriteCallBack(IAsyncResult iAr)
        {
            if (OnReadWriteFinished != null)
            {
                AsyncResult ar = (AsyncResult)iAr;

                int P = (int)iAr.AsyncState;
                //int p = Convert.ToInt16(iAr.AsyncState);

                byte[] Value;
                bool   IsOk;

                if (P == 0)
                {
                    Value = new byte[1];
                    WriteParamWorker temp = (WriteParamWorker)ar.AsyncDelegate; //获取委托的引用

                    IsOk = temp.EndInvoke(iAr);                                 //获取委托执行后的结果(执行是否成功)
                }
                else
                {
                    ReadParamWorker temp = (ReadParamWorker)ar.AsyncDelegate;

                    IsOk = temp.EndInvoke(iAr);  //获取委托执行后的结果(执行是否成功)

                    Value = new byte[_DataBuff.Length];

                    Value = System.Text.Encoding.Unicode.GetBytes(_DataBuff.ToString());
                }

                OnReadWriteFinished(IsOk, P, Value);  //通知
            }
        }
Example #2
0
        /*
         * public uint NodeID { get { return _NodeID; } }
         * public string ModuleName { get { return _ModuleName; } }
         * public string SerialNo { get { lock (SyncObject) return _SerialNo; } }
         * public string FireWareVer { get { lock (SyncObject) return _FireWareVer; } }
         * public Byte ModuleIndex { get { lock (SyncObject) return _ModuleIndex; } }
         * public Byte ErrorCode { get { lock (SyncObject) return _ErrorCode; } }
         * public Byte WaringCode { get { lock (SyncObject) return _WaringCode; } }
         * public TModuleType ModuleType { get { lock (SyncObject) return _ModuleType; } }
         * public Byte ExecMask { get { lock (SyncObject) return _ExecMask; } }
         * public TModuleState ModuleState { get { lock (SyncObject) return _ModuleState; } }
         */

        public TBaseModule(uint ID, string Name)
        {
            //SyncObject = new object();

            _NodeID     = ID;
            _ModuleName = Name;
            _ModuleType = TModuleType.mtNone;
            _ExecMask   = 0;

            _ModuleState = TModuleState.msNone;

            _PortOpened = false;

            _WorkThread = WorkThread.CreateInstance();
            _WorkThread.AddModuleToList(this);

            //Dlgt = new AsyncSendWorker(SendMsgMethod);

            WriteDlgt = new WriteParamWorker(WriteDataToEEPRom);
            ReadDlgt  = new ReadParamWorker(ReadDataFromEEPRom);

            _SendCmd = new byte[8];

            //_SendCmd = System.Text.Encoding.Unicode.GetBytes();

            //处理该模块硬件响应数据的线程
            //Task.Factory.StartNew(DataHandlerMethod, cancelTokenSource.Token);
        }