قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

   

الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 06-02-2013, 02:45 PM المشاركة 17   
افتراضي



بسم الله الرحمن الرحيم
كود class ال serial
كود:
import java.io.IOException;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.comm.CommPortIdentifier;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.UnsupportedCommOperationException;
import javax.swing.JLabel;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * *author Taha Emara
 */
public class Serial {
    static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString = "0";
    static SerialPort serialPort;
    static OutputStream outputStream;
    
  public String ser(byte[] x , String com){
  
  
            portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {
                      

            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) 
                           

               if (portId.getName().equals(com)) {
                            

                //if (portId.getName().equals("/dev/term/a")) {
                    try {
                        serialPort = (SerialPort)
                            portId.open("SimpleWriteApp", 2000);
                    } catch (PortInUseException e) { return "Port In Use";   }
                    try {
                        outputStream = serialPort.getOutputStream();
                    } catch (IOException e) {}
                    try {
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try {
                        outputStream.write(x);
                       
                    } catch (IOException e) {return "Failed to Send Data"; }

  }
            
  }
     return "Data Sent";
       
} // void ser
  
  
  
  public void close(){
  serialPort.close();
  
  }

}
كود البحث عن البورتات
كود:
  java.util.Enumeration<CommPortIdentifier> portEnum = CommPortIdentifier.getPortIdentifiers();
        int i = 0;
        String[] r = new String[5];

        while (portEnum.hasMoreElements() && i < 5) {
            CommPortIdentifier portIdentifier = portEnum.nextElement();

            r[i] = portIdentifier.getName();//+  " - " +  getPortTypeName(portIdentifier.getPortType()) ;


            i++;


        }

        jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(r));
************************************************** *****كود الارسال
كود:
String x= jTextField1.getText();
       Serial sr=new Serial();
       Object selectedItem = jComboBox1.getSelectedItem();
        
        String com = selectedItem.toString();
       sr.ser(x.getBytes(),com);
       sr.close();
************************************************** ***

اعلانات

الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 06-02-2013, 02:48 PM المشاركة 18   
x4


و ان شاء الله الفديو شرح التطبيق و لا تنسوا الجزء الموجود في ال description في اليوتيوب به الملفات و البرامج المطلوبة ...
اتمنى لكم التوفيق .. وبعد الرد علي استفساركم سنكمل جزء الارستقبال من البيك للكمبيوتر

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 08-02-2013, 01:40 AM المشاركة 19   
افتراضي


إن شاء الله انا قربت على الانتهاء من جزء الارسال من البيك للكمبيوتر و سأرفع قريبا الفيديو المبين لذلك


الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 10-02-2013, 10:40 AM المشاركة 20   
x4


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

بفضل الله وتوفيقه قد انتهيت من الفيديو المبين لعملية استقبال البيانات من البيك للكمبيوتر


المغترب63
:: مهندس ::
تاريخ التسجيل: Oct 2010
الدولة: الحلة-فرنسا
المشاركات: 49
نشاط [ المغترب63 ]
قوة السمعة:
قديم 10-02-2013, 03:04 PM المشاركة 21   
افتراضي


عاشت دمياط التي أنجبت مثلك .
رحم الله والديك, علم وعمل ممتاز .

أعتقد بأن لغة الجافا تشبه قليلا لغة الفجول بيزك ( الا أنها تبدو الي أصعب) .

وفقك الله الى كل خير


الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 11-02-2013, 04:38 PM المشاركة 22   
افتراضي


عاشت دمياط التي أنجبت مثلك .
رحم الله والديك, علم وعمل ممتاز .

أعتقد بأن لغة الجافا تشبه قليلا لغة الفجول بيزك ( الا أنها تبدو الي أصعب) .

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


الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 11-02-2013, 08:45 PM المشاركة 23   
x4


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

بعدما وفقنا الله و انجزنا مهمتنا و هي برمجة "interface" يتعامل مع ال srial port ارسالا و استقبالا من ال PIC بلغة الجافا , الآن سنعيد عمله بلغة السي شارب
و ان شاء الله ستجدون ان الموضوع في السي شارب اسهل بكثيررررررر من الجافا
اولا كما اعتدنا ان نبدأ بمقدمة -نظري- تعريفية باللغة :-
لكن قبل البدء اود ان اقول نصيحة و اعتقد انها مهمة جدا .
لاحتراف مجال الميكرو كنترولر لابد ان تكون ملما بمجالين هما البرمجة و الالكترونيات, البرمجة عادة تكون بالسي او ما تسمي بال" embeded c" كال miKro c فنصيحة مني انك لابد ان تحترف احدي لغات البرمجة لتزويد مهارتك في برمجة الميكروكنترولر وهذا عن تجربة . وايضا ان تكون ملما بلغة التجميع"assembely " لفهم الميكروكنترولر بتعمق اكثر -و بارك الله في المهندس فتح الله عبدالعزيز"F.Abdelaziz" على مشاركاته التي تمس تلك اللغة مع ال pic له مننا كل الاحترام -
نعود الى موضوعنا:-
السي شارب
أحد لغات بيئة الدوت نت(.NET) يرمز اليها بالرمز c# وتنطق "سي شارب"، تم الاعلان عنها في عام 2000 تزامنا مع الاعلان عن بيئة الدوت نت. تتميز سي شارب بأنها أحد لغات البرمجة الشيئيه -"object oriented programming"-.استمدت هذه اللغة صفات عديدة من عدة لغات مثل (java–Delphi) .

استفادت لغة السي شارب الى حد كبير من جهود مطوري الجافا وتشاركها في كل مزاياها ومبادئ التصميم وتفوقها في بعض الاجزاء- توجد اقوال كثيرة جدا في اي اللغتين اقوي ولكن للعلم ان الجافا اقدم 1995 - . لغة السي شارب كباقي لغات الدوت نت تعمل علي انظمة تشغيل ويندوزفقط . والجافا تنتج برامج لاتعتمد على بيئه معينه مثل برامج موجهه للينكس او ويندوز او ماك..الخ . هي لغة كائنية بالمعني الحقيقي للكلمة حيث كل شيء في اللغة هو عبارة عن كائن تم تعريفه مسبقا , لذلك لا تسمح هذة اللغة بالكتابة الحرة .
بقى شيء مهم اريد ان اذكره و هو ما هي بيئة الدوت نت لاننا نسمع عن هذه الكلمة كثيرا؟
الاجابة في هذا المقال–بارك الله فيمن كتبه- لتحميل المقال
http://www.mediafire.com/view/?t96zezz9uobtzk5

خطوات تجميع الكود للسي شارب :-

للمتابع جيدا يرى ان (Common Language Infrastructure (CLI و يطلق عليه ايضا (Common Language Runtime) CLR شبيه بال jvm في الجافا, ولكن ال Jvm يدعم لغة واحدة لعدة انظمة تشغيل , اما ال -CLI ".NET" - يدعم عدة لغات لنظام تشغيل واحد وهو ويندوز. و الكلام هنا كثير.............

في التعليق القادم سندخل ان شاء الله في موضوعنا الاساسي و ساشرح باستخدام برنامج Microsoft visual studio 2008








التعديل الأخير تم بواسطة : taha emara بتاريخ 11-02-2013 الساعة 08:56 PM

الصورة الرمزية taha emara
taha emara
:: مهندس متواجد ::
تاريخ التسجيل: Aug 2009
الدولة: Egypt - Damietta
المشاركات: 126
نشاط [ taha emara ]
قوة السمعة:
قديم 12-02-2013, 05:24 PM المشاركة 24   
x4


بسم الله الرحمن الرحيم
نبدأ الان في شرح و عمل برنامج يرسل بيانات من الكمبيوتر لل PIC با ستخدام لغة السي شارب و ان شاء الله الموضوع اسهل بكثيررر من الجافا>>

صورة البرنامج المنتج


اولا الكود الكامل للمشروع
كود:
using System;
using System.Collections.Generic;// هذه هي المكتبات اللازمة لصنع البرنامج
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace Serial_send
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();//انشاء و عمل مكونات ال form 
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                comboBox1.Items.Add(port);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string t = comboBox1.Text.ToString();
            string s = textBox1.Text.ToString();
            sErial(t, s);
        }

        void sErial(string Port_name, string data_send)
        {
            SerialPort sp = new SerialPort(Port_name, 9600, Parity.None, 8, StopBits.One);
            sp.Open();

            sp.Write(data_send);
            sp.Close();
        }

    }
}

ثانيا شرح الكود:-

كود:
        private void button1_Click(object sender, EventArgs e)
        {
الدالة التى تنفذ عند الضغط علي زر البحث -button1- وبداخلها يحدث الاتي
ا-
كود:
string[] ports = SerialPort.GetPortNames();
هذا السطر مسئول عن اخذ اسماء البورتات و نضعها في مصوفة من النوع string باستخدام دالة GetPortNames في كلاسSerialPort

ب-
كود:
foreach (string port in ports) { comboBox1.Items.Add(port); }
في هذه الاسطر يتم اضافة اسماء البورتات الموجودة في مصفوفة ال ports و وضعها في ال comboBox1 -هذه ال for مثل ال for المعتادة و لكن هذه ابسط في التعامل مع المصفوفات و تسمى enhanced for

3-
كود:
private void button2_Click(object sender, EventArgs e) {
الدالة التى تنفذ عند الضغط علي زر الارسال -button2- وبداخلها يحدث الاتي
ا-
كود:
string t = comboBox1.Text.ToString();
هذا السطر مسئول عن اخذ اسم البورت الذا اخترناه من ال comboBox1 و وضعه في string t

ب-
كود:
string s = textBox1.Text.ToString();
هذا السطر مسئول عن اخذ البيانات المراد ارسالها ووضعها في string s

ج-
كود:
sErial(t, s);
في هذه السكر تنادي علي دالة قمت بعملها داخل الكلاس تسمي sErial وارسل لتلك الدالة اسم البورت و البيانات المرسلة

التكملة في التعليق القادم



الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:58 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)