Exemplo n.º 1
0
        /// <summary>
        /// Executes the specified param.
        /// </summary>
        /// <param name="param">The param.</param>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        public OpResult Execute(string param)
        {
            OpResult opResult = new OpResult();

            try
            {
                Match match = m_regex.Match(param);
                if (match.Success)
                {
                    string imagefile = match.Groups["imagepath"].Value.Replace("/", "\\");

                    // get latest image file from directory, notation example: @"c:\temp\test*.jpg"
                    if (imagefile.Contains("*"))
                    {
                        imagefile = GetFileInfo.GetNewestImage(imagefile);
                    }

                    opResult.AppendFormat("response={0}", AddInHost.Current.MediaCenterEnvironment.DialogNotification(
                                              match.Groups["message"].Value,
                                              new System.Collections.ArrayList(1),
                                              int.Parse(match.Groups["timeout"].Value),
                                              "file://" + imagefile
                                              ).ToString());
                    opResult.StatusCode = OpStatusCode.Ok;
                }
            }
            catch (Exception ex)
            {
                opResult.StatusCode = OpStatusCode.Exception;
                opResult.StatusText = ex.Message;
            }
            return(opResult);
        }
Exemplo n.º 2
0
    private async Task <string> GetFileContentBase64Async()
    {
        await using var stream = GetFileInfo.CreateReadStream();
        await using var writer = new MemoryStream();

        await stream.CopyToAsync(writer);

        var offset = writer.Seek(0, SeekOrigin.Begin);

        return(Convert.ToBase64String(writer.ToArray()));
    }
Exemplo n.º 3
0
        public async Task <HttpResponseMessage> UploadFile()
        {
            if (!Request.Content.IsMimeMultipartContent())
            {
                Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
            }

            var provider = GetMultipartMemoryStreamProvider();

            var tt = await Request.Content.ReadAsMultipartAsync(provider).ContinueWith(p =>
            {
                var result = p.Result;
                // var myParameter = result.FormData.GetValues("myParameter").FirstOrDefault();
                var file = _fileService.Create();
                foreach (var stream in result.Contents.Where((content, idx) => result.IsStream(idx)))
                {
                    string fileName = GetFileInfo.GetDeserializedFileName(stream);
                    var contentType = GetFileInfo.GetContentType(stream);

                    if (_fileService.IsValidType(fileName) && _fileService.IsValidContent(contentType.MediaType))
                    {
                        file.FileBinary = stream.ReadAsByteArrayAsync().Result;
                        file.Size       = stream.Headers.ContentLength;
                        file.IsDeleted  = false;
                        file.Extention  = contentType.MediaType;
                        file.Guid       = Guid.NewGuid();
                        file.Name       = fileName;
                        file.UploadDate = DateTime.UtcNow;
                        //  var file = new this.GetFormData<string >(stream.Headers.ContentDisposition.FileName);
                        //  var contentTest =  stream.ReadAsByteArrayAsync();
                        // ... and so on, as per your original code.
                        _fileService.Add(file);
                        _unitOfWork.SaveChanges();
                    }
                }
                return(file);
            });



            /*var result = await Request.Content.ReadAsMultipartAsync(provider);
             *
             *
             * // On upload, files are given a generic name like "BodyPart_26d6abe1-3ae1-416a-9429-b35f15e6e5d5"
             * // so this is how you can get the original file name
             *
             * var originalFileName = GetDeserializedFileName(result.FileData.First());
             *
             * // uploadedFileInfo object will give you some additional stuff like file length,
             * // creation time, directory name, a few filesystem methods etc..
             *
             * var uploadedFileInfo = new FileInfo(result.FileData.First().LocalFileName);
             *
             * // Remove this line as well as GetFormData method if you're not
             * // sending any form data with your upload request
             *
             * var fileUploadObj = GetFormData<UploadDataModel>(result);
             *
             * // Through the request response you can return an object to the Angular controller
             * // You will be able to access this in the .success callback through its data attribute
             * // If you want to send something to the .error callback, use the HttpStatusCode.BadRequest instead
             *
             * var returnData = "ReturnTest";
             *
             *
             */
            return(this.Request.CreateResponse(HttpStatusCode.OK, new { id = tt.Id }));
        }
Exemplo n.º 4
0
        /// <summary>
        /// Executes the specified param.
        /// </summary>
        /// <param name="param">The param.</param>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        public OpResult Execute(string param)
        {
            OpResult opResult = new OpResult();

            try
            {
                Match match = m_regex.Match(param);
                System.Collections.ArrayList buttonArray = new System.Collections.ArrayList();
                System.Collections.Hashtable buttonHT    = new System.Collections.Hashtable();

                int customButtonID = 100;

                if (match.Groups["buttoncodes"].Value.Length > 0)
                {
                    string[] buttons = match.Groups["buttoncodes"].Value.Split(';');

                    foreach (string button in buttons)
                    {
                        switch (button)
                        {
                        case "OK":
                            buttonArray.Add(1);
                            break;

                        case "Cancel":
                            buttonArray.Add(2);
                            break;

                        case "Yes":
                            buttonArray.Add(4);
                            break;

                        case "No":
                            buttonArray.Add(8);
                            break;

                        default:
                            buttonArray.Add(button);
                            buttonHT.Add(customButtonID.ToString(), button);
                            customButtonID++;
                            break;
                        }
                    }
                }

                if (match.Success)
                {
                    responseReceived = false;
                    dlg = new DialogClosedCallback(On_DialogResult);

                    string imagefile = match.Groups["imagepath"].Value.Replace("/", "\\");

                    // get latest image file from directory, notation example: @"c:\temp\test*.jpg"
                    if (imagefile.Contains("*"))
                    {
                        imagefile = GetFileInfo.GetNewestImage(imagefile);
                    }

                    AddInHost.Current.MediaCenterEnvironment.Dialog(
                        match.Groups["message"].Value
                        , match.Groups["caption"].Value
                        , buttonArray
                        , int.Parse(match.Groups["timeout"].Value)
                        , match.Groups["modal"].Value == "modal" ? true:false
                        , "file://" + imagefile
                        , dlg);

                    //wait for a response
                    while (!responseReceived)
                    {
                        System.Threading.Thread.Sleep(100);
                    }

                    string btnResult = "";

                    switch (m_dlgResult.ToString())
                    {
                    case "100":
                    case "101":
                    case "102":
                        btnResult = (string)buttonHT[m_dlgResult.ToString()];
                        break;

                    default:
                        btnResult = m_dlgResult.ToString();
                        break;
                    }

                    opResult.AppendFormat("response={0}", btnResult);

                    opResult.StatusCode = OpStatusCode.Success;
                }
            }
            catch (Exception ex)
            {
                opResult.StatusCode = OpStatusCode.Exception;
                opResult.StatusText = ex.Message;
            }
            return(opResult);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 如果是多包数据,那么分包后放到list中
        /// 1、当需要组包时,传入参数,分析、使用switch区分,组装不同的帧
        /// 2、类型和子类型的方法分别用于区分和组装数据域外数据
        /// 3、针对不同的功能组织不同的数据域,最后合并
        /// 4、ref donewrite参数为写文件准备,返回本次组包本地读取的字节数
        /// </summary>
        /// <param name="destid"></param>
        /// <param name="msgtype"></param>
        /// <param name="msgsubtype"></param>
        /// <returns>错误代码另外给出</returns>
        public static PacketRet Packetization(Compare example, object data)
        {
            byte[]    frame   = null;
            PacketRet tempret = new PacketRet();

            //packetization的错误代码定义另外给出
            tempret.errorcode = 0;
            switch (example.msgType)
            {
            //读操作单元
            case (byte)MSGEncoding.MsgType.ReadUnit:
            {
                switch (example.msgSubType)
                {
                //读数据
                case (byte)MSGEncoding.ReadUint.ReadData:
                {
                    frame = ReadUnit.ReadData(example.destID, (ushort[])data);
                    break;
                }

                //读取配置信息
                case (byte)MSGEncoding.ReadUint.Readcfg:
                {
                    frame = ReadUnit.Readcfg(example.destID, (ushort[])data);
                    break;
                }

                //查询设备状态
                case (byte)MSGEncoding.ReadUint.GetDevStatus:
                {
                    frame = ReadUnit.GetDevStatus(example.destID, (ushort[])data);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            //写操作单元
            case (byte)MSGEncoding.MsgType.WriteUnit:
            {
                //为适应前台,测试其他成功后添加转换
                Dictionary <ushort, object> data_temp = WriteUnit.TransDict(((Dictionary <string, object>)data));
                switch (example.msgSubType)
                {
                //控制设备(应该是状态/控制量)
                case (byte)MSGEncoding.WriteUint.ControlDev:
                {
                    frame = WriteUnit.ControlDev(example.destID, data_temp);
                    break;
                }

                //设置配置信息(配置量)
                case (byte)MSGEncoding.WriteUint.Setcfg:
                {
                    frame = WriteUnit.Setcfg(example.destID, data_temp);
                    break;
                }

                //写数据(数据量)
                case (byte)MSGEncoding.WriteUint.WriteData:
                {
                    frame = WriteUnit.WriteData(example.destID, data_temp);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            //读文件
            case (byte)MSGEncoding.MsgType.ReadFile:
            {
                switch (example.msgSubType)
                {
                //读取指定配置文件,从x位置开始的n个字节数据
                case (byte)MSGEncoding.ReadFile.ReadcfgFile:
                {
                    frame = ReadFile.ReadcfgFile(example.destID, (ReadFile.Parameter)data);
                    break;
                }

                //读取指定数据文件,从x位置开始的n个字节数据
                case (byte)MSGEncoding.ReadFile.ReadDataFile:
                {
                    frame = ReadFile.ReadDataFile(example.destID, (ReadFile.Parameter)data);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            //写文件到设备
            //注意:传入的para中的filehandle已经初始化
            case (byte)MSGEncoding.MsgType.WriteFile:
            {
                switch (example.msgSubType)
                {
                //上传配置文件到设备,并作为最新配置
                case (byte)MSGEncoding.WriteFile.UpcfgToDev:
                {
                    frame = WriteFile.UpcfgToDev(example.destID, (WriteFile.Parameter)data);
                    break;
                }

                //上传数据文件到设备
                case (byte)MSGEncoding.WriteFile.UpDataToDev:
                {
                    frame = WriteFile.UpDataToDev(example.destID, (WriteFile.Parameter)data);
                    break;
                }

                //上传升级文件
                case (byte)MSGEncoding.WriteFile.UpGradeFile:
                {
                    frame = WriteFile.UpGradeFile(example.destID, (WriteFile.Parameter)data);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            //通信测试
            case (byte)MSGEncoding.MsgType.LoopBack:
            {
                //LoopBack通讯测试用
                frame = LoopBack.LoopTest(example.destID, (ushort)data);
                break;
            }

            //其他(向设备查询Error Code的详细解释)
            case (byte)MSGEncoding.MsgType.GetErrorInfo:
            {
                //向设备查询Error Code的详细解释
                frame = GetErrorInfo.ExplainError(example.destID, (ushort)data);
                break;
            }

            //文件信息查询
            case (byte)MSGEncoding.MsgType.GetFileInfo:
            {
                switch (example.msgSubType)
                {
                //取得配置文件名称(=最新更新时间)及文件大小
                case (byte)MSGEncoding.GetFileInfo.GetcfgFile:
                {
                    frame = GetFileInfo.GetcfgFile(example.destID, (GetFileInfo.Parameter)data);
                    break;
                }

                //按日期范围查询数据文件名及文件大小
                case (byte)MSGEncoding.GetFileInfo.GetFileByRange:
                {
                    frame = GetFileInfo.GetFileByRange(example.destID, (GetFileInfo.Parameter)data);
                    break;
                }

                //查询离指定日期最近的x个数据文件名及文件大小
                case (byte)MSGEncoding.GetFileInfo.GetXFileByLately:
                {
                    frame = GetFileInfo.GetXFileByLately(example.destID, (GetFileInfo.Parameter)data);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            //读缓冲区
            case (byte)MSGEncoding.MsgType.ReadBuffer:
            {
                switch (example.msgSubType)
                {
                //读CO2气体的采样缓存
                case (byte)MSGEncoding.ReadBuffer.ReadCO2Cache:
                {
                    frame = ReadBuffer.ReadCO2Cache(example.destID, (ReadBuffer.Parameter)data);
                    break;
                }

                //读六种气体的采样缓存
                case (byte)MSGEncoding.ReadBuffer.ReadGasCache:
                {
                    frame = ReadBuffer.ReadGasCache(example.destID, (ReadBuffer.Parameter)data);
                    break;
                }

                //读H2O采样数据缓存
                case (byte)MSGEncoding.ReadBuffer.ReadH2OCache:
                {
                    frame = ReadBuffer.ReadH2OCache(example.destID, (ReadBuffer.Parameter)data);
                    break;
                }

                default:
                {
                    //MessageBox.Show("preparedata-packetzation:错误子代码!");
                    tempret.errorcode = 1;
                }
                break;
                }
                break;
            }

            default:
            {
                //MessageBox.Show("preparedata-packetzation:数据帧外层类型存在错误!");
                tempret.errorcode = 2;
            }
            break;
            }
            try
            {
                //为统一发送和接受帧的对照,添加的标志,这里稳定后挪进所有帧组装方法中
                byte[] changeframe = new byte[frame.Length + 1];
                Array.Copy(frame, 0, changeframe, 0, 8);
                changeframe[8] = packetindex;
                Array.Copy(frame, 8, changeframe, 9, frame.Length - 8);
                tempret.packetnum  = packetindex;
                tempret.packetdata = frame;
                //通过自动溢出归零
                packetindex++;
            }
            catch (Exception ep)
            {
                //组好的原始帧中插入帧编码存在错误!
                //MessageBox.Show("preparedata-packetization:"+ep.ToString());
                tempret.errorcode = 3;
            }
            return(tempret);
        }