تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عرض جميع منافذ الـ usb
#21
حلو

الطريقة بسيطة وابسط مما تتخيل

الكود المستعمل في البرنامج السابق (طبعا محول للفيجوال على حسب طلبك)

ملاحظة : الbutton1 هو لتشغيل الD3
والbutton2 لإغلاقه

PHP كود :
Imports System.Runtime.InteropServices
Partial 
Public Class Form1
    Inherits Form

    
<DllImport("inpout32.dll"EntryPoint:="Out32")> _
    
Public Shared Sub Output(ByVal address As IntegerByVal value As Integer)
    
End Sub


    
Private address As Integer 888
    
Private outData As Integer 0
    
Private IsD3Open As Boolean False

    
Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgsHandles Me.Load
        Output
(address0)
        
IsD3Open False
    End Sub


    
Private Sub Button1_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        
If IsD3Open FalseThen
            outData 
+= 8
            IsD3Open 
True
            Output
(addressoutData)
        
End If
    
End Sub

    
Private Sub Button2_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button2.Click
        
If IsD3Open True Then
            outData 
-= 8
Output
(addressoutData)
            
IsD3Open False
        End 
If
    
End Sub
End 
Class 

لو تسئلني لماذا وضعت 8 لانها تنحسب بهذي الطريقة

لدينا 8 مخارج
والبايت لديه 8 ارقام ايضا بين 0 و 1


كل خانة في البايت تعبر عن مخرج

مثلا لو كتبت 00000010 `ذلك يساوي 3 بالديسمال او outData = 3

هذا الامر يعني تشغيل المخرج D1 واغلاق البقية

لو امبي اشغل المخرج الاول والمخرج الاخير بيكون البايت جدي 10000001

ولو اردت تشغيل جميع المخارج يكون البايت 11111111

كما ترى العملية سهلة ولكن لايمككنا كتابة 11111111 وارسالها باستعمال دالة output فهي تتطلب قيمة من نوع decimal

لذلك علينا التحويل من النظام الثنائي الى العادي (ديسمال)

-
فالان 8 تساوي في الثنائي 00001000

اي تشغيل المخرج الرابع

D0,D1,D2,D3

كما ترى ترتيب المخرج هو الرابع

لذلك كتبت 8 ليتم تشغيله

ولاقوم بإطفائه قمت بسحب ال8 التي اضفتها عبر outData -= 8


--

الان لو اردت تشغيل D5 ماهو الرقم الذي يشير اليه ؟؟

احنا قلنا ان كل خانة في البايت تشير لمخرج لذلك البايت بكون جدي عشان نشغل D5
0 0 0 0 0 1 0 0
D7 D6 D5 D4 D3 D2 D1 DO

يعني 00100000
وبالتحويل للنظام العادي يصبح 32

اي لتشغيل D5 تكتب

outData += 32

ولاطفائه نقوم بسحب ال 32

outData -= 32



--


وال address هو عنوان بورت الparallel
افتراضيا هو يكون 888 اي 378 hex

ولكن اذا كان عندك بورتين راح يكون هناك عنوان مختلف لكل منهما _ يمكنك معرفة العنوان من الdevice manger

اتمنى توصل الفكرة واستفدت مني

وانا حاضر لأي استفسار


تحياتي
الرد }}}
تم الشكر بواسطة:
#22
الشاكي لله كتب :حلو

الطريقة بسيطة وابسط مما تتخيل

الكود المستعمل في البرنامج السابق (طبعا محول للفيجوال على حسب طلبك)

ملاحظة : الbutton1 هو لتشغيل الD3
والbutton2 لإغلاقه

PHP كود :
Imports System.Runtime.InteropServices
Partial 
Public Class Form1
    Inherits Form

    
<DllImport("inpout32.dll"EntryPoint:="Out32")> _
    
Public Shared Sub Output(ByVal address As IntegerByVal value As Integer)
    
End Sub


    
Private address As Integer 888
    
Private outData As Integer 0
    
Private IsD3Open As Boolean False

    
Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgsHandles Me.Load
        Output
(address0)
        
IsD3Open False
    End Sub


    
Private Sub Button1_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button1.Click
        
If Button1.Tag IsD3Open Then
            outData 
+= 8
            IsD3Open 
True
            Output
(addressoutData)
        
End If
    
End Sub

    
Private Sub Button2_Click_1(ByVal sender As System.ObjectByVal e As System.EventArgsHandles Button2.Click
        
If IsD3Open True Then
            outData 
-= 8
            IsD3Open 
False
        End 
If
    
End Sub
End 
Class 

لو تسئلني لماذا وضعت 8 لانها تنحسب بهذي الطريقة

لدينا 8 مخارج
والبايت لديه 8 ارقام ايضا بين 0 و 1


كل خانة في البايت تعبر عن مخرج

مثلا لو كتبت 00000010 `ذلك يساوي 3 بالديسمال او outData = 3

هذا الامر يعني تشغيل المخرج D1 واغلاق البقية

لو امبي اشغل المخرج الاول والمخرج الاخير بيكون البايت جدي 10000001

ولو اردت تشغيل جميع المخارج يكون البايت 11111111

كما ترى العملية سهلة ولكن لايمككنا كتابة 11111111 وارسالها باستعمال دالة output فهي تتطلب قيمة من نوع decimal

لذلك علينا التحويل من النظام الثنائي الى العادي (ديسمال)

-
فالان 8 تساوي في الثنائي 00001000

اي تشغيل المخرج الرابع

D0,D1,D2,D3

كما ترى ترتيب المخرج هو الرابع

لذلك كتبت 8 ليتم تشغيله

ولاقوم بإطفائه قمت بسحب ال8 التي اضفتها عبر outData -= 8


--

الان لو اردت تشغيل D5 ماهو الرقم الذي يشير اليه ؟؟

احنا قلنا ان كل خانة في البايت تشير لمخرج لذلك البايت بكون جدي عشان نشغل D5
0 0 0 0 0 1 0 0
D7 D6 D5 D4 D3 D2 D1 DO

يعني 00100000
وبالتحويل للنظام العادي يصبح 32

اي لتشغيل D5 تكتب

outData += 32

ولاطفائه نقوم بسحب ال 32

outData -= 32



--


وال address هو عنوان بورت الparallel
افتراضيا هو يكون 888 اي 378 hex

ولكن اذا كان عندك بورتين راح يكون هناك عنوان مختلف لكل منهما _ يمكنك معرفة العنوان من الdevice manger

اتمنى توصل الفكرة واستفدت مني

وانا حاضر لأي استفسار


تحياتي

ربنا يعطيك الف عافيه يارب و يرزقك الفردوس إن شاء الله

انا عارف اني تقلت عليك معلش Sad

بس للاسف لما جيت اجرب البرنامج الى انا عملته ظهرلي إنه ملف الـ inpout32.dll غير موجود !!

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


البرنامج مرفق بارك الله فيك

انا عارف و الله اني تعبتك معايا Sad
الرد }}}
تم الشكر بواسطة:
#23
غريب !!!

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

لم اعمل اي اعدادات خاصة او ماشابه

الكود كتبته بالسي شارب ونقلته للفيجوال وجربته

طلع شغال يعني مو من الكود

-

ممكن تعطيني صورة للخطأ
الرد }}}
تم الشكر بواسطة:
#24
تفضل عزيزي ارفقت لك صوره من الخطأ و كذلك ملفات المشروع

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


الملفات المرفقة صورة/صور
   

.zip   control.zip (الحجم : 59.04 ك ب / التحميلات : 29)
الرد }}}
تم الشكر بواسطة:
#25
لاتوجد مشكلة عندي .!!

جرب تسوي استخراج مرة ثانية للملف الي ارسلته لك في السيستم وتستخرجه ايضا في مجلد debug للبرنامج

انتبه اخوي هناك خطأ

Button1.Tag = IsD3Open

المفروض تصير
IsD3Open = false

اعتذر عن ذلك
الرد }}}
تم الشكر بواسطة:
#26
بالفعل قمت بوضع ملف الـ dll بجوار البرنامج و اشتغل الحمد لله

ولكن حبيت اني اطوره اكثر واكثر حتى اطور من نفسي

وقمت بتوصيل عدد 2 ليدز

الاولى فى D3 والثانية فى D5

وعند ضغط الازرار قمت بإعطاء الـ d3 = 8
والـ D5 = 32


و لكن عند الغط على زر غلق الـ D3 وجدته يغلق كل الليدز
يعني اريد كل زر يكون مفصول عن البقيه ؟


انا تطبيقي كان هو المرفق هذا

ياريت لو تنصحني ماذا افعل حتى اتفادى تلك المشكلة

لاني اريد تشغيل و غلق كل ليدز على حدى


والله انا اصبحت محرج كتييير منك لاني تعبتك معي Sad

بجد بجد انا اسف و الله Sad

وشكرا لك


الملفات المرفقة
.zip   control.zip (الحجم : 60.67 ك ب / التحميلات : 31)
الرد }}}
تم الشكر بواسطة:
#27
اخي الخطأ بسيط

انت في زر اغلاق d3 قمت بوضع
PHP كود :
Output(address0
نفس الشي في زر اغلاق d5


ياخي هذا الكود يعني اطفاء جميع الoutput لأن 0
تساوي بالثنائي
00000000

يجب ان تستبدله ب
PHP كود :
Output(addressoutData
الرد }}}
تم الشكر بواسطة:
#28
الشاكي لله كتب :اخي الخطأ بسيط

انت في زر اغلاق d3 قمت بوضع
PHP كود :
Output(address0
نفس الشي في زر اغلاق d5


ياخي هذا الكود يعني اطفاء جميع الoutput لأن 0
تساوي بالثنائي
00000000

يجب ان تستبدله ب
PHP كود :
Output(addressoutData

بالفعل كلامك صحيح و تمت تجربته و نجح

ولكن قمت بعمل زر لغلق كل الـ ليدز

ووضعت فيه القيمه 0 وفعلاً اغلق الكل ولكن عند محاوله فتح اي ليدز اجده ( ملغبط )

بمعنى لو ضغط على زرف فتح ليدز رقم 1 يشغل ليز رقم 2
ولو ضغط على ليدز رقم 3 يشغل ليدز رقم 1

هذا بعد الغضط على زر الإغلاق لكل الليدز

؟
الرد }}}
تم الشكر بواسطة:
#29
جزاك الله خيرا اخي الفاضل على المساعده بااااااارك الله فيك

و الله العظيم يعجز لساني عن شكرك بارك الله فيك

تم حل كل المشاكل التي واجهتني و الفضل لله ثم أنت

شكراااا لك
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تعديل طول حقل معين في جميع جداول القاعدة atefkhalf2004 1 108 09-03-24, 03:17 AM
آخر رد: atefkhalf2004
  تحميل جميع الماسحات الضوئية المتصلة بالجهاز في كومبوبوكس جيولوجي مبتدئ 2 205 22-02-24, 07:10 PM
آخر رد: جيولوجي مبتدئ
  [VB.NET] احتاج كود يغلق جميع الفورم ويبقي فقط الفورم Home Ali_hassn 4 549 15-08-23, 06:43 PM
آخر رد: Alexander Max2
  سؤال حول اغلاق جميع النوافذالمفتوحة maherhaddaf 3 460 20-07-23, 08:48 AM
آخر رد: maherhaddaf
  أريد كود لغلق جميع النوافذ عند تسجيل الخروج Emam emam 2 509 10-07-23, 02:12 AM
آخر رد: Emam emam
Exclamation [سؤال] كيف اشغل برنامجي على جميع الفريموروك mudz 41 47,840 20-12-22, 01:20 AM
آخر رد: kebboud
  [VB.NET] هل يوجد طريقة لجعل البرنامج يظهر فوق جميع البرامج mohamedahmed1 3 790 31-10-22, 01:26 AM
آخر رد: mohamedahmed1
  مسح جميع أدوات النص دفعة واحدة sads 8 3,670 29-10-22, 04:04 PM
آخر رد: خالد العصاوي
  نقل جميع الاصناف الى جميع البوتن حماده ممدوح البحيرى 2 636 06-07-22, 06:34 AM
آخر رد: حماده ممدوح البحيرى
  اضافة التاريخ الى جميع السجلات aftfm 6 1,897 30-08-21, 11:11 PM
آخر رد: aftfm

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم