/// <summary> /// 设备连接事件 /// </summary> void FrmMain_OnSetehoscopeConnect() { if (isConnect() && !isOrder) { ShowMsg("等待远程听诊"); //告诉对方 var code = new RReadyCode(); SuperSocket.Send(code); } }
private void btnPresss_Click(object sender, EventArgs e) { if ("请求声音" == btnPresss.Text) { if (isOnline) { if (isRequest && isConnect()) { //btnPresss.Enabled = false; var code = new RReadyCode(); SuperSocket.Send(code); ShowMsg("本端已发起远程听诊"); //btnPresss.Enabled = false; btnPresss.Text = "停止"; } } else { ShowMsg("发起远程听诊失败(对方未启动客户端)"); } } else { this.Close(); Application.Exit(); if (isConnect()) { gifBox1.StopAnimate(); if (isOrder) { btnPresss.Enabled = true; Current.StopAudioOutput(); } SuperSocket.Send(new RStopAudioCode()); } } }
public void HandleMessage(RReadyCode message) { if (isOrder)//发起方 { if (!message.isReady) { ShowMsg("发起远程听诊失败(请确认对方已连接听诊器)"); Invoke(new MethodInvoker(() => { btnPresss.Enabled = false; })); } else { ShowMsg("对方设备就绪,可以发起听诊了"); //ShowMsg("远程听诊进行中"); Invoke(new MethodInvoker(() => { btnPresss.Enabled = true; })); } } else { if (isConnect()) { Thread thread = new Thread(() => { //Thread.Sleep(200); SuperSocket.Send(new RStartAudioCode()); Current.StartAudioInput(); timer.Start(); Invoke(new MethodInvoker(() => { gifBox1.StartAnimate(); //processBarEx1.Visible = true; })); //Thread.Sleep(200); while (!isStop) { byte[] packet = new byte[128]; int bytesRead = Current.AudioInputStream.Read(packet, 0, packet.Length); if (bytesRead <= 0) { Thread.Sleep(100); continue; } var code = new RTransAudioCode(); memoryStream.Write(packet, 0, bytesRead); code.Bytes = packet.Take(bytesRead).ToArray(); SuperSocket.Send(code); Thread.Sleep(1); } Current.StopAudioInput(); }); thread.Start(); } else { SuperSocket.Send(new RReadyCode() { isReady = false }); } } }