//读写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); //通知 } }
/* * 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); }