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

كود لميزان ديجيتال عبر سيريال بورت

بدأه whassan في 14 أغسطس 2008 · 16 رد · 6,464 مشاهدة · في التحكم الصناعي وربط الحاسب بالعالم الخارجي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إلى الاخوة الكرام

عندي ميزان ديجتال لوزن الشاحنات وأريد أن اشغله عبر الكومبيوتر عن طريق المنفذ سيريال بورت ولقد صممت البرنامج بالفيجوال بيسيك 6

وفتحت البورت بواسطة MScomm1 ولقد بدأ يعطيني أحرف غير مفهومة على Textbox مع أني جربته بواسطة Hyper terminal ,اعطى نفس الرقم على شاشة الميزان . ممكن ان تكون المشكلة في التحويا من Binary إلى Hex

فأرجو من لديهم الخبرة في هذا المجال أن لا يبخلوا علي بالاجابة وان يساعدوني لايجاد الحل

وشكراّ

#2

انت تقول ان المشكلة قد تكون في التحويل

اذن جرب ذلك

جرب ان تحول القيمة الواصلة :

- من بايناري الى ASCII

- من هكس الى ASCII

- من ديسيمال الى ASCII

اذا كانت القيمة الواصلة صحيحة فيجب ان تؤدي اي من تلك المحاولات

الثلاث الى عرض النتيجة بشكل صحيح

#3

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

تم تعديل هذه المشاركة بواسطة fadi-k في 15 أغسطس 2008 في 00:59

#4

لقد جربت الثلاث محاولات ولكن لم تفلح

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

وشكرا

#5

ارسل رقم ومو ديل الجهاز الذي لديك من اجل ان تكون المعلومة دقيقة

#6

مكتوب الماركة Leon Engineering

DEL TA5 LED AL D10000

S/N: 10042371

وشكرا على تجاوبك أخ فادي

#7

اخي الكريم

ان البيانات التي تصلك الى MScomm1 هي بيانات hex وما عليك الا ان تحولها الى اسكي واعتقد انه هناك دالة في الفيجول لنفس الغرض الامر الثاني

وقبل ان تحول اي شي فان الذاكرة التي تستقبل اليبانات input في MScomm1 لا تستقبلها على شكل بايت واحد ولكن مجموعة في هذه الذاكرة وانت تستطيع تحديد كمية هذه البيانات عن طريق InputLen ويفضل ان تكون مرتفة اي 512 مثلا لذلك عليك ان تقسم ذاكرة Input الى مجموعة بايتات ثم تحولها الى كود اسكي

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

وعليك ان تواكب هذه الارسال عن طريق مؤقت في برنامجك للكشف على البورت كل فترة معينة مع ابقاء البورت مفتوح طالما البرنامج يعمل واخذ العينات من ذاكرة input وتحديث Textbox لديك

واذا كان عندك اي مشكلة او لم يعمل فافعل الاتي

inputlen اجعله واحد ثم ارسله الى textbox هذا اول رمز من الارسال وانظر كم الرقم وقارن الرقم لديك مع جدول الاسكي كود لتتبين المشكلة ولكن هذه الطريقة عليك ان تستخدم المقاطعة ولمرة واحدة فقط

وهذا جول لاسكي كود

http://www.asciitable.com

تم تعديل هذه المشاركة بواسطة fadi-k في 19 أغسطس 2008 في 02:23

#8

أخي فادي حتى ولو كان هناك غلبة عليك

أرجو منك ان تعطيني الكود الذي يحول من Hex إلى ASCII في الفيجوال بيسيك مع الطريقة

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

ولك جزيل الشكر في هذا الشهر الفضيل

#9

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

_________.rar

تم تعديل هذه المشاركة بواسطة fadi-k في 20 أغسطس 2008 في 04:43

#10

أخي فادي شكرا على المثال

ولكن هذا المثال هو عن كيفية نقل البيانات من MSCOMM1 إلى textbox

وانا أريد كود تحويل هذه البيانات من Hex إلى ACSII إن كان باستطاعتك أرساله لي

لان المشكلة كما قلت في البداية أن البيانات تظهر عندي غير مفهومة

وشكرأ مع جزيل الشكر

ولك الاجر والثواب

#11

أين أهل الخبرة

على كل حال مشكورين ومأجورين بإذن الله

#12

أخي الحبيب

اعمل في شركة شحن وتفريغ ولدينا ميزان للسيارات النقل ماركة METTLER TOLEDO

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

فإن أردت المساعدة فأرسل لي كود ربط الفجوال بيسيك بالسيريال بورت (لأنني لا أعرفه) وسأقوم بتجربة لبعض الأكواد عندي إلى أن اصل إلى طلبك سريعاً

#13

أخي الكريم حسام الدين

إن الكود موجود في المثال الذي أرسله الاخ فادي يمكنك أن تنزله

وتحصل على الكود

وشكراً لتجاوبك

#14

إخواني الاعزاء

أينكم وين اهل الخبرة التي عودتمونا على حل اي مشكلة صغيرة كانت ام كبيرة

شكرا

#15

السلام عليكم اخي الكريم لقد كتبت الكود ولكن ينتظر التجربة وإن شاء الله قريبا سوف ارفعه على الموقع

#16

السلام عليكم اخي الكريم ما عليك فعله هو كالتالي

Dim inputcomm1 As String

Dim dynamic() As Byte

Dim textout As String

Dim coun As Integer

inputcomm1 = MSComm1.Input

dynamic() = inputcomm1

For coun = 0 To (LenB(inputcomm1) - 1)

textout = textout + Chr(dynamic(coun))

coun = coun + 1

Next coun

Text1.Text = textout

تم تعديل هذه المشاركة بواسطة fadi-k في 7 سبتمبر 2008 في 06:45

#17

مشكورررررررررررررررررررر ررررررررررر لكم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…