PDA

View Full Version : سوال: ارتباط با سيستم ديگر



water_lily_2012
دوشنبه 15 فروردین 1390, 08:08 صبح
سلام
يك كامپيوتر دارم با يك IP استاتيك، كه هميشه روشن هست. و يك كامپيوتر كه هر وقت روشن بشه،‌ بتونه با يك برنامه به كامپيوتر اول متصل بشه و هر چي صحبت مي شه در كامپيوتر اول پخش بشه. البته بدون درخواست اجازه از كامپيوتر اول.
با تشكر

water_lily_2012
دوشنبه 15 فروردین 1390, 17:05 عصر
كسي اين سوال را بلد نيست راهنمايي كنه.

amirsadeghi
دوشنبه 15 فروردین 1390, 17:21 عصر
سلام
مرحله اول صبره!!!! مگه نه :دی
خب یعنی الان شما میخواید صدا رو از میکروفون دریافت و اونو از طریق شبکه بفرستین برای سیستم اصلی. درسته؟
تو کدوم قسمتش مشکل دارین؟
لود شدن برنامه با استارت آپ؟
رزیدنت بودن برنامه؟
خوندن از میکروفون؟
ارسال روی شبکه؟

water_lily_2012
سه شنبه 16 فروردین 1390, 07:41 صبح
سلام
دو قسمت آخر را نمي دونم، تا بحال برنامه براي شبكه ننوشتم.
خوندن از ميكروفن
ارسال روي شبكه

amirsadeghi
سه شنبه 16 فروردین 1390, 10:34 صبح
برای ضبط صدا راههای مختلفی هست که ساده ترینش استفاده از directx هست

این یه نمونه از استفاده از directx البته با vb که خب روند کار توی c# هم به همین شکل هست

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using Microsoft.DirectX;
using Microsoft.DirectX.DirectSound;

namespace sound
{
public partial class Form1 : Form
{
private Thread CaptureSoundThread = null;
public CaptureBuffer applicationBuffer = null;
private SecondaryBuffer soundBuffer = null;
private Device soundDevice = null;

public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CaptureSoundThread = new Thread(new ThreadStart(WaitThread));
CaptureSoundThread.Start();
}

private void Form1_Load(object sender, EventArgs e)
{
soundDevice = new Device();
soundDevice.SetCooperativeLevel(this, CooperativeLevel.Normal);

// Set up our wave format to 44,100Hz, with 16 bit resolution
WaveFormat wf = new WaveFormat();
wf.FormatTag = WaveFormatTag.Pcm;
wf.SamplesPerSecond = 44100;
wf.BitsPerSample = 16;
wf.Channels = 1;
wf.BlockAlign = (short)(wf.Channels * wf.BitsPerSample / 8);
wf.AverageBytesPerSecond = wf.SamplesPerSecond * wf.BlockAlign;

int samplesPerUpdate = 512;

// Create a buffer with 2 seconds of sample data
BufferDescription bufferDesc = new BufferDescription(wf);
bufferDesc.BufferBytes = samplesPerUpdate * wf.BlockAlign * 2;
bufferDesc.ControlPositionNotify = true;
bufferDesc.GlobalFocus = true;

soundBuffer = new SecondaryBuffer(bufferDesc, soundDevice);
}

private void WaitThread()
{
while (true)
{
byte[] CaptureData = null;
CaptureData = (byte[])applicationBuffer.Read(0, typeof(byte), LockFlag.None);
soundBuffer.Write(0, CaptureData, LockFlag.None);
// Start it playing
soundBuffer.Play(0, BufferPlayFlags.Looping);
}
}
}
}

حالت دیگه استفاده از کامپوننت ها هست
NAudio همه امکانات کار با صدا ها رو توی خودش جمع کرده. حجمش هم نزدیک 1.5MB هست
اگر نتونستی پیدا و دانلودش کنی بگو تا بهمراه سمپل سی شارپ برات بفرستم

javad_r_85
سه شنبه 16 فروردین 1390, 11:11 صبح
دوست عزیز این کدی که در بالا نوشتی را میتونی یه نمونه برنامه هم بزاری واسه من خطا می ده

water_lily_2012
سه شنبه 16 فروردین 1390, 11:58 صبح
اگر لطف كنيد يك نمونه برنامه به زبان c# بگذاريد. اون كدي كه نوشته ايد فقط صدا را ضبط مي كنه. بعد بايد اون را به عنوان يك فايل فرستاد به كامپيوتر ديگر درسته؟ من مي خواهم با صحبت كردن صدا در كامپيوتر ديگه همزمان پخش بشه مثل چت
امكان اين هم هست.
اصلا برنامه اي نيست براي اين كار؟

amirsadeghi
چهارشنبه 17 فروردین 1390, 00:00 صبح
اون کامپوننتی که معرفی کردم مستقیما صدا رو میخونه. شما میتونی با اون صدا رو تبدیل به کد کنی و بفرستی و هم فایل و فایل رو بفرستی
البته همین کد هم با کمی تغییرات میشه به اون شکل تغییرش داد. البته چک کنین که directx حتما نصب باشه!
با عرض پوزش من تا بیستم نیستم. مسابقه داریم و یکم درگیرم نمیتونم کدش رو بنویسم. ولی برگردم چشم

arefba
چهارشنبه 17 فروردین 1390, 03:27 صبح
سلام
خیلی شروعتون جالب بود
شما یه روز صبح از خواب بیدار شدید و تصمیم گرفتید یه برنامه بسازید که کنفرانس صوتی راه بندازید
و اومدید اینجا کداش رو جمع کنید
اگر هم بسازیدش افتخار نداره
یه بار درستش کردم اما کدش رو بهتون نمیدم تا تنبل نشید
چند مسئله هست
اولا ضبط صدا (که فکر کنم دوستمون براتون رفعش کرده )
الگوریتمی که در ارسال داده استفاده میشه , می خواین صدا از چه طریقی در شبکه جابجا شه
این دو تا رو رفع کنید حله
در مورد ارسال صدا در شبکه بیشتر تمرکز کنید چون جوابش مساوی با حل مسئله هست
مثلا اگه اون تبدیل به بایت کنید و از طریق سوکت بفرستید درسته ؟
آیا کند نیست این روش
چه میزان از شبکه رو اشغال میکنه
...

water_lily_2012
چهارشنبه 17 فروردین 1390, 09:14 صبح
سلام
نه دوست عزيز نصفش را اشتباه گفتي. صبح كه بيدار شدم يكي از دوستام زنگ زد (اي كاش كه نزده بود) گفت يه برنامه ساده مي خوام. گفتم حالا يه چيز در توان و معلومات خودم مي خواهد بعد از اينكه گفت چي مي خواد ديدم برنامه ساده هست ولي من اصلا كار با شبكه را بلد نيستم. براي همين به دوستم گفتم من بلد نيستم ولي پرس و جو مي كنم ببينم چي ميشه.
از اين كه اومدم اينجا كد جمع كنم. درسته ولي نه براي افتخار، براي يادگيري
افتخار هم نداره، كمك به يك دوست هست.
تنبل هم نيستم، اين رشته جايي براي تنبلي نداره ولي هيچ كس نيست همه چيز را بلد باشه. همين طور كه ذكر كردم كار با شبكه را بلد نيستم.

اصلا اگر يه برنامه كامل باشه كه اين كار را بكنه و من آدرس دانلودش را به دوستم بدم راحتر هستم.
بابت صحبت هاي گرمتون هم تشكر.