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

عملت joystick و برمجتها لكن..

مغلق
بدأه semsem0737 في 28 يونيو 2005 · 16 رد · 1,232 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا و الحمد لله استطعت عمل joystick و وصلتها بالكمبيوتر بواسطة فكرة بسيطة و هي عمل برنامج بالـ VB يشعر بالتوصيل الداخل الي منفذ الطابعة ((Input) يعني )

وبعدين جهزت البرنامج بحيث اذا المخرج (كذا) تم توصيله : >> ابعت اللي البرنامج (F16) مثلا

كده يعني

sendkeys_

("{UP}")

باستخدام خاصية sendkeys يعني .. اقدر اتحكم في البرنامج ( او اللعبه) بالـ joystick

------------------------------------------------------------

لكن ....

واجهتني مشكلتين

1- اني مش اقدر استخدم غير 5 منافذ بس للـ input ( زي ما انا مش عارف استخدم غير 8 في الـ output ) يعني في الـ joystick .. اخر حاجة اقدر عليها الاسهم الاربعة و كمان زر و خلاص.

2- لما اجي اعمل sendkeys يبعت البرنامج الي اللعبة مرة واحدة .. حاولت اعمل timer لكن برضو لما اللعبة تشتغل اجي مثلا انزل الطيارة (F16) تنزل لكن ببطء شديد .. لان البرنامج بيبعت ازرار لكن كأني في اللعبة بأضغط و اترك الزر ثم اضغط عليه و اتركه و هكذا ... لكن في اللعبه المفروض افضل ضاغط علي الزر علشان الطيارة تميل او تقلع (مثلا)

فـــ هل يوجد طريقة لـ sendkeys تجعل البرنامج و كاني ضاغط علي الزر مدة .

و شكرا لكم

سبحان الله و بحمده ... سبحان الله العظيم

#2

السلام عليكم

ايه يا جماعة؟

مفيش حل لاي مشكلة فيهم ولا اية؟

ارجو .. ولو ملحوظة ؟

و شكرا

سبحان الله و بحمده ... سبحان الله العظيم

#3

والله الموضوع ده محيرني أكثر من سنة لكن وجدت أن بعض المبرمجين يستخدمون IC لتزويد عدد المنافذ لكن لا أعرف أي شئ عن إستخدام الـ IC وعموما إبحث وياريت ماتنساني

#4

أما السؤال الثاني لن تستخدم تايمر ولا حاجة

فقط إستخدم الدالة

keybd_event

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

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

ولو تريد مثال عليها

أنا حاضر

على فكرة هذه الدالة API

#5

لما لا directinput

#6

السلام عليكم

و ما هو الـ directinput ؟

-------------------------

اخي بلال

شكرا لك و يا ريتك تضع المثال اللي يوضح الـ keybd_event

اما بالنسبة لحكاية ان عدد الـ input اللي نقدر عليه .. فأنا اكتشفت طريقة يمكن بها نزود عدد الـ input اكثر من 5 :

حتي الان الاحتمالات الخمسة اللي نقدر عليها هي : 00001 و 00010 و 00100 و 01000 و 10000

ايه رايك بقي في الاحتمالات دي : 00001 و 00010 و 00011 و 00100 و 00101 و 00111 و ............الي 11111

و الطريقة بسيطة .. و هي ان بدلا من وضع (الارضي مع احد الخمس مداخل) في زر او مفتاح واحد .. نضع (مدخلين من الخمسة مع الارضي) في مفتاح واحد بحيث يوصل الثلاثة مرة واحدة او يفصلهم مرة واحدة

و هكذا يمكن وضع ثلاث مداخل مع الارضي في مفتاح واحد .. مع تغيير الاماكن لزياده عدد الاحتمالات

و بعد كده في البرنامج بتاعك تكون مجهز checkbox (مثلا) لكل مدخل من الخمسة الاساسيين بحيث لما يحصل الاحتمال 00011 مثلا يكون checkbox1.value=true و checkbox2.value=true

و بعدين :

If checkbox1.value=true And checkbox2.value=true then

then

( اعمل اللي انت عايزة )

---------------------------

و الصورة المرفقة توضح اكثر

وبكده يكون عدد الاحتمالات عندنا = 2^5 = (32) .. بدلا من (5)

جرب الموضوع .. وقوللي

---------------------------

ما تنساش تحط لنا مثال الـ keybd_event

سلام

post-35619-1120579193.jpg

سبحان الله و بحمده ... سبحان الله العظيم

#7

ايه يا جماعة ؟

هل من مجيب ؟ :unsure:

سبحان الله و بحمده ... سبحان الله العظيم

#9

هذا الحل فكرت فيه من قبل ولكن هناك مشكلة

إذا تم ضغط زرين مشتركين في أحد الأسلاك في وقت واحد

الأول سيوصل

1و2 بـ الأرضي

الثاني سيوصل

2و3 بـ الأرضي

هنا

تم توصيل الـ 1و3 بالأرضي وهذا يعني أنه قد تم ضغظ زر ثالث بدون أن تضغط عليه

عموما خلينا في keybd_event

وضعت مثال على حرف الـ O والمثال مرفق

وإليك إعلان الأزرار الأخرى

Private Const VK_0 = &H30
Private Const VK_1 = &H31
Private Const VK_2 = &H32
Private Const VK_3 = &H33
Private Const VK_4 = &H34
Private Const VK_5 = &H35
Private Const VK_6 = &H36
Private Const VK_7 = &H37
Private Const VK_8 = &H38
Private Const VK_9 = &H39
Private Const VK_A = &H41
Private Const VK_B = &H42
Private Const VK_C = &H43
Private Const VK_D = &H44
Private Const VK_E = &H45
Private Const VK_F = &H46
Private Const VK_G = &H47
Private Const VK_H = &H48
Private Const VK_I = &H49
Private Const VK_J = &H4A
Private Const VK_K = &H4B
Private Const VK_L = &H4C
Private Const VK_M = &H4D
Private Const VK_N = &H4E
Private Const VK_O = &H4F
Private Const VK_P = &H50
Private Const VK_Q = &H51
Private Const VK_R = &H52
Private Const VK_S = &H53
Private Const VK_T = &H54
Private Const VK_U = &H55
Private Const VK_V = &H56
Private Const VK_W = &H57
Private Const VK_X = &H58
Private Const VK_Y = &H59
Private Const VK_Z = &H5A
Private Const VK_ADD = &H6B
Private Const VK_ATTN = &HF6
Private Const VK_BACK = &H8
Private Const VK_CANCEL = &H3
Private Const VK_CAPITAL = &H14
Private Const VK_CLEAR = &HC
Private Const VK_CONTROL = &H11
Private Const VK_CRSEL = &HF7
Private Const VK_DECIMAL = &H6E
Private Const VK_DELETE = &H2E
Private Const VK_DIVIDE = &H6F
Private Const VK_DOWN = &H28
Private Const VK_END = &H23
Private Const VK_EREOF = &HF9
Private Const VK_ESCAPE = &H1B
Private Const VK_EXECUTE = &H2B
Private Const VK_EXSEL = &HF8
Private Const VK_F1 = &H70
Private Const VK_F10 = &H79
Private Const VK_F11 = &H7A
Private Const VK_F12 = &H7B
Private Const VK_F13 = &H7C
Private Const VK_F14 = &H7D
Private Const VK_F15 = &H7E
Private Const VK_F16 = &H7F
Private Const VK_F17 = &H80
Private Const VK_F18 = &H81
Private Const VK_F19 = &H82
Private Const VK_F2 = &H71
Private Const VK_F20 = &H83
Private Const VK_F21 = &H84
Private Const VK_F22 = &H85
Private Const VK_F23 = &H86
Private Const VK_F24 = &H87
Private Const VK_F3 = &H72
Private Const VK_F4 = &H73
Private Const VK_F5 = &H74
Private Const VK_F6 = &H75
Private Const VK_F7 = &H76
Private Const VK_F8 = &H77
Private Const VK_F9 = &H78
Private Const VK_HELP = &H2F
Private Const VK_HOME = &H24
Private Const VK_INSERT = &H2D
Private Const VK_LBUTTON = &H1
Private Const VK_LCONTROL = &HA2
Private Const VK_LEFT = &H25
Private Const VK_LMENU = &HA4
Private Const VK_LSHIFT = &HA0
Private Const VK_MBUTTON = &H4
Private Const VK_MENU = &H12
Private Const VK_MULTIPLY = &H6A
Private Const VK_NEXT = &H22
Private Const VK_NONAME = &HFC
Private Const VK_NUMLOCK = &H90
Private Const VK_NUMPAD0 = &H60
Private Const VK_NUMPAD1 = &H61
Private Const VK_NUMPAD2 = &H62
Private Const VK_NUMPAD3 = &H63
Private Const VK_NUMPAD4 = &H64
Private Const VK_NUMPAD5 = &H65
Private Const VK_NUMPAD6 = &H66
Private Const VK_NUMPAD7 = &H67
Private Const VK_NUMPAD8 = &H68
Private Const VK_NUMPAD9 = &H69
Private Const VK_OEM_CLEAR = &HFE
Private Const VK_PA1 = &HFD
Private Const VK_PAUSE = &H13
Private Const VK_PLAY = &HFA
Private Const VK_PRINT = &H2A
Private Const VK_PRIOR = &H21
Private Const VK_PROCESSKEY = &HE5
Private Const VK_RBUTTON = &H2
Private Const VK_RCONTROL = &HA3
Private Const VK_RETURN = &HD
Private Const VK_RIGHT = &H27
Private Const VK_RMENU = &HA5
Private Const VK_RSHIFT = &HA1
Private Const VK_SCROLL = &H91
Private Const VK_SELECT = &H29
Private Const VK_SEPARATOR = &H6C
Private Const VK_SHIFT = &H10
Private Const VK_SNAPSHOT = &H2C
Private Const VK_SPACE = &H20
Private Const VK_SUBTRACT = &H6D
Private Const VK_TAB = &H9
Private Const VK_UP = &H26

وياريت أخي semsem0737 تعطيني ملف inpout32.dll لأنه ليس عندي لأني كنت نسيت الموضوع ده بالمرة

سلااااااااااااااااااااااااام

وإليك المرفق

Key_Up_Down.zip

#10

شكرا لك اخي بلال

لكن الملف المرفق مش بينزل .. مش عارف اذا كانت المشكلة في الملف او في صفحة المنتدي :unsure:

ياريت لو مش نفع يترفع للمنتدي .. تبعته لي علي ايميلي semsem0737@yahoo.com و اكون شاكر جدا :rolleyes:

اما بالنسبة لحكاية الـ input فمش لازم يعني تدوس علي زرارين مرة واحده B) .. يإما مش تعمل الاحتمال الثالث اللي هو زي (1 و 3) مثلا ............... -( مجرد اقتراح :lol: )-

ان شاء الله هأبحث في موضوع اضافة الـ IC Decoder ده و هأقولك لو لقيت حاجة مفيدة .. و انت كمان اوعي تنسانا B) ...

ملف الـ DLL مرفق .... و اسف علي التاخير

مش تنسي مثالك الجميل .....

INPOUT32.rar

سبحان الله و بحمده ... سبحان الله العظيم

#11

آسف اخي الكريم لست مختص في الديركت اكس لكن

هناك موضوع طرح فيه الأخ الكريم امثلة من بنها مثال للتعامل مع الjoystik

هنا/index.php?showtopic=68100

#12

شكرا لك اخي الكريم :) .. لكني بحاجة الي الكود الشبيه بـ sendKeys و لكن باستمرار الضغط علي الزر .. لان الـ joystick اللي عملتها فكرتها بدائية (يعني) <_< ... و مش عرفت اشتغل بيها بالرابط اللي تحت

فينك اخ بلال ؟؟؟ :unsure:

سبحان الله و بحمده ... سبحان الله العظيم

#16

شكرا لك ..

اشتغلت تمام (h)

الف شكر :rolleyes:

سبحان الله و بحمده ... سبحان الله العظيم

هذا الموضوع مغلق.

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