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

عندي مشكلة ابي مساعدة من مبرمجي البيك بالميكروسي

بدأه SEMMOOR في 9 مارس 2012 · 17 رد · 3,494 مشاهدة · في الميكروكنترولر (المتحكم) و الدوائر الرقمية و المنطقية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مشروعي عبارة عن برنامج يقوم بتخزين الارقام المدخلة عن طريق الكيباد او الكيبورد ويعرضها في LCD ومن ثم يقوم بتخزيين الاسم المدخل ورقم الهاتف في SD/MMC CARD .

الاسم المدخل راح يكون اسم الملف في SD/MMC CARD والرقم المدخل راح يكون داخل الملف.

ولكن هناك مشكلة لم استطع حلها وهي ان كل شي شغال تمام ولكن لا ادري كيف ارسل الاسم والرقم الى SD/MMC CARD

ومن ثم عرضها على LCD .

أرجوكم ساعدوني اخواني.

Phone Directory.rar

#2

كيف كل شئ شغال تمام وفكرة المشروع الأساسية لم يتم حلها

هل قمت من قبل بعمل interface بين ميكروكنترولر وكارت SD

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#3
حريف برمجة كتب:

كيف كل شئ شغال تمام وفكرة المشروع الأساسية لم يتم حلها

هل قمت من قبل بعمل interface بين ميكروكنترولر وكارت SD

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

#4

حسنا هل قمت بتصميم برنامج خاص من جهة الكمبيوتر للتعامل مع ال com port ومن ثم الميكرو فال SD card ام انك إستخدمت برنامج جاهز كال Hyper terminal

2

هل لك ان تطلعنا على الكود

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#5
حريف برمجة كتب:

حسنا هل قمت بتصميم برنامج خاص من جهة الكمبيوتر للتعامل مع ال com port ومن ثم الميكرو فال SD card ام انك إستخدمت برنامج جاهز كال Hyper terminal

2

هل لك ان تطلعنا على الكود

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

على فكرة المشرووع مرفق في الاعلى باسم Phone Directory

اسف اخوي على الاطالة وشاكر لك مساعدتك يعطيك العافية.

Phone Directory.rar

#6

معذرة لم أرى الكود

انا ليس لدى خبرة فى البيك لكن قرأت الكود ككود سى عادى إعتمادا على ما اعرفه من ال AVR

لى ملاحظة

     // Initialise the SD card bus
     while(Mmc_Init());

     // Initialise the FAT file system
      while(Mmc_Fat_Init());

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

سؤال آخر بالنسبة للكى باد هل هى ال 4 * 4 matrix

لأنه فى هذا الكود

MyKey =Keypad_Key_Click(); // Get the name

لا أعرف محتويات الدالة لكن ربما يكون الخطأ داخلها أرجو ان تتأكد انها تعطيك حرف بتنسيق ASCII

لكن بما اننى لا اعرف الخرج فأنا اسئلك هل بعد ان تكتب على ال ال LCD

Name:

وتدخل أى حرف هل يظهر على الشاشة طبيعيا

وأريد أن اسأل عن شئ آخر وهو مهما كان حجم الكيباد فلن تتمكن من ادخال كل حروف الأبجدية وانا اعتقد ان هذه الدالة مصممة لإدخال ارقام وليست حروف وعندما تدخلها على ال lcd

جرب وضع السطر التالى بعد الكود السابق

MyKey + = 0x30;

وقل لى النتيجة

تم تعديل هذه المشاركة بواسطة حريف برمجة في 13 مارس 2012 في 09:13 — السبب: إملائى

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#7

أرجو منك ان تلغى الكود السابق

أى لا تنفذ الحل السابق اكملت قراءة الملف وجدت ان خرج الدالة لا يعبر عن رقم بل عن ترتيب الأزرار كما توضح انت من ال

              switch(MyKey)//finds whic letter is inputted, then assign its ASCII
              {
              case 12: MyKey = 65; break; // A
              case 13: MyKey = 66; break; // B
              case 14: MyKey = 67; break; // C
              case 15: MyKey = 68; break; // D
              case 16: MyKey = 69; break; // E
              }

وهى تبدأ من 12 عشرى حتى 16 لا أعرف اى ازرا تناظر لكنها لا تمثل اى standard code على الإطلاق

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

وانا اريدك ان تكتب بعد ال switch case السابقة سطر إختبار

وهو

 MyKey = 65;

واريدك ان ترفق صورة قبل وبعد الإختبار

1

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#8
حريف برمجة كتب:

أرجو منك ان تلغى الكود السابق

أى لا تنفذ الحل السابق اكملت قراءة الملف وجدت ان خرج الدالة لا يعبر عن رقم بل عن ترتيب الأزرار كما توضح انت من ال

              switch(MyKey)//finds whic letter is inputted, then assign its ASCII
              {
              case 12: MyKey = 65; break; // A
              case 13: MyKey = 66; break; // B
              case 14: MyKey = 67; break; // C
              case 15: MyKey = 68; break; // D
              case 16: MyKey = 69; break; // E
              }

وهى تبدأ من 12 عشرى حتى 16 لا أعرف اى ازرا تناظر لكنها لا تمثل اى standard code على الإطلاق

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

وانا اريدك ان تكتب بعد ال switch case السابقة سطر إختبار

وهو

 MyKey = 65;

واريدك ان ترفق صورة قبل وبعد الإختبار

بالنسبة للكيباد هي فعلا 4x4 كما قلت فعلا الحروف تبدا من 12 حتى 16 A-B.

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

بس في حالة الارسال اللى الكارد تجي كتابات ثانية لم اكتبها, مثل تظهر على الشاشة Name No وبعض الاحرف.

جربت الطرق بس مانفعت.

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

اي ان ظهور الاحرف والارقام بصورة صحيحة على الشاشة لايعني صحتها في الكارد.

اكيد لازم نظيف امر تحويل في المايكروسي, انا لما كتبت الامر ;(wordtostr(MyKey,filename اي تحويل الحرف المدخل من الكايباد الى string , كل ماكتب اسم الملف يتم انشاؤه ولكن البيانات غير , مثال عندما ادخل الرقم 66 على الكيباد يظهر لي في الملف 65.

والله لم اجد حلا لهده المشكلة ياخوي.

اسف ياخوي تعبتك معاي.

تم تعديل هذه المشاركة بواسطة SEMMOOR في 14 مارس 2012 في 14:48

#9

هل تعنى أن هذه المجموعة تم تنفيذها بنجاح

 while(1)
        {
           do
             MyKey =Keypad_Key_Click(); // Get the name
             while(!MyKey); //if nothing pressed nothing
             if(MyKey == Enter)break; // If ENTER pressed breake form loop

              switch(MyKey)//finds whic letter is inputted, then assign its ASCII
              {
              case 12: MyKey = 65; break; // A
              case 13: MyKey = 66; break; // B
              case 14: MyKey = 67; break; // C
              case 15: MyKey = 68; break; // D
              case 16: MyKey = 69; break; // E
              }
             if(MyKey == 10)MyKey = 0; // If 0 key pressed
             Lcd_Chr_Cp(MyKey);    //display inputted name on lcd
             longToStr(MyKey, Name); //convert the name to string in Name
             filename[7] = Name;    //now Name as the file name
        }

ارجوا ان ترفق صورة للخرج

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#10
حريف برمجة كتب:

هل تعنى أن هذه المجموعة تم تنفيذها بنجاح

 while(1)
        {
           do
             MyKey =Keypad_Key_Click(); // Get the name
             while(!MyKey); //if nothing pressed nothing
             if(MyKey == Enter)break; // If ENTER pressed breake form loop

              switch(MyKey)//finds whic letter is inputted, then assign its ASCII
              {
              case 12: MyKey = 65; break; // A
              case 13: MyKey = 66; break; // B
              case 14: MyKey = 67; break; // C
              case 15: MyKey = 68; break; // D
              case 16: MyKey = 69; break; // E
              }
             if(MyKey == 10)MyKey = 0; // If 0 key pressed
             Lcd_Chr_Cp(MyKey);    //display inputted name on lcd
             longToStr(MyKey, Name); //convert the name to string in Name
             filename[7] = Name;    //now Name as the file name
        }

ارجوا ان ترفق صورة للخرج

ارفقت الصور اخيرا اسف اخوي كنت مشغوول شوي.

بالنسبة للصور مرقمة .

الصورة رقم 1: ادخلت فيها الاسم وهو حرف A وبعدين ادخلت الرقم 0551050091.

الصورة رقم 2: تم ظهور رسالة على الشاشة Saving Completed.

الصورة رقم 3: هنا المشكلة عند استخدام السريال بورت للتاكد من محتويات الكارد لا تظهر الارقام التي سجلتها ولكن تظهر الكتابة التي على الصورة رقم 3 اللي مكتوبة باللون الأخضر.

post-151163-070091900 1331907287_thumb.p

post-151163-030510200 1331907308_thumb.p

post-151163-047114800 1331907322_thumb.p

المرفقات
1.png2.png3.png
#11
             longToStr(MyKey, Name); //convert the name to string in Name

ما وظيفة السطر السابق ولا تقل لى كما هو مكتوب فى التعليق

لأنه أولا اى string لابد وأنه يتكون من مصفوفة ليس متغير واحد بايت من نوع char

و2 دالة longtostr انا لا أعرف لمذا اخترت MyKey من نوع لونج وانت تتوقع ارقام موجبة من رقمين عشريين فإخترها char افضل حتى لا تضطر للتحويل كل مرة

لذلك التصحيح ان تعرف المتغير

char Name[16];

لو إفترضنا جدلا ان اكثر عرض للإسم = 16

من السطر الثانى فهمت ان Name ما هو إلا متغير مؤقت لحفظ حرف واحد

اذا

            filename[7] = Name;    //now Name as the file name

filename هو الإسترنج الذى يحمل إسم الملف

لكن ما فعلته هنا هو أنك قمت بتخزين الحرف Name فى آخر متغير فى المصفوفة دائما ولكن لكى تعلم ان آخر متغير هو الذى يحمل حرف Nullstring أو الرقم 0x00 اى ان اى مصفوفة حرفية يجب ان تحتوى على سلسلة من تلك الحروف ويتم إنهائها بالرقم 0

لذلك إذا ارسلت تلك ال string لدالة أخرى سيتم رفضه

أعتقد ان العيب عندك هنا

           longToStr(MyKey,Num);    //convert number to string in Num

نفس المشلكة بالنسبة للإرقام

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

1

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#12
حريف برمجة كتب:

             longToStr(MyKey, Name); //convert the name to string in Name

ما وظيفة السطر السابق ولا تقل لى كما هو مكتوب فى التعليق

لأنه أولا اى string لابد وأنه يتكون من مصفوفة ليس متغير واحد بايت من نوع char

و2 دالة longtostr انا لا أعرف لمذا اخترت MyKey من نوع لونج وانت تتوقع ارقام موجبة من رقمين عشريين فإخترها char افضل حتى لا تضطر للتحويل كل مرة

لذلك التصحيح ان تعرف المتغير

char Name[16];

لو إفترضنا جدلا ان اكثر عرض للإسم = 16

من السطر الثانى فهمت ان Name ما هو إلا متغير مؤقت لحفظ حرف واحد

اذا

            filename[7] = Name;    //now Name as the file name

filename هو الإسترنج الذى يحمل إسم الملف

لكن ما فعلته هنا هو أنك قمت بتخزين الحرف Name فى آخر متغير فى المصفوفة دائما ولكن لكى تعلم ان آخر متغير هو الذى يحمل حرف Nullstring أو الرقم 0x00 اى ان اى مصفوفة حرفية يجب ان تحتوى على سلسلة من تلك الحروف ويتم إنهائها بالرقم 0

لذلك إذا ارسلت تلك ال string لدالة أخرى سيتم رفضه

أعتقد ان العيب عندك هنا

           longToStr(MyKey,Num);    //convert number to string in Num

نفس المشلكة بالنسبة للإرقام

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

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

ولكن هناك مشكلة بسيطة وهي عند حفظ الارقام , تحفظ الارقام بالشكل الصحيح داخل الملف ولكن بعد الرقم الاخير في كل رقم تظهر رموز غير مفهومة . أرفقت صورة بعد تعديل الكود.

عل العموم اشكرك اخوي حريف صحيح انك حريف الله يجزاك خير.

post-151163-088722900 1332227712_thumb.p

post-151163-026418800 1332227732_thumb.p

المرفقات
1.png2.png
#13

ممكن الملف الجديد بعد التعديل

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#14
حريف برمجة كتب:

ممكن الملف الجديد بعد التعديل

تفضل اخوي الملف في المرفقات.

Phone Directory.rar

#15

كالعادة صلحت اللوب

لكنك لم تنهى ال string ب 0x00 يجب ان تنهيها بالرقم صفر قبل الخروج منها

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

1

موقع البرنامج

مبارك لشعب تونس photo-thumb-42837.png

#16

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

نعم كما ذكر الأخ حريف فان هذه القيم عشوائية في الذاكرة

عليك بمراجعة طول البيانات المخزنة قبل استخدام اللوب وراجع كذلك استخدام الأمر size

#17
khalid elabbass كتب:

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

نعم كما ذكر الأخ حريف فان هذه القيم عشوائية في الذاكرة

عليك بمراجعة طول البيانات المخزنة قبل استخدام اللوب وراجع كذلك استخدام الأمر size

السلام عليكم ياشباب .

الحمدلله عدلت الكود اما الان خلاص البرنامج كامل ويعمل بالشكل الصحيح وارفقت صور عند ادخال البيانات وصور الملف اللي تم انشائه والبيانات داخله .

شكرا لكم اخواني حريف و خالد يعطيكم العافية.

post-151163-074320800 1332502451_thumb.p

post-151163-042156900 1332502465_thumb.p

المرفقات
1.png2.png
#18
SEMMOOR كتب:

السلام عليكم ياشباب .

الحمدلله عدلت الكود اما الان خلاص البرنامج كامل ويعمل بالشكل الصحيح وارفقت صور عند ادخال البيانات وصور الملف اللي تم انشائه والبيانات داخله .

شكرا لكم اخواني حريف و خالد يعطيكم العافية.

post-151163-071704600 1332504550_thumb.p

المرفقات
_333.png
1

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