using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PipeGallery.Correlator; using PipeGallery.Manage; using PipeGallery.ViewModel; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PipeGallery.View { /// <summary> /// AuditionView.xaml 的交互逻辑 /// </summary> public partial class AuditionView : UserControl { private DrawingBrush _gridBrush; public AuditionView() { InitializeComponent(); this.DataContext = AuditionViewModel.Instance; this.Loaded += AuditionView_Loaded; this.btnReturn.Click += btnReturn_Click; this.btnMute.Checked += btnMute_Checked; this.btnMute.Unchecked += btnMute_Unchecked; //this.btnUp.Click += btnUp_Click; //this.btnDown.Click += btnDown_Click; this.btnRed.Click += btnRed_Click; this.btnBlue.Click += btnBlue_Click; } void AuditionView_Loaded(object sender, RoutedEventArgs e) { DataFactory.InitalAuditionData(canvasCoordinates, gridChartContainer); //Thumb thumb = (slider1.Template.FindName("PART_Track", slider1) as Track).Thumb; //thumb.DataContext = slider1; } void btnReturn_Click(object sender, RoutedEventArgs e) { Border bdr = this.Parent as Border; if (bdr != null) { HomePageView homePageView = new HomePageView(); bdr.Child = homePageView; } if (this.btnRed.IsChecked == true) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1); } if (this.btnBlue.IsChecked == true) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2); } } private const byte VK_VOLUME_MUTE = 0xAD; private const byte VK_VOLUME_DOWN = 0xAE; private const byte VK_VOLUME_UP = 0xAF; private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001; private const UInt32 KEYEVENTF_KEYUP = 0x0002; [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo); [DllImport("user32.dll")] static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType); void btnMute_Unchecked(object sender, RoutedEventArgs e) { //非静音 keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } void btnMute_Checked(object sender, RoutedEventArgs e) { //静音 keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0); keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); } private void btnRed_Click(object sender, RoutedEventArgs e) { if (!CalculteSatus.msp.sp.IsOpen) { this.btnRed.IsChecked = false; new PopupWindow("未插入串口!").ShowDialog(); return; } if (this.btnRed.IsChecked == false || this.btnRed.IsChecked == null) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1); String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8); JObject jo = JObject.Parse(josnString); jo["listen"] = ++CorrelatorDataSaveThread.Listen; StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + "number.json"); sw.Write(JsonConvert.SerializeObject(jo)); sw.Flush(); sw.Close(); } else { if (this.btnBlue.IsChecked == true) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2); this.btnBlue.IsChecked = false; } AuditionViewModel.Instance.SensorAIsEnable = false; AuditionViewModel.Instance.SensorBIsEnable = false; new Thread(new ParameterizedThreadStart(sendSoundCollectCmd)) { IsBackground = true }.Start(DevCode.Dev1); } } private void btnBlue_Click(object sender, RoutedEventArgs e) { if (!CalculteSatus.msp.sp.IsOpen) { this.btnBlue.IsChecked = false; new PopupWindow("未插入串口!").ShowDialog(); return; } if (this.btnBlue.IsChecked == false || this.btnBlue.IsChecked == null) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev2); String josnString = File.ReadAllText(System.AppDomain.CurrentDomain.BaseDirectory + "number.json", Encoding.UTF8); JObject jo = JObject.Parse(josnString); jo["listen"] = ++CorrelatorDataSaveThread.Listen; StreamWriter sw = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + "number.json"); sw.Write(JsonConvert.SerializeObject(jo)); sw.Flush(); sw.Close(); } else { if (this.btnRed.IsChecked == true) { SenderClass.sendSoundStopCmd(CalculteSatus.msp.sp, DevCode.Dev1); this.btnRed.IsChecked = false; } AuditionViewModel.Instance.SensorAIsEnable = false; AuditionViewModel.Instance.SensorBIsEnable = false; new Thread(new ParameterizedThreadStart(sendSoundCollectCmd)) { IsBackground = true }.Start(DevCode.Dev2); } } private void sendSoundCollectCmd(object devcode) { PlayWav playwav = PlayWav.getInstance(); playwav.Stop(); playwav.initWaveOut(); Correlator.CalculteSatus.msp.timer.Stop();//停止状态采集指令的发送 Thread.Sleep(3000); SenderClass.sendSoundCollectCmd(CalculteSatus.msp.sp, devcode as string); Thread.Sleep(2000); CalculteSatus.isListening = true; new Thread(new ThreadStart(timer)) { IsBackground = true }.Start(); AuditionViewModel.Instance.SensorAIsEnable = true; AuditionViewModel.Instance.SensorBIsEnable = true; } private void timer() { while (CalculteSatus.isListening) { Thread.Sleep(1000); if (++CalculteSatus.elapseTime >= 10) { MessageBox.Show("接收不到数据,请重启软件"); break; } } CalculteSatus.elapseTime = 0; } } }