Ejemplo n.º 1
0
        private void RefreshDeviceList()
        {
            toolStripComboBox_deviceList.Items.Clear();

            var deviceInfoArray = Spi.GetDeviceInfoList();

            foreach (var deviceInfo in deviceInfoArray)
            {
                toolStripComboBox_deviceList.Items.Add($"{deviceInfo.Description} ({deviceInfo.SerialNumber})");
            }

            if (deviceInfoArray.Length > 0)
            {
                toolStripComboBox_deviceList.Enabled = true;
                toolStripButton_connect.Enabled      = true;
            }
            else
            {
                toolStripComboBox_deviceList.Items.Add("デバイスが見つかりません");
                toolStripComboBox_deviceList.Enabled = false;
                toolStripButton_connect.Enabled      = false;
            }

            toolStripComboBox_deviceList.SelectedIndex = 0;
            toolStripComboBox_interface.SelectedIndex  = 0;
        }
Ejemplo n.º 2
0
        private void ConnectDevice()
        {
            DeviceInfo = Spi.GetDeviceInfoList()[toolStripComboBox_deviceList.SelectedIndex];
            ymf825     = new CbwYmf825Bb(toolStripComboBox_deviceList.SelectedIndex);
            Driver     = new Ymf825Driver(ymf825);

            ymf825.DataWrote += (sender, args) =>
            {
                registerMap.SetData(args.Address, args.Data);
            };
            ymf825.DataBurstWrote += (sender, args) =>
            {
                if (args.Data.Count <= 0)
                {
                    return;
                }

                if (args.Address == 0x07)
                {
                    registerMap.SetData(args.Address, args.Data.Last());

                    var toneNumber = args.Data[0] - 0x80;

                    if (toneNumber < 0 || toneNumber > 16 || args.Data.Count < toneNumber * 30 + 5)
                    {
                        Console.WriteLine($"Invalid BurstWrite Data - Tone Number: {toneNumber}, Data Size: {args.Data.Count} (required {toneNumber * 30 + 5})");
                        return;
                    }

                    for (var i = 0; i < toneNumber; i++)
                    {
                        for (var j = 0; j < 30; j++)
                        {
                            toneParameterRegisterMap[i].SetData(j, args.Data[i * 30 + j + 1]);
                        }
                    }
                }
                else if (args.Address >= 0x20 || args.Address <= 0x22)
                {
                    var eq = args.Address - 0x20;

                    if (args.Data.Count < 5)
                    {
                        return;
                    }

                    for (var i = 0; i < 5; i++)
                    {
                        registerMap.SetData(0x23 + 3 * eq + i, args.Data[i]);
                    }
                }
            };

            SpiConnected = true;
            Driver.ResetHardware();
            Driver.ResetSoftware();
            Connected?.Invoke(this, new EventArgs());
        }