كتبت البرنامج التالى للتحكم فى منفذ الطابعة
#include <dos.h>
void main()
{
outportb(0x378,255);
}
فأعطانى الخطأ التالى
`outportb' undeclared (first use this function)
مع العلم إنى أضفت
input 32إلىsystem 32
فما المشكلة
كتبت البرنامج التالى للتحكم فى منفذ الطابعة
#include <dos.h>
void main()
{
outportb(0x378,255);
}
فأعطانى الخطأ التالى
`outportb' undeclared (first use this function)
مع العلم إنى أضفت
input 32إلىsystem 32
فما المشكلة
لأن هذا برنامج دوس وليس برنامج ويندوز ، الويندوز لم يعد يسمح بالوصول إلى المنافذ مباشرةً ، تحتاج إلى كتابة driver ، انظر إلى windows driver kit
نعم أخي time1 ولكنه يحتاج لنظام تشغيل دوس حتى يشغل هذا البرنامج ، أعني دوس حقيقي وليس الكونسول الخاص بالويندوز.
اقتباسنعم أخي time1 ولكنه يحتاج لنظام تشغيل دوس حتى يشغل هذا البرنامج ، أعني دوس حقيقي وليس الكونسول الخاص بالويندوز
نظام Dos و نظام التشغيل Windows بالاصدارات : Windows 3.1 وWindows 95 و Windows 98 تسمح بالوصول المباشر للمنافذ , اما مابعد هذه الاصدارات فلا تسمح بالوصول المباشر مثل NT, 2000 , xp او حتى نظام التشغيل Linux , فقط تسمح بالوصول بواسطة device drivers.
تم تعديل هذه المشاركة بواسطة time1 في 23 سبتمبر 2008 في 07:19

اشهد ان لا إله إلا الله وان محمدا ً رسول الله
أقترح أن تشغل الدوس أو أي من الأنظمة التي ذكرها الإخوة إن كنت مازلت تملك نسخة من أيهم في Virtual PC ومن ثم ربط منفذ الطابعة الإفتراضي بمنفذ الطابعة الحقيقي ، وبالتالي يمكنك استعمال برامج الدوس مباشرةً مع منفذ ال LPT في جهازك بدون أن تعبث بنظام التشغيل الموجود حاليًا وبدون أن تدخل في متاهات كتابة ال drivers.
يمكنك تنزيله مجانًا من هنا :
http://www.microsoft.com/windows/downloads...pc/default.mspx
شكرا لكل الأخوة على الإهتمام
الأخ عمرو لا أعرف ما هى device driver
و ما هى طريقة كتابةdrive
شكرا على المساعدة
تم تعديل هذه المشاركة بواسطة mustafa gebril في 23 سبتمبر 2008 في 17:43
يمكن فتح منفذ الطابعه كأنه ملف أسمه :LPT1
أقراء فى الدالة CreateFile
نعم يمكن عن طريق NtCreateFile ان تقوم بفتح مقبض لـdevice لكن ستحتاج الى طرق اخرى للتعامل معه مثل ReadFile/WriteFile/DeviceIoControl .. هذا غير الطرق الأخرى المذكورة .
mov eax, dword ptr ds:[0xffdf0308]
jmp dword ptr [eax+0xfc]
ممكن أمثلة يا جماعة على الكلام ده
#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);
}
اشهد ان لا إله إلا الله وان محمدا ً رسول الله
شكرا لكل من ساهم فى حل المشكلة
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…