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

parallel ports

مغلق
بدأه white soul في 21 يونيو 2007 · 5 رد · 936 مشاهدة · في لغة C و ++C
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فقط اريد التاكد

#include <conio.h>
#include<math.h>

// for sending data :
_outp(port_address, Byte)

// for reading :
Byte=_inp(port_address);

هل هذا الكود صحيح؟ اي اقصد هل هذه هي الاوامر الخاصة بالقراءة و الكتاية على البورت ؟

هل استطيع تنفيذها في بيئة ال C++ Builder

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

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

#2

مكرر!!! :wacko:

في أي نظام ستستخدم الكود؟

NT Family لا يمكن مباشرة ...

ابحث في هذا القسم وستجد شرحاً مفصلاً عن هذا الشئ ...

/index.php?showtopic=62060

/index.php?showtopic=36881

/index.php?showtopic=36111

/index.php?showtopic=47025

لاتنسى أن هناك google أيضاً

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#3

اول شي انا دورت بالمنتدى و قرات كل شي

2- انا عملت بحث ب google والا ما كان كتبت اللي فوق ( هادا اللي لقيته) :s

بس لانه الموضوع جديد علي مشان هيك ما بلقط الواحد على طول <_<

http://www.arunet.co.uk/tkboyd/ele1pp2.htm

http://www.codeproject.com/csharp/csppleds.asp

http://www.codeproject.com/system/AsefPortAccess.asp

اقتباس
في أي نظام ستستخدم الكود؟

NT Family

؟؟؟؟؟؟

كيف بحدد :blink:

تم تعديل هذه المشاركة بواسطة white soul في 21 يونيو 2007 في 13:48

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

#4

أظن أن ما ذكر في الوصلات التي وضعتها في ردي السابق واضح ..

كما أن ما كتب في الموضوعين في codeproject واضح أيضاً..

عليك فقط معاودة قراءة تلك المواضيع أكثر من مرة

في الموضوع

I/O Ports Uncensored - 1 - Controlling LEDs (Light Emiting Diodes) with Parallel Port

لاحظ أنه يستدعي مكتبة خارجية تم ذكرها في أحد المواضيع في هذا القسم وهي inpout32.dll

	[DllImport("inpout32.dll", EntryPoint="Out32")]
	public static extern void Output(int adress, int value);

أعد قراءة هذا الجزء

اقتباس
Before coding I want to give some info about reaching the ports by using a language and OS. When I was using Windows 98 I could reach the ports with a function which is "outportb". When I upgraded to Windows 2000 this failed because of its kernel. You can not reach the ports directly in NT, 2000 and XP because of their kernel and their printer drivers. Let me prove this: First make the circuit as in the pic and then shutdown your computer, start it, if you have multi boot menu select Windows 98, when it starts there is no light up in the circuit but in Win2000 and XP all the 8 lights are on so we know that the signal is coming and the pins are registered by their kernel with the printerdriver.

وقوله أنه يمكن إستخدام TurboC++

اقتباس
You can also reach your ports with Turbo C++ like:

فهو يعني نظام DOS أو Win9x ففي الأنظمة من عائلة NT لا يمكن الوصول بتلك الطريقة مباشرة ..

لاحظ ما ذكر في الموضوع الآخر Port Access

اقتباس
In XP we have no permission to access external port like Printer. Here we copy a sys file to system32 and use it in the code so we can send and receive data through this port.

Using the code

For using the code you have to copy PortAccess.sys ( exists in source ) to system32\drivers. Then you can run the program.

أغلب تلك النقاط مذكورة في مواضيع هذا القسم

حظ موفق . وما عليك إلا الصبر ومعاودة قراءة المواضيع :)

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#5

صحيح

بس لاني كنت مركزة على طريقة كتابة الكود Synatx

على كل حال شكرا

وصلت المعلومة :)

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

#6
/**************************************************/
/***											***/
/*** TEST.c  -- test interface to inpout32.dll  ***/
/***  ( http://www.logix4u.net/inpout32.htm )   ***/
/***											***/
/*** Copyright (C) 2003, Douglas Beattie Jr.	***/
/***											***/
/***	<beattidp@ieee.org>					 ***/
/***	http://www.hytherion.com/beattidp/	  ***/
/***											***/
/**************************************************/


/*******************************************************/
/*													 */
/*  Builds with Borland's Command-line C Compiler	  */
/*	(free for public download from Borland.com, at   */
/*  http://www.borland.com/bcppbuilder/freecompiler )  */
/*													 */
/*   Compile with:									 */
/*													 */
/*   BCC32 -IC:\BORLAND\BCC55\INCLUDE  TEST.C		  */
/*													 */
/*													 */
/*  Be sure to change the Port addresses			   */
/*  accordingly if your LPT port is addressed		  */
/*  elsewhere.										 */
/*													 */
/*******************************************************/




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


/* Definitions in the build of inpout32.dll are:			*/
/*   short _stdcall Inp32(short PortAddress);			   */
/*   void _stdcall Out32(short PortAddress, short data);	*/


/* prototype (function typedef) for DLL function Inp32: */

	 typedef short _stdcall (*inpfuncPtr)(short portaddr);
	 typedef void _stdcall (*oupfuncPtr)(short portaddr, short datum);

int main(void)
{	 
	 HINSTANCE hLib;
	 inpfuncPtr inp32;
	 oupfuncPtr oup32;

	 short x;
	 int i;

	 /* Load the library */
	 hLib = LoadLibrary("inpout32.dll");

	 if (hLib == NULL) {
		  printf("LoadLibrary Failed.\n");
		  return -1;
	 }

	 /* get the address of the function */

  inp32 = (inpfuncPtr) GetProcAddress(hLib, "Inp32");

	 if (inp32 == NULL) {
		  printf("GetProcAddress for Inp32 Failed.\n");
		  return -1;
	 }


	 oup32 = (oupfuncPtr) GetProcAddress(hLib, "Out32");

	 if (oup32 == NULL) {
		  printf("GetProcAddress for Oup32 Failed.\n");
		  return -1;
	 }


/***************************************************************/
/* now test the functions */

	 /* Try to read 0x378..0x37F, LPT1:  */

	 for (i=0x378; (i<0x380); i++) {

		  x = (inp32)(i);

		  printf("port read (%04X)= %04X\n",i,x);
	 }



	 /*****  Write the data register */

	 i=0x378;
	 x=0x77;

	 (oup32)(i,x);

	 printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

	 /***** And read back to verify  */
	 x = (inp32)(i);
	 printf("port read (%04X)= %04X\n",i,x);



	 /*****  One more time, different value */

	 i=0x378;
	 x=0xAA;

	 (oup32)(i,x);

	 printf("port write to 0x%X, datum=0x%2X\n" ,i ,x);

	 /***** And read back to verify  */
	 x = (inp32)(i);
	 printf("port read (%04X)= %04X\n",i,x);


	FreeLibrary(hLib);
	 return 0;
}

عملت run لهذا البرنامج لل test

وطبعا قبل هيك نسخت الداله inpout.32 في c:windows/system32

بس اعطاني الناتج :

GetProcAddress for Inp32 Failed

شو السبب؟؟

Computer Engineer

2007

"اللهم يا مثبت القلوب ثبت قلبي على دينك "

ولدتك امك باكيا والناس حولك يضحكون سرورا

فافعل لنفسك ان تكون اذا بكوا في يوم موتك ضاحكا مسرورا

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

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