قواعد المشاركة في المنتدى

(منتدى الأكسس) الموضوع:مساعدة في التفقيط بالانكليزي بواسطة: (weamman) :: (قسم الاعلانات) الموضوع:شركة اوركن الأمريكية لمكافحة الحشرات والآفات بالسعودية 100 سنة من الخبرة بواسطة: (بحار الانترنت) :: (قسم الاعلانات) الموضوع:تنظيف وتسليك البالوعات بواسطة: (كوين) :: (منتدى الأكسس) الموضوع:ممكن مساعدة في ListBox بواسطة: (musbah1978) :: (قسم الاعلانات) الموضوع:احدث غرف نوم استيل 2018و اجمل غرف نوم بنى دهب استيل و غرف نوم لستيل بنى 2018 بواسطة: (رمز الهنا) :: (قسم الاعلانات) الموضوع:فاعليات مشاركة تكنوبوند بمعرض جدة الدولى بواسطة: (tbond) :: (منتدى البرامج) الموضوع:سناب تيوب snaptube للكمبيوتر بواسطة: (احمد فؤاد 2018) :: (قسم الاعلانات) الموضوع:sasher body acyion جهاز رياضى متكامل للرجال والنساء بواسطة: (korossama) :: (قسم الاعلانات) الموضوع:جهاز حضور والانصراف ZKTeco موديل X628 -T بواسطة: (eng sara) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:How Save and retreve Image in sql server database بواسطة: (Abu Ehab) :: (قسم الاعلانات) الموضوع:تصميم تطبيقات الموبايل مع أطياف بواسطة: (موشن جرافيك) :: (قسم الاعلانات) الموضوع:دليل الخدمات المنزلية بواسطة: (realtime) :: (قسم الاعلانات) الموضوع:شركة نقل اثاث بالرياض ضفاف الخليج بواسطة: (realtime) :: (قسم الاعلانات) الموضوع:طرق تنظيف الكنب الجلد بواسطة: (سجيات) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:ادراج رابط صورة في جدول واستدعائها بواسطة: (hitman47) :: (قسم الاعلانات) الموضوع:تصميم وبرمجة تطبيقات الهواتف الذكية مع أطياف بواسطة: (موشن جرافيك) :: (قسم الاعلانات) الموضوع:كن أول من يحمل التطبيق الرسمي لموقع مطبخ أم رميساء بواسطة: (ضيااء) :: (منتدى الأكسس) الموضوع:مساعدة عاجلة من اهل الخبرة بواسطة: (startnet) :: (قسم الاعلانات) الموضوع:لايف الهلال السعودي قل رايك حول المباريات بواسطة: (korossama) :: (منتدى مبرمجي لغة جافا JAVA) الموضوع:عندي مشكلة في ربط برنامجي الجافا بالاكسس بواسطة: (omob)


راديو القرآن

المواضيع المثبته: (منتدى Microsoft Visual Basic) الموضوع:دورة التعامل مع Data Report باستخدام ADODC ( شرح بالصور ) بواسطة: (Max Bayne) :: (قسم الدروس و الدورات) الموضوع:برمجة بصمة الاصبع مع الدوت نت Microsoft FingerPrint Reader بواسطة: (FunctionSys) :: (منتدى برمجة التقارير) الموضوع:كتاب كريستال ريبورت بواسطة: (شهرزاد) :: (منتدى الدعم الفني للماسنجر المحيط العربي) الموضوع:اقتراحات تطوير الماسنجر بواسطة: (jbsa) :: (منتدى مبرمجي ASP) الموضوع:برنامج اختبارات للجامعات بواسطة: (عبدالله جابر شقليه) :: (قسم الـ portable) الموضوع:أفضل برامج مفيدة للكمبيوتر وتعمل Portable اي بدون تنصيب بواسطة: (أبو ليان) :: (منتدى مبرمجي ASP) الموضوع:برنامج مكتبة إلكترونية بواسطة: (عبدالله جابر شقليه) :: (منتدى مبرمجي ASP) الموضوع:تحزين سجلات داخل ملفات اكسل و xml وورد ..إلخ بواسطة: (عبدالله جابر شقليه) :: (منتدى مبرمجي Microsoft Visual C#.NET) الموضوع:مكتبة الأمثلة والتطبيقات للغة #C بواسطة: (النور) :: (منتدى مبرمجي Microsoft Visual VB.NET) الموضوع:دورة تحزيم البرامج Setup & Deployment Applications by VS 2008 بواسطة: (Max Bayne) :: (القسم المفتوح) الموضوع:إلا رسول الله صلى الله عليه وسلم بواسطة: (alanees) :: (منتدى C و C) الموضوع:دورة السي بلس بلس بواسطة: (مصطفي البارودي) :: (منتدى أنظمة الشبكات وأمنها) الموضوع:موسوعة كتب واسطوانات تعليم الشبكات Networking بواسطة: (مرحبا الساع) :: (منتدى برمجة الألعاب) الموضوع:أسس تصميم الألعاب ال3Dالتفاعلية بواسطة: (مصطفي البارودي) :: (قسم المواضيع المميزة) الموضوع:أرشيف للمشاركات المتميزة بواسطة: (أبو أفنان) :: (القسم المفتوح) الموضوع:قصص الأنبياء عليهم السلام .جميعا بواسطة: (غزاوية أصيلة) :: (منتدى الأكسس) الموضوع:فيديو للشروحات والدروس من عمل الاعضاء بواسطة: (startnet) :: (قسم الدروس و الدورات) الموضوع:دورة مجانية في الفجوال بيسك دوت نيت و خاصة بالمبتدئين بواسطة: (ITPROGRAMMER) :: (منتدى ADO.NET العام) الموضوع:البدء مع ADO.NET بواسطة: (HnHn) :: (قسم الدروس و الدورات) الموضوع:المواضيع والدروس التعليمية في الدوت نيت - ابدأ من هنا بواسطة: (fmo_82)

عدد الصفحات : 2  1  2   > » إضافة رد إضافة موضوع جديد

> Serial Communication with Csharp,برامج عملية لاستخدام Serial Port and Bluetooth
Bookmark and Share
تقييم الموضوع Label معدل التقيم:0
مشاركةالجمعة,23/شعبان/1430 هـ,04:44 مساءً
المشاركة #1

مشرف منتدى مبرمجي C#
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 438
سجل في:السبت,30/رجب/1429 هـ,02:20 صباحاً
الدولة:مصر
رقم العضوية: 60739



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


نبدأ سلسلة برامج نشرح بها اساسيات التعامل مع
serial Port

ملحوظة:-
البرامج منقولة من احد الكتب ( قام برفعه احد الاخوة الاعضاء - طارق فيصل - في قسم السي شارب بمشاركة وعنوانها ربط fingerprint مع Csharp وهذا رابط الكتب من المشاركة ) http://www.mediafire.com/download.php?jdzm1xmi3tz


أولا : نبذة عن الاتصال المتوالي Serial Communication
- طريقة ارسال البيانات هي ارسال بت واحد تلو الاخر أي متوالي على عكس Parellel Communication اي الاتصال المتوازي والذي يتم فيه ارسال بايت تلو الاخر
- يكون الارسال على الشكل الاتي
بت ( لمعرفة بداية الارسال ) + الداتا ( يمكن ان تكون 5 بت او 6 بت او 7 بت او 8 بت ) + بت النهاية ( يمكن ان يكون بت واحد او واحد ونص او اثنان بت )
- هناك بت اضافي يمكن ان يضاف الى الرسالة للتحقق من صحة البيانات ( لا يقوم بتصحيح الخطأ وانما لاكتشاف الخطأ فقط ) وهناك 4 طرق لهذه الخاصية ( لن نخوض فيها )

-- الاتصال المتوالي لا يعني بالضرورة وجود كابل متوالي Serial Cable
وانما هو طريقة اتصال بين جهازيين بالصورة التي شرحناها بالاعلى فعلى سبيل المثال جميع الاجهزة التي تستخدم تقنية Bluetooth للاتصال فيما بينها تستخدم طريقة الاتصال المتوالي


لذلك لكي نستطيع تجربة تلك البرامج هناك اكثر من طريقة :-
- الاتصال بين جهازي كمبيوتر بكابل متوالي Serial Cable
- الاتصال بين مخرجين Serial Ports على نفس الجهاز بكابل متوالي.
- استخدام Bluetooth Adapter بين حهازين .
- استخدام كابل محول بين Serial Port and USB او بمعنى اخر Serial - to - USB cable للربط بين مخرج serial ومخرج USB

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

البرنامج الأول : برنامج محادثة عن طريق الاتصال المتوالي
- ننشأ برنامج ويندوز جديد وليكن اسمه SerialChat
- نصمم الواجهة كما بالصورة:-


وهي تحتوي على الاتي :-
- كمبوبوكس ComboBox: لتخزين اسماء Serial Ports المنافذ المتاحة على الكمبيوتر.
اسمها :
ccbCOMPorts
- تكست بوكس TextBox: للنص المراد ارساله
اسمها : txtDataToSend
مع جعلها تقبل تعدد السطور
mutliLine : true
- ريتش تكست بوكس RichTextBox: للنص المستقبل
اسمها : txtDataReceived
مع جعلها تقبل تعدد السطور
جعل الخاصية ScrollBar رأسية
Scrollbar : vertical
- بعض الازرار ووظيفتها ظاهرة من اسمها في الصورة وهم :
btnConnect لبدء الاتصال
btnDisconnect لانهاء الاتصال
btnSend لارسال النص
- اداة عنوان Label : لعرض حالة الاتصال
اسمها : lblMessage

للتعامل مع Serial Port هناك اداة موجودة في صندوق الادوات تسمى SerialPort تجدها في تصنيف Components
يمكنها ان تضيفها الى الفورم او ننشأ كائن منه عن طريق الكود وهو ما سنستخدمه هنا .

نبدأ بإنشاء كائن من كلاس SerialPort

public partial class Form1 : Form
    {
        private System.IO.Ports.SerialPort serialPort = new System.IO.Ports.SerialPort();
       ........
       ........ 


في حدث التحميل للفورم نجلب اسماء جميع المنافذ المتوالية Serial Ports المتاحة بالكمبيوتر بالشكل الاتي :-

private void Form1_Load(object sender, EventArgs e)
        {
            .......
            .......
            .......
            
            string[] portNames = System.IO.Ports.SerialPort.GetPortNames();

            for (int i = 0; i <= portNames.Length - 1; i++)
            {
                cbbCOMPorts.Items.Add(portNames[i]);
            }

            btnDisconnect.Enabled = false;
        }


في حدث الضغط على زرار الاتصال ننفذ الكود التالي :-

private void btnConnect_Click(object sender, EventArgs e)
        {
            //-- لغلق المنفذ اذا كان مفتوحاً 
            if (serialPort.IsOpen)
            {
                serialPort.Close();
            }
            try
            {
                //-- نحدد بعض خصائص المنفذ لكي يكون جاهز للاتصال
                serialPort.PortName = cbbCOMPorts.Text;
                serialPort.BaudRate = 9600;
                serialPort.Parity = System.IO.Ports.Parity.None;
                serialPort.DataBits = 8;
                serialPort.StopBits = System.IO.Ports.StopBits.One;
                serialPort.Encoding = System.Text.Encoding.Unicode;

                //-- لفتح المنفذ
                serialPort.Open();

                //-- تحديث اداة العنوان بالحالة الجديدة للمنفذ وتعطيل زرار الاتصال وتفعيل زرار انهاء الاتصال
                lblMessage.Text = cbbCOMPorts.Text + " connected.";
                btnConnect.Enabled = false;
                btnDisconnect.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


قبل المضي قدما بالبرنامج نشرح الخصائص التي حددناها بالكود وهي :-
- PortName : اسم المنفذ والذي تم اختياره من الكمبوبوكس
- BaudRate : وهي سرعة الاتصال وتقاس بالبت في الثانية b/s
- prity: وهي اسلوب اكتشاف الخطأ الذي ذكرناه في المقدمة والقيمة كما نرى تأتي من enum خاص بالكلاس والقيمة None تعني اننا لن نستخدم اسلوب اكتشاف الخطأ بمعنى انه لن يتم اضافة البت الخاص به .
- DataBits : وهي عدد البت الخاص بالداتا وكما ذكرنا يمكن ان تكون 4 , 5 , 6, 7 , 8
- StopBit : وهي البت التي تحدد نهاية الرسالة المرسلة والتي كما ذكرنا يمكن ان تكون 1 , 1.5 ، 2
- Encoding : تخص نوع تشفير البيانات المرسلة ( الافتراضي هو ASCII ويمكن ان لا نحددها اذا كانت الرسالة باللغة الانجليزية اما اذا كانت الرسالة باللغة العربية فيتعين علينا تحديده بالقيمة الموجودة بالكود Unicode )

في حدث الضغط على زرار انهاء الاتصال ننفذ الكود التالي :-

private void btnDisconnect_Click(object sender, EventArgs e)
        {
            try
            {
                //-- لانهاء الاتصال وغلق المنفذ
                serialPort.Close();

                //-- update the label and enable and disable buttons
                lblMessage.Text = cbbCOMPorts.Text + " disconnected.";
                btnDisconnect.Enabled = false;
                btnConnect.Enabled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


في حدث الضغط على زرار ارسال ننفذ الكود التالي :-
private void btnSend_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort.Write(txtDataToSend.Text + Environment.NewLine);
                txtDataReceived.AppendText(">" + txtDataToSend.Text + Environment.NewLine);
                txtDataReceived.ScrollToCaret();

                txtDataToSend.Text = String.Empty;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }


لارسال الرسالة نستخدم الدالة Write الخاصة بالكائن serialPort والتي تستقبل متغير من النوع نص string وهي الرسالة المراد ارسالها , او مصفوفة من الحروف , او مصفوفة من النوع Byte

والدالة ScrollToCaret الخاصة بـ RichTextBox تقوم بتحريك ScrollBar الى اسفل لكي يظهر الجزء الموجود به النص الجديد


نلاحظ ان عملية الارسال سهلة فقط استخدام الدالة Write , أما لاستقبال البيانات من المنفذ فهناك بعض الامور التي يجب معرفتها

فهناك حدث خاص بالاداة Serial Port وهو DataReceived وهذا الحدث يتم تفعيله عند استقبال المنفذ اي بيانات اتوماتيكيا
لذا اذا كنا استخدمنا الاداة الموجودة بصندوق الادوات ووضعها على الفورم , فعند رؤية الاحداث الخاصة بها سنرى هذا الحدث في صندوق الخصائص ونكتب الكود المراد تنفيذه , أما في حالتنا هذه وقد قمنا بانشاء كائن من الاداة باستخدام الكود فيتعين علينا اضافة EventHandler الخاص بهذا الحدث بالشكل الاتي :-

private void Form1_Load(object sender, EventArgs e)
        {
            //-- Set the eventhandler for the DataReceived event.
            serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
.......
......
......


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

private void serialPort_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            txtDataReceived.BeginInvoke(new myDelegate(updateTextBox));
        }

        public delegate void myDelegate();
        public void updateTextBox()
        {
            // -------- في حالة استقبال بيانات باللغة العربية ----------------
                //-- معرفة عدد البايت الذي تم استقباله --
                int bytesToRead = serialPort.BytesToRead;
                //-- تعريف مصفوفة من النوع حرف .
                char[] ch = new char[bytesToRead];
                int bytesRead = 0;
                
                //قراءة البيانات المستقبلة وملآ مصفوفة الحروف بها .
                bytesRead = serialPort.Read(ch,0,bytesToRead);
                
                // استخراج النص من مصفوفة الحروف
                string str = new string(ch, 0, bytesRead);
                
                //تحديث الاداة على الفورم بالنص المستقبل 
                txtDataReceived.AppendText(str);
                txtDataReceived.ScrollToCaret();
            #endregion

          // في حالة استقبال بيانات باللغة الانجليزية .
                //txtDataReceived.AppendText(serialPort.ReadExisting());
                //txtDataReceived.ScrollToCaret();
            
        }


نلاحظ اننا في حالة استقبال رسالة باللغة الانجليزية ASCII code نستخدم الدالة ReadExisting الموجودة بالكلاس SerialPort أما في حالة استقبال رسالة باللغة العربية Unicode لا نستطيع استخدام هذه الدالة وبدلا منها نستخدم الدالة Read


بهذا نكون قد انتهينا من أول برامجنا في التعامل مع Serial Communication او الاتصال المتوالي

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

دمتم سالمين ....

وبالتوفيق للجميع .....


حررت من قبل: Prof.Mendl في الجمعة,23/شعبان/1430 هـ,04:53 مساءً


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,09/رمضان/1430 هـ,02:45 مساءً
المشاركة #2

مشرف منتدى مبرمجي C#
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 438
سجل في:السبت,30/رجب/1429 هـ,02:20 صباحاً
الدولة:مصر
رقم العضوية: 60739



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



انتهينا في المشاركة السابقة من عمل برنامج محادثة (يستخدم طريقة الاتصال المتوالي Serial Communication ) .

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

هذه الاجهزة تستخدم تقنية Bluetooth والتي تستخدم طريقة الاتصال المتوالي للربط مع جهاز اخر .

لذلك ما نحتاجه لاختبار الكود هو :-
- جهاز جوال يدعم Bluetooth .
- جهاز محول Bluetooth لجهاز الكمبيوتر ( ليجعله يدعم الاتصال بـ Bluetooth )

وللتفاعل مع تلك الاجهزة يتم استخدام اوامر AT وهي اوامر تستخدم للتحكم في اجهزة الاتصال المتوالي مثل Modem , كذلك معظم اجهزة الجوال تدعم تلك الاوامر وهي ما سوف نستخدمه للتفاعل مع الجوال .

اختبار مبدئي :-
- قم بعمل ربط بين جهازي الكميبوتر والجوال عن طريق Bluetooth سيخبرك المحول Bluetooth باسم المنفذ الذي تم استخدامه لعمل الربط وليكن فرضاً هو المنفذ COM1 .
- في برنامجنا اختار المنفذ COM1 وقم بعمل اتصال عن طريق الضغط على زر Connect " اتصال " .

ستجد انه قد ظهر في مربع نص الرسائل المستقبلة هذه الرسالة " AT OK " والتي تم استقبالها من الهاتف الجوال نتيجة اتصالك به عبر المنفذ COM1 .

ويمكنك تجربة بعض هذه الاوامر التي في الجدول الاتي :-
الامر الغرض الاستجابة من الامر
AT لجذب الانتباه وبداية الحوار AT OK
AT* لعرض جميع اوامر AT AT *EACS, *EAID, *EALR, *EALS, *EAM, *EAMS, *EAPM, *EAPN, and so on
AT+CGMI طلب معرف المصنع ERICSSON (بافتراض ان الهاتف المستخدم هو سوني اريكسون )
AT+CGMM طلب معرف الموديل 1130202-BVT68 (بافتراض ان الهاتف المستخدم هو سوني اريكسون T68i )
ATDT+Number الاتصال برقم (والذي يكتب بعد علامة + " "
AT*EVA فتح الاتصال (لبدء المكالمة )
AT+CBC? لمعرفة حالة البطارية +CBC: 0,44 (والرقم 44 يعني ان البطارية مشحونة بنسبة 44% )
AT+CSQ لمعرفة قوة الاشارة +CSQ: 14,99 (تعني ان قوة الاشارة هي 14.99 وتكون قوة الاشارة بين القيمتين صفر و 31 )

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


هنا سنستخدم الامرين ATDT , AT*EVA لعمل لنتحكم بالهاتف الجوال من خلال الكمبيوتر في عملية الاتصال والرد على المكالمات الواردة .

ملحوظة :
ليس كل الهواتف تدعم هذين الامرين ( في البرنامج قام المؤلف بتجربة هذين الامرين على الهاتف الجوال سوني اريكسون T68i ).


والان سنضيف بعض الادوات الى الفورم الرئيسي لبرنامجنا وهي كما بالشكل :


مربع نص txtDialNumber : لاستقبال الرقم المراد الاتصال به
وزرارين واحد للاتصال والاخر للرد على المكالمة الواردة .
btnDialNumber : للاتصال برقم
btnAnswerCall : للرد على المكالمة الواردة

والان نأتي الى الكود :-
في حدث الضغط على زرار الاتصال ننفذ الكود التالي :-
private void btnDialNumber_Click(object sender, EventArgs e)
        {
            //---لكتابة الامر ATDT الى المنفذ Serial Port --
            serialPort.Write("ATDT " + txtPhoneNumber.Text + Environment.NewLine);
        }


في حذث الضغط على زرار الرد على المكالمة الواردة ننفذ الكود التالي :-
private void btnAnswerCall_Click(object sender, EventArgs e)
        {
            //---لكتابة الامر  AT*EVA الى المنفذ Serial Port --
            serialPort.Write("AT*EVA" + Environment.NewLine);
        }


الان يمكنك التحكم في هاتفك الجوال من خلال جهاز الكمبيوتر للاتصال والرد على المكالمات الواردة عن طريق كتابة الرقم المراد الاتصال به ثم الضغط على زرار الاتصال بالرقم Dial وللرد على المكالمة الواردة يمكنك الضغط على زرار Answer Call .

لاحظ أنه قد قمنا في البداية بعمل ربط بين جهازي الهاتف الجوال والكمبيوتر عن طريق Bluetooth .

ملحوظة أخيرة :-

لم اقم بتجربة الكود لعدم توافر جهاز المحول لدي لجهاز الكمبيوتر حتى يمكنه الربط مع هاتفي الجوال لتجربة الكود .
لذا ارجو من الاخوة المتوافر لديهم هذه الامكانية ان يجربوا الكود والبرنامج ويعطونا النتيجة او اي رسائل خطأ تظهر لهم ( مع ملاحظة التأكد من اصدارة الاوامرAT الذي يدعمها هاتفهم الجوال ).

اتمنى ان يكون الكود مفهوم والموضع شيق ومفيد لكم .

دمتم سالمين ....

وبالتوفيق للجميع ....


حررت من قبل: Prof.Mendl في السبت,09/رمضان/1430 هـ,02:51 مساءً


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,19/رمضان/1430 هـ,10:13 مساءً
المشاركة #3

مشرف منتدى مبرمجي C#
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 438
سجل في:السبت,30/رجب/1429 هـ,02:20 صباحاً
الدولة:مصر
رقم العضوية: 60739



اتمنى ان يكون 100 زائر هؤلاء قد استفادوا من الموضوع .

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

لأنني سأشعر ان هناك احد ما يتابع معي ما اكتبه .

على كل حال انا غرضي الافادة للجميع و لا اريد منكم جزاءً ولا شكورا .

دمتم سالمين ....

وبالتوفيق للجميع ....


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,21/رمضان/1430 هـ,11:45 مساءً
المشاركة #4

مشرف منتدى مبرمجي C#
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 438
سجل في:السبت,30/رجب/1429 هـ,02:20 صباحاً
الدولة:مصر
رقم العضوية: 60739



في هذه المشاركة نطبق برنامج المحادثة باستخدام الاتصال المتوالي وتقنية Bluetooth على اجهزة حاسب الجيب Pocket PC

هذا لأن الكلاس Serial Port موجود ايضا في Compact FrameWork 2.0 وبالتالي يمكننا استخدامه مع اجهزة Pocket PC

العتاد المطلوب للبرنامج :-
- جهازي Pocket PC مدعمين لخاصية Bluetooth .

ملحوظة :-
المؤلف قام باستخدام الجهاز iMate JASJAR والذي يعمل على نظام تشغيل Windows Mobile 5



ملحوظة :-
هناك بعض المشاكل التي تحدث اثناء استخدام هذا الكلاس مع اجهزة تعمل على نظام تشغيل اقدم من Windows Mobile 5 مثل فقد بعض البيانات المستقبلة وتفريغ سريع للبطارية .



لبناء التطبيق نتبع الخطوات الاتية :-
- انشاء مشروع جديد ونختار نوعه Smart Devices ---> Windows Mobile 5 Pocket PC ----> Device Application كما بالصورة .


ملحوظة :-
لا توجد هذه النوعية من التطبيقات مع Visual Studio 2005 افتراضيا , لذلك عليك تحميل WIndows Mobile 5 Pocket PC SDK من موقع ميكروسوفت والبحث عن المكتبة هناك على هذا الرابط :-
ابحث في هذا الرابط على المكتبة

- نجهز الفورم بالشكل الاتي :-


--- الادوات الموجودة بالفورم هي :-
- TextBox للنص المرسل واسمه txtMessageToSend
- TextBox للنص المستقبل واسمه txtReceivedMessage وله الخواص الاتية :
MultiLine : true
ScrollBar: Vertical
- ComboBox للمنافذ المتاحة بالجهاز واسمه cbbCOMPort ونضيف اسماء المنافذ له وهي COM1 - COM9
-Button للاتصال واسمه btnConnect
- Menu للارسال واسمها miSend

لن نشرح الكود لأنه نفس الكود السابق الخاص ببرنامج المحادثة الموجود في اول مشاركة .
واليكم الكود :-
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO.Ports;
using System.Windows.Forms;

namespace SerialCommChatPocketPC
{
    public partial class Form1 : Form
    {
        SerialPort serialPort = new SerialPort();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            serialPort.DataReceived+=new SerialDataReceivedEventHandler(serialPort_DataReceived);
        }

        private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            txtMessageToSend.BeginInvoke(new myDelegate(updateReceivedMessageBox));
        }

        public delegate void myDelegate();
        public void updateReceivedMessageBox()
        {
            txtReceivedMessage.Text += (serialPort.ReadExisting()) + txtReceivedMessage.Text;
            txtReceivedMessage.ScrollToCaret();
        }

        private void miSend_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort.Write(txtMessageToSend.Text + "\r");
                txtReceivedMessage.Text = ">" + txtMessageToSend.Text + "\r" + txtReceivedMessage.Text;
                txtMessageToSend.Text = string.Empty;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            if (serialPort.IsOpen)
            {
                serialPort.Close();
            }
            try
            {
                serialPort.PortName = cbbCOMPort.Text;
                serialPort.BaudRate = 9600;
                serialPort.Parity = Parity.None;
                serialPort.DataBits = 8;
                serialPort.StopBits = StopBits.One;
                serialPort.Open();
                MessageBox.Show("Port Opened Successfully!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}


لاختبار البرنامج :-
- تقوم بعمل ربط بين جهازي الكمبيوتر وحاسب الجيب Pocket PC بواسطة ActiveSync ( ستحتاج الى تنزيلها للتعامل مع ويندوز الموبايل 5 - وهي من الضروريات لتحميل مكتبة التعامل مع ويندوز الموبايل 5 )
- تختار Windows Mobile 5 Pocket PC Device من القائمة المنسدلة كما بالشكل ، ثم تضغط F5


بذلك يتم تحميل البرنامج الى حاسب الجيب ( Pocket PC ) كرر نفس الخطوات مع جهاز حاسب الجيب الاخر

- ربط جهازي حاسب الجيب عن طريق Bluetooth وباستخدام احدى المنافذ .
- ستجد المسار الافتراضي للبرنامج على جهاز حاسب الجيب في
Program Files\"Program Name" ثم تشغل البرنامج على الجهازين وتختار منفذ للاتصال ومن ثم يمكنك عمل المحادثة على جهازي حاسب الجيب PocketPC

اتمنى ان يكون التطبيق واضح ومفهوم .


دمتم سالمين ...

وبالتوفيق للجميع ...


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالسبت,15/فر/1431 هـ,06:30 مساءً
المشاركة #5

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 1
سجل في:السبت,15/فر/1431 هـ,02:32 مساءً
الدولة:أثيوبيا
رقم العضوية: 93634



السلام عليكم ورحمه الله وبركاته
اخي العزيز اولا اشكرك على شرحك الجميل ولكن انا لدي سؤال واتمنى الاجابه عليه

وهو انني اريد عمل برنامج لتحكم بالمنفذ التسلسلي يعني يكون فيه امكانيه اختيار اي com اريد التحكم فيه com1 ;com2; com3

ثم يكون فيه زرار بحيث اذا ضغط على الزرار يرسل للبورت مثلا 01101000 اي binary حدد

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




http://www.youtube.com/watch?v=Qiy30AdBrPU


حررت من قبل: amanysharp في الأحد,16/فر/1431 هـ,01:29 مساءً


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالاثنين,17/فر/1431 هـ,11:24 صباحاً
المشاركة #6

مشرف منتدى مبرمجي C#
الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 438
سجل في:السبت,30/رجب/1429 هـ,02:20 صباحاً
الدولة:مصر
رقم العضوية: 60739



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

بخصوص السؤال الاول البرنامج الاول به هذه الخاصية وهي عرض المنافذ المتاحة والتعامل مع COM1 نفسه مع باقي المنافذ

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

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


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,05/ربيع الأول/1431 هـ,09:52 مساءً
المشاركة #7

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 2
سجل في:الخميس,05/ربيع الأول/1431 هـ,09:28 مساءً
الدولة:مصر
رقم العضوية: 93854



greeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeet thanks
its a realy useful tutorial
ربنا يكرمك وشكرا على الافادة


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالثلاثاء,08/ربيع الثاني/1431 هـ,05:22 صباحاً
المشاركة #8

الرتبة في المنتدى:رائد

أيقونة المجموعة

المجموعة: أعضاء فعالين
المشاركات: 439
سجل في:الأربعاء,21/شعبان/1430 هـ,07:08 صباحاً
الدولة:اليمن
رقم العضوية: 91573



والله موضوع متعوب علية ...
جزاك الله الف خير اخي الحبيب...


--------------------
وقال تعالى(( وَلَن تَرْضَى عَنكَ الْيَهُودُ وَلاَ النَّصَارَى حَتَّى تَتَّبِعَ مِلَّتَهُمْ قُلْ إِنَّ هُدَى اللّهِ هُوَ الْهُدَى وَلَئِنِ اتَّبَعْتَ أَهْوَاءهُم بَعْدَ الَّذِي جَاءكَ مِنَ الْعِلْمِ مَا لَكَ مِنَ اللّهِ مِن وَلِيٍّ وَلاَ نَصِيرٍ ))......

للمزيد من المشاريع الجاهزة ودورات برمجة المواقع اضغط هنا
رابط الموقع
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالجمعة,15/ذو الحجة/1432 هـ,11:33 مساءً
المشاركة #9

الرتبة في المنتدى:رقيب

أيقونة المجموعة

المجموعة: الأعضاء
المشاركات: 40
سجل في:الأحد,29/جمادى الأولى/1427 هـ,09:12 صباحاً
الدولة:مصر
رقم العضوية: 11573



thank you man very much


--------------------
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة
مشاركةالخميس,04/فر/1433 هـ,03:22 صباحاً
المشاركة #10

مشرف لمنتدى الفيجوال 6
الرتبة في المنتدى:لواء

أيقونة المجموعة

المجموعة: مشرفي الأقسام
المشاركات: 1510
سجل في:الخميس,01/ربيع الأول/1427 هـ,12:13 صباحاً
الدولة:مصر
رقم العضوية: 9481



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

كنت اتمنا تنسيق الموضوع اكثر حتي يكون جزابا للقراءة والمتابعة ولكن جزاك الله خيرا

والله الموفق والمستعان
للأعلىأبلغ المشرف عن هذه المشاركة
لتعقيب على هذه المشاركة مباشرة

    

عدد المتصفحين لهذا المنتدى «1»: (الضيوف «1» - المتخفون «0»)
الأعضاء «0»: .

عدد الصفحات : 2  1  2   > » إضافة رد جديد إضافة موضوع جديد



 
الوقت الأن:اليوم,01:20 صباحاً بتوقيت القدس المحتلة

Powered By arabmoheet v3.1

منتديات المحيط العربي  -  راسلنا  -   أعلى
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)
X   رسالة المنتدى
(سوف يتم اغلاق هذه النافذة بعد 2 ثانية)