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

مشكلة فى برمجة منفذ الطابعة بالسى بلس بلس

بدأه mustafa gebril في 22 سبتمبر 2008 · 13 رد · 1,704 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كتبت البرنامج التالى للتحكم فى منفذ الطابعة 

#include <dos.h> 

void main()

{

outportb(0x378,255);

}

فأعطانى الخطأ التالى

 `outportb' undeclared (first use this function) 

مع العلم إنى أضفت

input 32إلىsystem 32

فما المشكلة

#2

جرب تطبيق البرنامج على مترجم Turbu c++3.0

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#3

لأن هذا برنامج دوس وليس برنامج ويندوز ، الويندوز لم يعد يسمح بالوصول إلى المنافذ مباشرةً ، تحتاج إلى كتابة driver ، انظر إلى windows driver kit

http://www.microsoft.com/whdc/devtools/wdk/default.mspx

#4
post-82612-1222138280_thumb.jpg
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#5

نعم أخي time1 ولكنه يحتاج لنظام تشغيل دوس حتى يشغل هذا البرنامج ، أعني دوس حقيقي وليس الكونسول الخاص بالويندوز.

#6
اقتباس
نعم أخي time1 ولكنه يحتاج لنظام تشغيل دوس حتى يشغل هذا البرنامج ، أعني دوس حقيقي وليس الكونسول الخاص بالويندوز

نظام Dos و نظام التشغيل Windows بالاصدارات : Windows 3.1 وWindows 95 و Windows 98 تسمح بالوصول المباشر للمنافذ , اما مابعد هذه الاصدارات فلا تسمح بالوصول المباشر مثل NT, 2000 , xp او حتى نظام التشغيل Linux , فقط تسمح بالوصول بواسطة device drivers.

تم تعديل هذه المشاركة بواسطة time1 في 23 سبتمبر 2008 في 07:19

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#7

بدايةً من Windows 2000 و ربما NT فما بعدها لم يصبح من الممكن الوصول المباشر الى الHW دون استخدام Driver. يمكنك استخدام DOS أو Windows 9x أو Windows ME

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#8

أقترح أن تشغل الدوس أو أي من الأنظمة التي ذكرها الإخوة إن كنت مازلت تملك نسخة من أيهم في Virtual PC ومن ثم ربط منفذ الطابعة الإفتراضي بمنفذ الطابعة الحقيقي ، وبالتالي يمكنك استعمال برامج الدوس مباشرةً مع منفذ ال LPT في جهازك بدون أن تعبث بنظام التشغيل الموجود حاليًا وبدون أن تدخل في متاهات كتابة ال drivers.

يمكنك تنزيله مجانًا من هنا :

http://www.microsoft.com/windows/downloads...pc/default.mspx

post-165587-1222146768_thumb.jpg

#9

شكرا لكل الأخوة على الإهتمام

الأخ عمرو لا أعرف ما هى device driver

و ما هى طريقة كتابةdrive

شكرا على المساعدة

تم تعديل هذه المشاركة بواسطة mustafa gebril في 23 سبتمبر 2008 في 17:43

#10

يمكن فتح منفذ الطابعه كأنه ملف أسمه :LPT1

أقراء فى الدالة CreateFile

#11

نعم يمكن عن طريق NtCreateFile ان تقوم بفتح مقبض لـdevice لكن ستحتاج الى طرق اخرى للتعامل معه مثل ReadFile/WriteFile/DeviceIoControl .. هذا غير الطرق الأخرى المذكورة .

mov eax, dword ptr ds:[0xffdf0308]

jmp dword ptr [eax+0xfc]

#12

ممكن أمثلة يا جماعة على الكلام ده

#13
#include <windows.h>
#include <stdio.h>
#include <conio.h>

main()
{
DCB dcb;
HANDLE hCom;
BOOL fSuccess;
char *Port = "LPT1";
DWORD bwrtn;

hCom = CreateFile( Port,
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened w/exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE) {
// Handle the error.
printf ("CreateFile failed with error %d.\n", GetLastError());
return (1);
} 
else {
printf(" %s opened",Port);
WriteFile(hCom,"hello world\f",12,&bwrtn,NULL); // **** Here it HANGS
printf("\nPort written to"); 
CloseHandle(hCom);
}
getch();

return (0);
}
llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#14

شكرا لكل من ساهم فى حل المشكلة

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

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

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

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

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