public static void Main(string[] args)
        {
            //建立通道
            Channel channel = new Channel("127.0.0.1:50051", ChannelCredentials.Insecure);

            //新建客户端
            var client = new SurvCenterService.SurvCenterServiceClient(channel);
            //任意设置一些属性值
            String user = "******";
            //新建报警事件
            Event nevent = new Event();

            nevent.Description = user;
            //新建报警事件图片
            AnnotatedImage anno_img = new AnnotatedImage();

            //将二进制JPEG码流拷贝到报警事件图片中
            anno_img.Img = Google.Protobuf.ByteString.CopyFrom(new byte[] { 1, 2 });
            //设置报警事件图片中的目标
            Target target = new Target {
                X = 1, Y = 2, W = 3, H = 4, Type = Target.Types.Type.Person
            };

            anno_img.Targets.Add(target);
            nevent.AnnoImgs.Add(anno_img);

            //向服务器提交报警事件
            System.Collections.Generic.List <AsyncUnaryCall <GeneralReply> > rets = new System.Collections.Generic.List <AsyncUnaryCall <GeneralReply> >();
            for (int i = 0; i < 1000; i++)
            {
                AsyncUnaryCall <GeneralReply> ret = client.ReportEventAsync(nevent);
                rets.Add(ret);
            }
            Console.WriteLine("number: ", rets.Count);
            for (int i = 0; i < rets.Count; ++i)
            {
                rets[i].ResponseAsync.Wait();
                Console.WriteLine("reportevent: " + rets[i].ResponseAsync.Result);
            }
            //Console.WriteLine("Greeting: " + reply.Message);

            HeartbeatRequest hr = new HeartbeatRequest();

            hr.DeviceAddress = "127.0.0.1";
            hr.DeviceIdent   = "i am a deivce";
            //异步调用心跳请求
            var hr_reply = client.HeartbeatAsync(hr);

            //等待异步操作返回,具体实现时可以使用完整异步机制
            hr_reply.ResponseAsync.Wait();
            Console.WriteLine("Heartbeat over: " + hr_reply.ResponseAsync.Result);

            channel.ShutdownAsync().Wait();
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
Beispiel #2
0
        private void SendAlarmSub()
        {
            try
            {
                SendRecord record = new SendRecord();
                record.GUID      = Guid.NewGuid().ToString();
                record.BeginTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");

                var   client = new SurvCenterService.SurvCenterServiceClient(channel);
                Event nevent = new Event();
                nevent.DeviceIdent     = txtHostIdent.Text;
                nevent.VideoFilename   = "testVideoFile.wav";
                nevent.Channel         = Convert.ToInt32(txtChannel.Text);
                nevent.FrontendVersion = "Ver1.0";
                nevent.Guid            = Guid.NewGuid().ToString();
                nevent.Hostaddress     = ipIptHost.Text;
                nevent.MeterAreaNum    = 1;
                nevent.PersonNum       = Convert.ToInt32(txtPersonCnt.Text);
                nevent.Seconds         = DateTimeToLong(DateTime.Now);
                nevent.Type            = Convert.ToInt32(txtAlarmType.Text);
                nevent.Description     = txtDescription.Text;

                AnnotatedImage anno_img = new AnnotatedImage();
                anno_img.Img = Google.Protobuf.ByteString.CopyFrom(imgData);

                nevent.AnnoImgs.Add(anno_img);
                var reply = client.ReportEvent(nevent);
                Interlocked.Increment(ref cplCnt);
                record.CompleteTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");
                record.Message      = reply.Message;
                record.ErrCode      = reply.ErrorCode;
                records.Add(record);

                if ((interval < 100 && cplCnt % 10 == 0) || interval >= 100 || cplCnt == SendCnt)
                {
                    this.Invoke(new Action(() =>
                    {
                        lbSendStatus.Text = string.Format("已完成:{0}", cplCnt);
                        if (cplCnt >= SendCnt)
                        {
                            btnDetail.Enabled = true;
                        }
                    }));
                }
            }
            catch (Exception exp)
            {
                Logger.AddLog(this.GetType(), "SendAlarmSub()", "", exp);
            }
        }