//--------------------------------------------------------------------- //确认数据 public void SendDataACK(byte recNo) { //发送确认数据【主机→采集器】 DataPackage pkgData = new DataPackage(); pkgData.CtrlHead.CMD_ID = HCCommand.DATA_ACK; pkgData.CtrlHead.CE_ID = ceInfo.CE_ID; Struct_OKWord okWord = new Struct_OKWord(); okWord.TriggerType = RecordTriggerType.Manual; okWord.FileType = AckFileType.Image; using (MemoryStream ms = new MemoryStream()) { using (BinaryWriter bw = new BinaryWriter(ms)) { bw.Write((byte)0); bw.Write(okWord.OkWord); bw.Write(recNo); } pkgData.PureData = ms.ToArray(); } pkgData.Pack(); SendData(pkgData); }
public void ReceiveDataACK(DataPackage pkgData) { //收到确认数据【采集器→主机】 Struct_OKWord okWord = new Struct_OKWord(); byte status_ctl; byte recNo; byte[] dataBuffer = pkgData.PureData; using (MemoryStream ms = new MemoryStream(dataBuffer)) { using (BinaryReader br = new BinaryReader(ms)) { status_ctl = br.ReadByte(); //输出开关量状态 okWord.OkWord = br.ReadByte(); recNo = br.ReadByte(); //要确认的文件记录号,默认为 0。 } } if ((recNo == curRecNo) && (okWord.FileType == AckFileType.Image)) { //文件读取结束,通知主程序 if (curStream != null) curStream.Close(); if (curBinaryWriter != null) curBinaryWriter.Close(); if (OnDataChanged != null) { //通知文件读取结束 ImageHandlerEventArgs eventArgs = new ImageHandlerEventArgs(RunMode.Image); eventArgs.OperState = OperationState.ReadComplete; eventArgs.RecNo = curRecNo; eventArgs.fileName = curFileName; OnDataChanged(this, eventArgs); } } }