الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

انا وبكاء طفلتي الصغيرة !

بدأه رغيد الطيب في 17 يناير 2010 · 13 رد · 6,218 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله السميع العليم

السلام عليكم ورحمة الله وبركاته

سوف اشارككم اليوم احدى مشاكلي العائلية منذ نشوئها وحتى تم إغلاقها بفضل من الله ومنة ....

--------------------------------------------------

المشكلة

--------------------------------------------------

نشئت المشكلة منذ عشرة اشهر تقريبا وبالتحديد منذ ان رزقني الله بصبية صغيرة لونت حياتي واضافت عليها مزيجا رائعا من الالوان الجذابة .... فأزدادت مشاعر حبي لهذه الرضيعة (كثيرة البكاء) منذ ايامها الاولى التي حرمني نومي فيها بكائها المتواصل واصبحت شخصا آخر توسعت مداركه وتجاوزت اهتمامتي مجالها المعروف (فكل اهتمامتي كانت برمجية بحثه) ... اما الان فانا اهتم بالكثير من الاشياء الجديدة بالنسبة لي فمن بعد متابعتي لآخر اخبار مايكروسوفت اصبحت اتابع آخر اخبار الأبقار !!! ... (مثل اخبار جنون البقر ، اسعار الألبان ، و و و ........ الخ ) و الكثير من الاشياء المشابهة.....

وبعيدا عن إهتماماتي الابوية تلك و بعيدا عن هذه المقدمة الدرامية .... فمشكلتي الحالية مع صغيرتي يدخل فيها عوامل مختلفة مثل حالة الطقس! ... وتصميم المنزل الذي اسكن فيه وخلافه .... المسئلة بإختصار تكمن في كون الجو حار في منطقتي مما يلزم النوم في غرف مكيفة كحال غرفة نومي و بالتالي فإننا نضع الصغيرة في غرفة النوم (المكيفة) ثم اذهب انا لعملي وتذهب امها للمطبخ .... فتنشأ مشكلة العزلة الكاملة التي تعانيها الصغيرة بسبب كون المطبخ بعيدا جدا عن غرفة النوم ... فتبكي البنت بكاء شديدا بسبب الجوع وماشابه دون ان يتنبه احد لذلك ولكون الجو حار فلا نستطيع اخراجها من غرفة النوم الى غرفة اخرى اقرب الى المطبخ حتى يتسنى سماعها لأنها ببساطة (اصبحت فتاة مدللة) ولاتستطيع النوم إلا في غرف مكيفة!!!.

والان اذا كنت تتسائل ما الذي يدفع محدثك (الممل) الى جلب مشاكله العبيطة مع طفلته الرضيعة الى صفحات منتدانا الذي يزحم بشباب ليس لديهم وقت ليضيعونه على هكذا مشاكل ؟!! ....

فالاجابة تكمن في كوني لم استطع ان اتجاهل بكاء الطفلة سواءا بتركها تبكي في غرفتها او بإخراجها لتبكي في الجو الحار ... فبعد كوب من الشاي وضرب بضعة اخماس في اسادس (666 * 55 * 65 ** 66 * 555) ... ارتأيت ان استعين بصديقي القديم Mr. VB.NET للخروج من هذه المشكلة

-------------------------------------------------------

فكرة الحل

-------------------------------------------------------

يكمن الحل في نظري في ارضاء جميع الاطراف .... الطرف الاول الطفلة بحيث نجعلها تنام في الغرفة التي تحبها وهي بالطبع الغرفة ذات التكييف وفي نفس الوقت إرضاء والديها بالاطمئنان عليها وهي بعيدة عنهم.

وبهذا نخلص الى ضرورة تصميم برنامج يقوم بمراقبة الطفلة اثناء نومها وفي حال استيقاضها وشروعها في البكاء يقوم بتحليل الوضع لمعرفة ما اذا كان بكاءاً عابراً (ربما انت لا تعرف ان الاطفال قد يفتحوا اعينهم ويبكون لثواني معدودة ثم يعودوا للنوم وكأن شيئاً لم يكن) ولذا وجب على برنامجنا ان يقوم ببعض التحاليل لمعرفة ما اذا كان هذا بكاءاً عابرا ام لا ... وفي حال كونه استيقاضا كاملا وبكاء غير عابر يقوم بتنبيه الأم في مطبخها ليكي تأتي بالحليب للصغيرة الباكية.

-------------------------------------------------------

دراسة المشروع

-------------------------------------------------------

اجزاء المشروع تنقسم الى ثلاثة اقسام هي : ( إستقبال البيانات ، تحليلها ، ارسال التنبيهات )

او قل لنسميها ثلاثة تحديات ... سنتصدى لها واحد تلو الآخر ونصمم سويا مشروعنا الصغير للتنبيه عن حالات بكاء صغيرتي المدللة.

التحدي الأول : إدخال البيانات

------------------------------------

يختلف برنامجنا عن غيره من البرامج في كونه لن يكون هناك مستخدم يجلس امام الكمبيوتر ليزوده بالمعلومات عن حالة الطفلة هل هي تبكي ام انها تنام بسعادة واطمئنان.

لهذا وجب على برنامجنا ان يستخلص المدخلات استخلاصا دون مساعدة أي إنسان.

التحديث الثاني : تحليل البيانات

------------------------------------

اذا نجح برنامجنا في تحديه الأول واستطاع ان ينتزع المدخلات بنفسه ودون مساعده سيتوجب عليه بعذ هذا تحدي آخر هو فلترة هذه المدخلات لمعرف الحالة الحقيقية للطفلة وبكلام آخر يجب ان يكون لذى برنامجنا دماغ صغير يستخدمة لفحص ومقارنة المدخلات والتفكير فيها حتى يقرر ما اذا كان التنبيه واجبا ام لا.

التحدي الثالث : ارسال التنبيهات

-------------------------------------

يؤسفني انه لازال امام برنامجنا تحدي آخر يكمن في كيفية ارسال البيانات وكيف سينبه الأم التي في المطبخ ؟! .. فهي لاتمتلك جهاز كمبيوتر (لتطبخ فيه بعض المجلدات بنكهة لوحة التحكم ) حتى نتمكن من ارسال رسالة اليها بالبريد مثلا او تنبيه على شكل رسائل في شاشة الكمبيوتر مثل رسائل برامج الماسنجر ... فلاشيء هناك في المطبخ غير بعض الاطعمة الشهية مع القليل من الدخان المتطاير.

على سيرة الدخان ... حكمة خارجة عن الموضوع تقول :

تواضع تكن كالنجم لاح لناظر **** على صفحات الماء وهو رفيعُ

ولا تكن كالدخان يعلو بنفسه **** إلى طبقات الــجو وهو وضيعُ

جعلني الله واياك من المتواضعين

-------------------------------------------------------

تحليل الحل البرمجي لمشروعنا

-------------------------------------------------------

رأينا في السابق ان برنامجنا ينقسم الى ثلاثة اقسام اولها هو ..

تحليل ادخال البيانات :

لكي نقوم بإيجاد بيانات ادخال لبرنامجنا يمكننا التفكير في طريقتين .... الاولى عن طريق الكاميرا بحيث ناخذ صور من الكاميرا الموجهة على الصغيرة اثناء نومها ثم نحلل هذه الصور في الفقرة الثانية لمعرفة ما اذا كانت الصبية قد افاقت ام لا.

والطريقة الثانية هي عن طريق المايكروفون بحيث نراقب ترددات الصوت طوال فترة نوم الصغيرة ونقوم بتحليلها لمعرفة ماذا كانت تبكي بكاء عابرا او بكاء فوقان من النوم.

بالنسبة لنا هنا سنختار الطريقة الثانية كونها الانسب لحالتنا هذه وذلك لأنها ستراقب بكاء الطفلة وليس حركتها فقد تفيق الطفلة وتعلب لبعض الوقت في الفراش دون ان يكون هناك ما يضايقها فلاداعي لإقلاق الام وننبهها دون وجود مايستحق التنبيه ولندعها تركز في وجبة الغداء الشهية التي طالما يعود الأب للبيت وهو يحلم فيها.

تحليل القسم الثاني (البيانات) :

عرفنا سويا كيف سنحصل على المدخلات لبرنامجنا وما نوعها وينبغي ان نعرف كيف سنحللها .... في الواقع ان مدخلات الصوت ما هي إلا عبارة قيم متسلسلة تعبر عن الصوت على شكل بايتات (مصفوفة بايتات) وهذه البايتات تمثل القيم التي اذا ما ارسلناها الى السمعات فسوف تخرجها على شكل صوت .... تخيل معي ان قيمة الصوت تتراوح بين 0 و 100 فان هذا سيعني انه اذا كانت القيمة 0 فمعناها الصمت المطبق (لاصوت) وهي حالة نادرة لانه لابد وان يكون هناك ضوضاء ولو خفيفة جدا لاتسمع ... المهم انه واذا وجد قيمة 100 فان هذا يعني اكبر صوت تستطيع اخراجه سماعاتك وبين ذلك فقيم تمثل قوة الصوت فلو كانت 60 فيعني 60% من قدرة سماعات كمبيوترك.

نستخلص من ذلك انه اذا كان لديك مصفوفة من الارقام المتراوحة بين 0 و 100 مثلا فان السماعات ستشغل هؤلاء واحدة تلو الاخرى بحسب قوة (قيمة) كل رقم.

طبعا في الوضع الحقيقي القيم ليست من صفر الى مئة بل تعتمد على نوع التسجيل الذي اخترته انت WaveFormat يعتمد على عدة خيارات مثل هل تريده احادي (مونو) او ثنائي (استريو) كما انه يمكن تحديد طول كل عينة من الصوت التي سيقوم المكرفون بإلتقاطها (بايت او اثنين .... وهكذا) ... والتردد (كم عينات ستؤخذ في الثانية الواحدة).

المهم لك لتعرفه ان قيم الصوت تعتمد على نوع التسجيل الذي اخترته وهذا موضوع لايمهنا هنا كثيرا.

فسوف آخد ابسط نوع للتسجيل مثلا نوع احادي بطول بايت واحد وتردد صغير.... وبهذا تكون القيم تبعنا محصورة في (بايت واحد) ومن 128 الى 255 ...

عرفنا في التحليل السابق ان الصوت عبارة عن قيم تعبر عن مستوى الضجيج وهو ما سنقوم بمراقبته لمعرفة فترات بكاء الطفلة من فترات سكوتها.

تحليل القسم الثالث (التبيهات) :

اذا استطعنا بنجاح ان نعرف ماذا كان التبيه واجب ام لا ... وفي حال وجوب التبيه ينبغي التفكير بإسلوب بسيط غير مكلف لننبه به الام عن بكاء طفلتها ... وهنا يمكن الاتجاه الى AT Commands فليس ابسط من ان نقوم بوصل سلك الهاتف العادي بكمبيوترنا بحيث انه اذا بكت الطفلة واجتازت البيانات المرحلتين السابقتين بنجاح فسنجعل الكمبيوتر يقوم بالاتصال بالأم على جوالها من رقم البيت فيرن مرتين او ثلاث ثم يقطع الاتصال فتعرف الام بأن المتصل هو برنامجنا الصغير دون ان اي تكلفة تذكر... فتهرع الى طفلتها الصغيرة.

الى هنا اكتفي لأن النوم قد اعياء عيناي ولنا لقاء بإذن الله تعالى لنكمل التصميم وتطبيق مشروعنا الصغير.

اتركم في رعاية الله

السلام عليكم ورحمة الله وبركاته

post-40889-12636914699654_thumb.png

2

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#2

الفكرة ثاقبة بصراحة وفي انتظار ان تكمل بقية المشروع

Chail .. Get Focus .. Then Catch Your Target

#3

جزاك الله خير على مواضيعك المميزة جداً ولا غرابة على أهل اليمن الطيبين وكل العرب المسلمين وكان عندي فكرة شبيهه بهذا الامر ولكن عبر الكاميرا والمراقبة عن بعد الله يوفق وبانتظارك يا اخ رغيد

#4

موضوع رائع

ههههههههههههههههههههه :P :) :lol:

كل الشكر والتحية للطفلة الصغيرة التى كانت سببا فى طرح مثل هذا الموضوع الرئع

قبلاتى لها

بالمناسبة انا كمان عندى بنت اختى خديجة ديما بتبكى وتسهر طول الليل

لكن للاسف البرنامج زى دة مش هينفع معاها خالص

لان اصلا ديما بكائها بيكون من اجل تحقيق مطالبها الشخصية مثل الحصول على الشكولاتة والحلوى ......... الخ :lol:

#5

ألف مبروك أستاذنا الحبيب رغيد الطيب على المولودة

ربنا يبارك لك فيها و يرزقك الذرية الصالحة بنين و بنات حتى يمتليء المنتدى

بهذه المواضيع الجميلة. إن شاء الله المولود القادم يكون ولد علشان يكونو

برنامجين. البنت برنامج و الولد برنامجين. :happy:

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#6

ههههههههههههههههه

حلو أوي الموضوع دا

ننتظر التكملة يا أخي الكريم

الله يعينك ويوفقك ويباركلك في بنوتك الحلوة

U R The Air I Breathe...Mo0n ChilD

alfarisnet1230761151nl7.jpg

#7

السلام عليكم ورحمة الله وبركاته.

ننتقل الان بعون الله تعالى بعد ان اخذنا فكرة عامة لما نحن مقدمون عليه الى مسئلة ادخال الصوت !....

لكي يقوم الكمبيوتر بقراءة الصوت من الميكرفون انت بحاجة للخروج عن الدوت نت قليلا .. لانه لايوجد في الدوت نت مسجل للصوت (على الرغم من انه يوجد فيها مشغل SoundPlayer

) إلا انه وحتى الان لا يوجد مسجل اصوات ضمنيا فيها ولهذا يمكن اللجوء الى عدة خيارات مثل DirectSound او دوال الادخال والاخراج في الـ APIs.

على العموم لتسهيل المهمة قمت بعمل مكتبة صغيرة على السريع تعتمد على الدايركت اكس لنستخدمها في برنامجنا (المكتبة غير مسقرة بعد وغير مجربة بالشكل جيد) غير انها

ستفي بالغرض بإذن الله تعالى.

اسميتها rtaSoundRecorder ... تجدها مرفقة مع البرنامج المرفق بإسم rtaSoundLibrary.dll

المهم في الموضوع ان هذه الآداه يمكن تعريفها بالشكل التالي :

    Private WithEvents Snd As New rtaSoundsLibrary.rtaSoundRecorder

وبهذا يكون لدينا متغير اسمه Snd يمكن استخدامه لقراءة الاصوات من الميكروفون عن طريق الامر Record كالتالي :

Snd.Record( Me.Handle, 1, 8, 8000 )

في السطر السابق قمنا باستدعاء امر التسجيل ومررنا له عنوان الفورم ثم الرقم 1 من اجل قنوات الصوت Channels والرقم 8 ويعني 8 بت (أي بايت واحد) والرقم 8000 ويعني تردد

التسجيل.

كل هذه الارقام تمثل جودة الصوت الذي سيتم ارجاعه لنا ويمكن تغيرها لكن لاتقم بذلك في هذا البرنامج لانها اكثر من كافية ... حيث اننا لا نريد تسجيل الصوت بدقة عالية وانما نريد

فقط استشعار صراخ الطفلة.

ولأننا طلبنا ان تكون البيانات المسجلة بطول 8 بت (بايت واحد) فان الراجع لنا سيكون على شكل مصفوفة من البايتات في الحدث SoundRecorded

    Private Sub Snd_SoundRecoreded(ByVal Sender As Object, ByVal SoundData() As Byte) Handles Snd.SoundRecoreded

    End Sub

لاحظ ان المصفوفة SoundData تحتوي على جميع قيم الصوت المرجعة لنا.

ومثلا لمعرفة اكبر قيمة صوت يمكن استخدام الكود التالي:

Dim MaxValue As Integer = SoundData.Max

وبهذا يكون لدينا المتغير MaxValue والذي فيه اكبر قيمة للصوت المقرؤء لحظيا.

ملاحظة مهمة:

القيم ستكون محصورة في حدود البايت الواحد ... اي من صفر الى 255 ولان القيمة 128 هي المنتصف فالقيمة ستكون محصورة غالبا بين:

128 و 255 ... بحيث ان 128 يرمز الى عدم وجود صوت و 255 ترمز الى اعلى صوت.

دعنا مثلا نعرض الصوت الحالي في Label1 ... سيصبح كود برنامجنا كاملا كالتالي :

Public Class Form1

    Private WithEvents Snd As New rtaSoundsLibrary.rtaSoundRecorder

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Snd.Record(Me.Handle, 1, 8, 8000)
    End Sub

    Private Sub Snd_SoundRecoreded(ByVal Sender As Object, ByVal SoundData() As Byte) Handles Snd.SoundRecoreded
        Dim Max As Integer = SoundData.Max
        Me.Label1.Text = Max - 128
    End Sub

End Class

لاحظ ان هذا هو كل مايلزمنا لقراءة الصوت ورؤية اكبر قيمة له في الفورم وتحديدا في Label1 ...

وقد تكون القيم من 128 الى 255 مربكة بعض الشيء ومن الجميل تحويلها الى نسب مئوية بين الصفر و 100%وذلك عن طريق التعديل التالي :

Public Class Form1

    Private WithEvents Snd As New rtaSoundsLibrary.rtaSoundRecorder

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Snd.Record(Me.Handle, 1, 8, 8000)
    End Sub

    Private Sub Snd_SoundRecoreded(ByVal Sender As Object, ByVal SoundData() As Byte) Handles Snd.SoundRecoreded
        Dim Max As Integer = SoundData.Max
        Dim Value As Integer = Math.Round((Max - 128) / 127 * 100)

        Me.Label1.Text = Value.ToString & " %"
    End Sub

End Class

الى هنا نكون قد انتهينا من ادخال الصوت الى الكمبيوتر بكل سهولة بحمد الله تعالى

ويمكن الاطلاع على المل المرفق.

السلام عليكم ورحمة الله وبركاته

rtaSoundInputTest.zip

post-40889-12638896351832_thumb.png

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#8

لتحسين الشكل الخارجي للبرنامجنا الصغير .... يمكن تجربة الكود المرفق فقد صممت اداة بسيطة لتحسين عرض بيانات الصوت الظاهر على الشاشة بدلا الليبل Label1

تحياتي

السلام عليكم

post-40889-1263890648298_thumb.png

rtaSoundsBars.zip

2

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#9

بارك الله فيك على هكذا موضوع , معك لآخر نفس. :lol:

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#10

بسم الله السميع العليم

المرحلة الثانية - تحليل الصوت

والان ننتقل الى الخطوة التي تليها ... وهي فقرة تحليل الصوت ... في هذه الفقرة سوف نقوم بمعالجة الصوت المدخل ومعرفة ما اذا كان الطفل يبكي ام لا.

لكي نقوم بذلك قمت بتصميم فئة بسيطة CryDetector تقوم بتغليف الاداة السابقة rtaSoundLibrary لتسجيل الصوت وتعرفها بهذا الشكل :

    Private WithEvents Detector As New CryDetector(Me)

لاحظ اننا قمنا هنا بتعريف متغير جديد باسم Detector من نوع الفئة الجديدة CryDetector

وهذه الفئة الجديدة فيها خاصيتين مهمتين هما الخاصية CryLevel وتفيد بتحديد القيمة التي سيعتبر اي صوت اعلى منها هو (بكاء للطفلة الصغيرة) بحيث يمكنك ان تضبط الخاصية كما تشاء (وبحسب إزعاج طفلك الصغير) .... والقيمة تتراوح من 0 الى 100 يعني كمثال تجريبي نقول ان كل صوت يتعدى الـخمسة عشر بالمائة عبارة عن بكاء بالشكل التالي :

Detector = New CryDetector(Me)

Detector.CryLevel = 15
Detector.Start()

وهذا الكود ينشى كائن جديد من النوع CryDetector ويطلق عليه الاسم Detector ثم يحدد حساسية البرنامج الى الدرجة 15 بالمئة واخيرا يبداء بالاستماع الى الاصوات عن طريق الامر Start.

والان في اي وقت يتجاوز الصوت 15 بالمئة سوف يتفجر حدث اسمه CryStart وعندما يتوقف البكاء او يهدأ سوف يتفجر الحدث CryStop.

ويمكننا ان نستغل هذه الاحداث كي نعرض صورة تبين لنا ان الان الطفل يبكي وصورة اخرى عندما يعود للنوم.

الخاصية الثانية بإسم IsCrying وهي تعيد True اذا كان الطفل يبكي و False في الحالة الاخرى(حالة نومه).

ملاحظة مهمة

هذا الجزء من معالجة البيانات يقوم فقد بتحسس الصوت الكبير (الذي يتجاوز القيمة التي تحددها في الخاصية CryLevel) ثم يفجر الاحداث على اساسه .... وهذه الطريقة مجرد مدخل وتحتوي على عيب خطير جدا سنناقشه في الجزء الثاني من تحليل بيانات الصوت بإذن الله تعالى.

في المرفقات

صورتين للبرنامج واحدة عند البكاء و الاخرى عند النوم

وكذلك البرنامج للاطلاع على الفئة الجديدة وكيف سنقوم بتعديلها في الجزء الثاني من تحليل بيانات الصوت ... قم بتشغيل البرنامج واصدر بعض الضجيج حتى ترى التاثيرات الحاصلة

تحياتي

السلام عليكم ورحمة الله وبركاته

post-40889-12640394457327_thumb.png

post-40889-12640394707676_thumb.png

rtaBabyCryingDetector.zip

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#11

بسم الله الرحمن الرحيم

والان بعد انتهينا من الجزء الأول من تحليل البيانات والوصول لتفجير الحدث CryStart عند بكاء الطفلة ..... سنجد عيبا خطيرا كنت قد اشرت عليه في ملاحظتي بآخر المشاركة الاخيرة.

وهذا العيب يكمن في ان البرنامج يقوم بمراقبة ترددات الصوت وبمجرد وصولها الى اعلى من الخاصية CryLevel التي تحدد مستوى التحذير ... فإن البرنامج يسوف يعتبر ان هذا بكاء ينبغي التحذير منه ... وهو تصرف غير صحيح ... بسبب الاصوات العابرة.

مثل بكاء قصير لثلاث ثواني مثلا .. او تخيل معي ان احدهم قام بفتح باب الغرفة مصدرا صوت فرقعة بسيط من جراء ارتطام الباب ... فبرنامجنا بحالته هذه سيعتبر ان هذا امرا ينبغي التحذير عنده خاصة اذا تجاوز الصوت 15 بالمئة كما جاء في مثالنا السابق.

ولكن هذا غير صحيح .... و الحل لهذه المعضلة البسيطة يمكن ان نعمله بعدة طرق منها مثلا مراقبة الوقت .... اي عدم تفجير الحدث مباشرة وانما الانتظار حتى تنقضي عدد من الثواني والصوت مازال مستمرا ثم نقوم بتفجير الحدث.

غير اني هنا سا استخدم طريقة مستوحاه من حكم مصرية قديمة.

اضافة النهكة المصرية لبرنامجنا.

يقول اخوتنا المصريون ( من فات قديمه تاه ) .... كما يقولون ايضا ( اللي مالوش ماضي مالوش مستقبل ) .... وهي اقوال صحيحة الى حد كبير.

ولكي تعرف ما علاقة هذه الامثال ببكاء طفلتنا الصغيرة !! .. ينبغي علينا استغلال الماضي قليلا لنستمتع بحاضرنا ...

دعوات للتأمل ....

كثير من الناس قد يفتح الحنفية ويشرب الماء وهو يلعن هذا الزمن الذي لا يوجد فيه راحة وكله تعب و و و و .... بينما لو تذكر اخينا هذا انه لم يكن من قبل هناك حنفيات في منازلنا وكان ينبغي الذهاب الى البئر في كل مرة نريد ان نشرب فيها لقال الحمد لله واستمتع بحاضره.

اصبحت اجلس في مكتبي الصغير في منزلي وادير راسي باتجاه التلفاز ممسكا بالريموت كونترول واختار القناة التي تروقني ثم اواصل تصفحي في الكمبيوتر لموقع موجود في اقصى الارض وانهل منه المعلومات التي اريدها بينما اكلم اخي الموجود على بعد كيلومترات خارج المنزل بالهاتف الجوال و ازيد من درجة برودة الغرفة بالريموت كونترول ايضاً دون ان اضطر للقيام لهناك ..... ولو حسبت كم اماكن وصلت اليها دون ان تقوم من كرسيك لأصابك الذهول !!! ... لم يكن في الماضي من يجروء او يستطيع مجرد التخيل لهكذا امور ... بينما تمر علينا مرور الكرام ولا اذكر ابدا انني حمدت الله مرة على مجرد كوني قادرا على ان اتصل بمن اريد واكلمه اينما كان على وجه البسيطة .... هل تعلم ان ابي وابوك فقط وفي زمن ليس بالبعيد اذا ذهب احدهم لزيارة الآخر ولم يجده واخبروه بانه خرج من المنزل !! .... فلاتوجد اي قوة في العالم يمكنها ان تجمعهم حتى يعود الى البيت ثانية حتى وإن كان قد ذهب الى المكتبة المجاورة في ركن الشارع لشراء جريدة ما مثلا ... ولا يمكن ان يلتقوا وربما فوتوا لقائهم المنتظر فقط لانه لم يكن هناك اساليب اتصال حديثة ... والخارج من البيت مفقود حتى يعود بحفظ الله .... وكم قد تفطرت اكباد امهات ينتظرن ابناءهم الذين تأخروا خارج البيت لوقت متأخر لكتشف الام بعدها ان الابن كان سهران عند احد اصدقاءه هنا او هناك .... بينما بكل سهولة في هذه الايام يمكن ان يرفع احدهم سماعة هاتفه ويصل اليه ويعرف اين هو في ثواني.

فإذا لم تقل الحمد لله من قبل فقلها الآن إذ أن ربك يقول :

{ اعْمَلُوا آلَ دَاوُودَ شُكْرًا وَقَلِيلٌ مِّنْ عِبَادِيَ الشَّكُورُ }

جعلني الله واياك من الشاكرين

كعادتي اتفلسلف كثيرا واخرج عن الموضوع الاساسي ... اقدم اعتذراتي عن التشتيت ....

دعنا نعود الى صلب موضوعنا ..... قلنا اننا سنستغل الماضي عملا بنصيحة اخواننا المصريين فمن الخطأ ان نأخذ القيمة الحالية للصوت دون الأخذ بالماضي .... ولمعرفة التأثير فتخيل معي .. كيف هي العلاقة التي تربط الماضي بالحاضر ... اليك اربع حالات مختلفة :

الحالة الاولى - (ضجيج بعد هدوء)

وهي ان يكون تردد الصوت الان مرتفع (حاضر) بينما التردد السابق منخفض (ماضي) فإن هذا يعني ان الصوت بدأ اي بداية بكاء ولكن في نفس الوقت قد يكون تكون فرقعة باب مثلا او ماشابه ....

الحالة الثانية - (ضجيج بعد ضجيج)

وهي ان يكون التردد الان مرتفع (حاضر) بينما التردد السابق كان مرتفعا ايضا(ماضي) فإن هذا يعني ان الصوت هو ضجيج مستمر وبالتالي فات الامر هنا اقرب الى بكاء الطفل وقد نرغب حينها في إعلام الأم بذلك ....

الحالة الثالثة - (هدوء بعد ضجيج)

وهي ان يكون التردد الان منخفض (حاضر) بينما التردد السابق مرتفع (ماضي) فإن هذا يعني ان الضجيج انتهاء وهدءت الامور.

الحالة الأخيرة (هدوء بعد هدوء)

وهي احب الحالات الى قلبي والتي تعني ان الطفلة نائمة بهدوء ولا يوجد اي ضجيج في جوار.

في الحالات السابقة نرى بوضوح ان الماضي والحاضر مرتبطان ويمكن بدراستهما الخروج بمعلومات مفيده ... والذي يهمنا هنا هو الحالة الثانية (ضجيج بعد ضجيج) ... ومعناها .. البكاء المتواصل...

للإستفادة من ذلك في برنامجنا قمت بإضافه متغير جديد الى اليه بإسم History يقوم بتخزين قيم الصوت الأخيرة في مصفوفة ثم يستخرج متوسط (معدل Average) الصوت فإذا تجاوز الـ 15 بالمئة وهي قيمة الخاصية CryLevel فانه يتم التحذير.

لمساعدتك على استيعاب الفكرة ... تخيل معي ان المتغير History يخزن القيم العشر الاخيرة للصوت ... وبالتالي ... لندرس الحالات التالية: :

الحالة الاولى

تخيل ان تكون القيم العشر تساوي صفرا اي انه لايوجد صوت (هدوء بعد هدوء).... ثم فجاءة يفتح احدهم الباب فيرتفع مستوى الصوت الى 70 بالمئة مثلا لتمثيل الضجيج الحاصل من صوت الباب (ضجيج بعد هدوء) .... اذا حصل ذلك في برنامجنا الاول فانه سوف يفجر الحدث CryStart وسيعتبر ان الطفل يبكي ويجب تحذير الام.... بينما في برنامجنا الان بعد الاضافة الاخيرة سيقوم البرنامج بجمع القيم العشر الموجودة في المتغير History وهي عبارة عن القيمة الاخيرة 70 والتسع الباقيات صفر ... وبالتالي فالمجموع هو :

70 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 -------> = 70

وبالتالي فأن المتوسط هو :

70 / 10 = 7

حين نقسم المجموع (70) على عدد القيم المخزنه وهي عشر فالناتج عندها هو 7 بالمئة اي اقل من 15 بالمئة فلايوجد داعي للتحذير.

تخيل ان الصوت في اللحظة التي تليها استمر 70 مرة اخرى (ضجيج بعد ضجيج) فأن هذا يعني ان القيميتن الاخيرتين هما 70 بينما الثمان القيم الباقية 0 و بالتالي فالمجموع هو 140 والمتوسط 14 (بالقسمة على عشرة) وهو ايضا دون المستوى 15 ولا يحتاج الى تحذير.

بينما لو استمر الامر كما هو وجائت القيمة التي تليها ايضا 70 او لنقل 50 مثلا (ايا تردد كان) ... (ضجيج بعد ضجيج ) فانه سيكون لدينا ثلاث قيم 70 و 70 و 50 و البقية اصفار ... فالمجموع عندها 190 والمتوسط 19 بالمئة اي يفوق الـ 15 بالمئة وعندها يتوجب تحذير الأم لان الصوت قد استمر فترة طويلة نسبيا.

لهذا ينبغي الان التركيز على انه وعلى الرغم من ان الصوت الحالي في حالتنا الاولى كان 70 إلا ان المتوسط هو 7 فقط وفي حالتنا الثانية كانت القيمة الحالية 70 و المتوسط 14 واما في الاخيرة فالقيمة الحالية كانت 50 بينما المتوسط 19 ... وما اريد قوله هو انه وعند اي لحظة زمنية اصبح لدينا قيمتان (قيمة الصوت الحالية ) و (قيمة الصوت المتوسطة) ... ولهذا الغرض فقد اضفت الخاصية AverageValue الى الفئة CryDetector كي نستخدمها لمعرفة موسط الصوت عند اي لحظة .... ويجد الذكر بانني جعلت البرنامج يحفظ آخر خمسين عينة للصوت ويوجد المتوسط لها ... وليس العشر الاخيرة كما جاء للتوضيح فقط منذ قليل.

ماسبق يؤكد لنا ان اخوتنا المصريين لم يكونوا مخطئين عندما ربطوا الماضي بالحاضر ... كما حصل واستفدنا من امثالهم الشعبية في برنامجنا هذا جزى الله عنا شعب مصر كل الخير.

واتركم الان مع البرنامج المعدل ... و الذي انهينا فيه تحليل الصوت ... و سننتقل في الجزء القادم الى قسم التبيهات وإبلاغ الام بما قمنا بتحليله هنا.

السلام عليكم ورحمة الله وبركاته

rtaBabyCryingDetector.zip

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#12

دائما راعي الأولة يا استاذ رغيد

رائع جداً واحنا بانتظار فقرة التنبيه للام

=================================================================

[وسط]فَإِذَا عَزَمتَ فَتَوَكَّل عَلَى اللَّهِ إِنَّ اللَّهَ يُحِبُّ المُتَوَكِّلِينَ

=================================================================[/وسط]

#13

السلام عليكم ورحمة الله وبركاته..

جزاك الله كل خير..

في انتظار المتابعة..

قال صلى الله عليه وسلم: من قال إذا أصبح: رضيت بالله ربا وبالإسلام دينا وبمحمد نبيا فأنا الزعيم لآخذن بيده حتى أدخله الجنة. الصحيحة/2686

#14

سلمت يداك اخي

الله اخليكم لبعض

وبارك الله فيك

291964_260506123967115_206850989332629_1001538_45132_n.jpg

اللهم إني أعوذ بك من علم لا ينفع ، ومن قلب لا يخشع ، ومن نفس لا تشبع ، ومن دعوة لا يستجاب لها

مواضيع مشابهة