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(); }
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); } }