PDA

View Full Version : یک سوال در مورد دستور case



exeroox@gmail.com
پنج شنبه 03 مهر 1393, 11:36 صبح
با سلام
یک مشکل کوچیک تو یک برنامه کار با پورت سریال دارم.
تو این برنامه با توجه به کد های ورودی از پورت سریال یک فایل صوتی پخش میشه.مشکل اینه که به اضای
هر کد وارد رسیده فایل صوتی پخش نمیشه مثلا کد ak47 باید 3 بار ارسال بشه تا یکبار صدای مربوطه پخش بشه
جالب اینجاست که برای کدهای دیگه این تعداد متفاوته.مثلا برای کد mp5 باید این کد رو 15 بار به برنامه ارسال کرد
تا یکبار فایل صوتی مربوطش پخش بشه.برنامه سادست و حجم کمی هم داره ولی چون آشنایم با برنامه نویسی کمه
نتونستم مشکل رو تشخیص بدم
ابته یک نکته دیگم وجود داره . اینه که زمانی که یک صدا پخش میشه اگر دستور پخش صدای دیگه ایی بیاد صدای
اولی قطع میشه و صدای دوم پخش میشه که اگر بشه هردو همزمان باهم پخش بشه عالیه
این هم تصویر برنامه .123876
و باید بگم که رشته تحصیلیم الکترونیکه اولین تجربه بنده در برنامه نویسی با C#‎‎ هست

کد برنامه هم همینه

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Media;
using System.IO.Ports;
using System.Windows.Forms;

namespace firs
{
public partial class Form1 : Form
{
string StrRecieve;
public Form1()
{
InitializeComponent();
}
private void DisplayText(object sender, EventArgs e)
{
textBox1.AppendText(StrRecieve);
switch (StrRecieve)
{
case "ak47":
SoundPlayer sound = new SoundPlayer("ak47.wav");

sound.Play();
break;
case "m4":
SoundPlayer sound1 = new SoundPlayer("m4.wav");

sound1.Play();
break;
case "shotgun":
SoundPlayer sound2 = new SoundPlayer("shotgun.wav");

sound2.Play();
break;
case "rovelver":
SoundPlayer sound3 = new SoundPlayer("rovelver.wav");

sound3.Play();
break;
case "mp5":
SoundPlayer sound4 = new SoundPlayer("mp5.wav");

sound4.Play();
break;
}

}
public void PortList()
{

comboBox1.Items.Clear();

string[] ports = SerialPort.GetPortNames();

comboBox1.Items.AddRange(ports);

comboBox1.Sorted = true;
btnrefresh.Enabled = true;

}

private void btnrefresh_Click(object sender, EventArgs e)
{
PortList();
}

private void btnopen_Click(object sender, EventArgs e)
{
try
{

serialPort1.PortName = comboBox1.SelectedItem.ToString();

serialPort1.Open();

listBox1.Items.Add(comboBox1.SelectedItem.ToString () + " open ");



comboBox1.Enabled = false;

}
catch (Exception exx)
{
listBox1.Items.Add(exx.Message);
}
}

private void btnclose_Click(object sender, EventArgs e)
{
serialPort1.Close();

listBox1.Items.Add(comboBox1.SelectedItem.ToString () + " close ");

comboBox1.Enabled = true;


}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{

}

private void Form1_Load(object sender, EventArgs e)
{
PortList();
}

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
StrRecieve = serialPort1.ReadExisting();
this.Invoke(new EventHandler(DisplayText));
}

private void btnm1_Click(object sender, EventArgs e)
{
SoundPlayer sound = new SoundPlayer("ak47.wav");

sound.Play();
}

private void btnm2_Click(object sender, EventArgs e)
{
SoundPlayer sound1 = new SoundPlayer("m4.wav");

sound1.Play();
}

private void btnm3_Click(object sender, EventArgs e)
{
SoundPlayer sound3 = new SoundPlayer("rovelver.wav");

sound3.Play();
}

private void btnm4_Click(object sender, EventArgs e)
{
SoundPlayer sound2 = new SoundPlayer("shotgun.wav");

sound2.Play();
}

private void btnm5_Click(object sender, EventArgs e)
{
SoundPlayer sound4 = new SoundPlayer("mp5.wav");

sound4.Play();
}
}
}

exeroox@gmail.com
پنج شنبه 03 مهر 1393, 13:57 عصر
سلام دوستان
چند ساعتی گذشته از ارسال سوالم . ولی هنوز پاسخی دریافت نکدم. برای بچه های این انجمن که همه حرفه یی هستن تو برنامه نویسی نباید چیز پیچیدهای باشه
ممنون از توجهتون