Home Parallel Port Serial Port USB Webboard API I/O Today Project Directory .NET VB VC++



 Hardware Interfacing in C# .NET framework programming.

Parallel Port Interfacing in C#.NET Programming

English Page Click Here

Introduce

เขียนโปรแกรมติดต่อ Parallel Port ด้วย C#.NET

อ่านก่อนนะจ๊ะ

ก่อนจะทำการเขียนโปแกรม เราอยากจะขอทำความเข้าใจอีกครั้งสำหรับเรื่องที่ไม่สามารถติดต่อ I/O Port ได้โดยตรง ใน OS NT, 2000 and XP เหมือนอย่างเช่นที่ทำใน Windows98 โดยใช้ฟังก์ชั่น "outportb" เพราะ เจ้า kernel และบรรดา printer drivers ไม่อนุญาต ถ้าคุณมี multi boot menu เลือก Windows 98, มันจะเริ่มไม่มีไฟออกที่วงจร ถ้าเราทำใน Win2000 และ XP หลอดไฟทั้ง 8 ดวงคือ on ดังนั้นเรารู้ว่าสัญญาณกลับมาแล้วหลังจากที่เรา Registry kernel ด้วย Printer Driver.

งการเขียนโปแกรมติดต่อพอร์ต

Download Source Code + inpout32.dll files

เราจะ inpout32.dll ในโปรแกรมนี้อีกแล้วครับ. คุณสามารถ download inpout32.dll ที่เราให้ไป หลังจากเอามันไปไว้ใน "Windows/System32 ".
บันทึก เราเอาไฟล์นี้มาจาก http://www.logix4u.net/ ถ้าหากต้องการอะไรที่ทันสมัยทันเหตุการณ์ก็ไปที่เวปเข้าได้นะ

สร้าง Public Class PortAccess จากการเรียก DLL
งเราจะสร้าง Form1.cs เราจะเขียนโค๊ดในหน้านี้ลงใน view code window โดยมีโค๊ดดังต่อไปนี้

using System;
using System.Runtime.InteropServices;

{
   public class PortAccess
  {
   เรียกฟังก์ชั่น Output จาก DLL file
     [DllImport("inpout32.dll", EntryPoint="Out32")]
     public static extern void Output(int adress, int value);
   เรียกฟังก์ชั่น Input จาก DLL file
     [DllImport("inpout32.dll", EntryPoint="Inp32")]
     public static extern void Input( int adress);
  }

..........................................
...............................

ถ้ามี inpout32.dll อยู่แล้วให้เอามันไว้ใน debug หรือ release directory ของโปรเจ็ค คุณด้วยนะ
เอ้าอย่างนี้,เรื่องหลักๆใน Form1.cs ของเราคือ PortAccess.Output.
เราจะต้องใส่ค่าในสองตัวแปรนั้น ด้วย address ของ Printer Port และค่า ที่จะให้ แต่ละบิตทำงาน ถ้าคุณมีค่า data ports คือ "0x378" คุณจะต้องมีการเขียนAddress Port เป็น "888" เพราะ "378" คือเลขฐาน16 คือมันจะมีค่าเท่ากับ "888" ในเลขฐานสิบ ง่ะ. (ค่าปกติของ LPT1 คือ "378") ถ้าคุณใช้ LPT2 ซึ่งคือ "0x278" คุณจะต้องมีการเขียนAddress Port เป็น "632" สำหรับตัวอย่างการเรียกใช้งานลองดูโค๊ดต่อไปนี้ครับ

PortAccess.Output(888, 255);

ถ้าต้องการส่งค่าให้ทุก Pin ใน Port นั้นเป็น "0" มีวิธีเขียนดังนี้

PortAccess.Output(888, 0);

ผมเขียนฟังก์ชั้น Reset LED ซึ่งเอาไปต่อกับ Printer Port แล้วนั้น ดังนี้ครับ

private void Reset_LEDs()
{ PortAccess.Output(adress, 0); }

เพื่อความเร็วในการนำเสนอและเอาแต่แก่นสารสำคัญของการเขียนโปแกรม C# ติดต่อ Printer Port มาอธิบาย ที่ไม่ลงรูปภาพว่าทำ GUI อย่างไร คงไปศึกษาดูได้ใน Source code นะ เพราะกล่าวมาหลายบทความแล้วง่ะ หรือพวกเงื่อนไขอื่นๆที่จะให้มันทำงาน อันนั้น ก็ไปประยุกต์ใช้เองนะ

ระบบที่รองรับ
  • Microsoft Visual Studio.NET Professional หรือดีกว่า.
  • Windows 2000 or Windows XP.
  • Modem โมเด็ม ติดตั้งที่เครื่องหรือยัง หรือต่อกับ Comm Ports หรือยัง.
การรัน โปรเจ็ค
สำหรับการจะรันโปรเจ็คนี้
  • Unzip ซอส์ทโค๊ด ใน ไดเร็คทรอรี่ของคุณที่เลือกไว้.
  • เปิดไฟล์ ParallelPortInterfacing.sln .
  • กดปุ่ม Run โปรแกรม แล้วจากนั้นก็ลองกด ปุ่มต่างๆใน Form นั้น เพื่อทดสอบฟังส์ชั่น ต่างๆที่ได้กล่าวไปแล้ว
  • ลองพิจรณา Code ใน Project นี้ เพื่อทำความเข้าใจ ว่าแต่ละ คำสั่งทำงานอย่างไร.


Copyright (c) 2000 thaiio.com all rights reserved.  Contact webmaster :webmaster@thaiio.com