ผู้เขียน หัวข้อ: งานครั้งที่ 7 เขียนโปรแกรมควบคุม LED ทางพอร์ตขนาน (VB, VC#)  (อ่าน 26155 ครั้ง)

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
เขียนโปรแกรมทำงานเป็นสวิตช์สั่งงานออกทางพอร์ตเพื่อควบคุมหลอดไฟ 8 หลอด โดยใช้สวิตช์ 8 ตัวควบคุมแต่ละหลอดแบบอิสระต่อกัน




<a href="http://www.youtube.com/v/aaQjXwtknYM" target="_blank" class="new_win">http://www.youtube.com/v/aaQjXwtknYM</a>
« แก้ไขครั้งสุดท้าย: พฤษภาคม 16, 2018, 03:22:20 PM โดย admin »

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
รูปหลอดไฟสามารถนำมาจากเวป
http://www.clker.com/clipart-6515.html



LED (On-Off)





สำหรับผู้ที่ใช้ VB6.0 ภาพในเวปไซด์ดังกล่าวที่เป็นสกุล png ซึ่งวิชวลเบสิกอ่านไม่ได้  ให้ทำการแปลงสกุลภาพเป็น gif ทำได้โดยใช้โปรแกรมโฟโต้ชอป เปิดไฟล์แล้ว save as เป็นไฟล์ gif

« แก้ไขครั้งสุดท้าย: ธันวาคม 02, 2015, 12:35:09 PM โดย admin »

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
« แก้ไขครั้งสุดท้าย: ธันวาคม 31, 2010, 06:22:36 PM โดย admin »

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
Inpout32.dll ไลบรารีพิเศษที่ใช้ในการเขียนโปรแกรมติดต่อพอร์ตขนาน  สามารถดาวน์โหลดได้ฟรีที่
https://sourceforge.net/projects/lptcontrol/?source=directory


ดำเนินการดังนี้

-ทำการแตกไฟล์(ที่ได้ดาวน์โหลดมาจาก URL ข้างบน)
-คัดลอกไฟล์ inpout32.dll
-ไปไว้ในโฟลเดอร์ system32 ที่อยู่ในโฟลเดอร์ windows  --> C:\Windows\System32\
 

ถ้าเป็น Windows Me, 2000, XP --------------> ให้ก็อปปี้ไว้ที่โฟลเดอร์ C:\Windows\System32 หรือ C:WinntSystem32



หากไม่ดำเนินการเวลารันผลจะเป็นเช่นนี้

เวลาใช้งาน
ต้องประกาศการใช้งานก่อนเขียนโปรแกรม เมื่อต้องการใช้คำสั่งส่งข้อมูลออกพอร์ต
โค๊ด: [Select]
Private Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer) 
ต้องประกาศการใช้งานก่อนเขียนโปรแกรม เมื่อต้องการใช้คำสั่งรับข้อมูลจากพอร์ต
โค๊ด: [Select]
Private Declare Function Inp Lib "inpout32.dll" Alias "Inp32" (ByVal PortAddress As Integer) As Integer 

การใช้ฟังก์ชั่นหน่วงเวลา
ต้องประกาศการใช้งานก่อนเขียนโปรแกรม
โค๊ด: [Select]
Public Declare Sub Sleep Lib "Kernel32.dll" (ByVal PortAddress As Integer)


รูปแบบการใช้งาน
คำสั่งส่งข้อมูลออก
out เบอร์พอร์ต,ข้อมูลที่ส่งออก
ตัวอย่างเช่น
out &H378,12

คำสั่งรับข้อมูลจากพอร์ต
inp (เบอร์พอร์ต)
ตัวอย่างเช่น
 value=inp(&H379)


คำสั่งหน่วงเวลา
Sleep 500    'หน่วงเวลา 500 มิลลิวินาที
« แก้ไขครั้งสุดท้าย: ธันวาคม 13, 2016, 03:28:59 PM โดย admin »

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
การจำลองการทำงานของโปรแกรมโดยไม่ต้องต่อวงจรจริงด้วยโปรแกรม Proteus

1. ดาวน์โหลดอุปกรณ์สำหรับทดลองที่
http://www.praphas.com/download/interface/library-LPT.rar

2. คัดลอกไฟล์ LPT02.LIB ที่อยู่ในโฟลเดอร์ Library ไปไว้ในโฟลเดอร์   C:\Program Files\Labcenter Electronics\Proteus 7 Professional\LIBRARY

3. คัดลอกไฟล์ Port.dll ที่อยู่ในโฟล์เดอร์ Models ไปไว้ในโฟลเอดร์ C:\Program Files\Labcenter Electronics\Proteus 7 Professional\MODELS



4. เวลาเรียกใช้ให้พิมพ์ในช่องค้นหาอุปกรณ์โดยพิมพ์คำว่า "LPT" จะปรากฏให้ใช้งาน 2 ตัวเลือกใช้ตัวไหนก็ได้มันอันเดียวกัน



ผลการจำลองซึ่งทำในขณะเดียวกันกับต่อวงจรเชื่อมต่อจริงจะให้ผลเช่นเดียวกัน
« แก้ไขครั้งสุดท้าย: มกราคม 21, 2014, 02:05:35 PM โดย admin »

admin

  • Administrator
  • Hero Member
  • *****
  • กระทู้: 706
    • ดูรายละเอียด
    • อีเมล์
Re: งานครั้งที่ 7 เขียนโปรแกรมควบคุม LED ทางพอร์ตขนาน
« ตอบกลับ #5 เมื่อ: พฤษภาคม 16, 2018, 03:21:14 PM »
การประกาศใช้ฟังก์ชั่นเมื่อใช้กับ Visual C#
โค๊ด: [Select]
using System.Runtime.InteropServices;
public class PortAccessAPI
{
    [DllImport("inpout32.dll", EntryPoint = "Out32")]
    public static extern void Output(int address, int value);
    [DllImport("inpout32.dll", EntryPoint = "Inp32")]
    public static extern int Input(int address);
}

ฟังก์ชั่นใช้งานเมื่อต้องการส่งค่าออกพอร์ต
โค๊ด: [Select]
int value = 24;
PortAccessAPI.Output(0x378, value);

ฟังก์ชั่นใช้งานเมื่อต้องการรับค่าจากพอร์ต
โค๊ด: [Select]
int value;
value = PortAccessAPI.Input(adress);

ตำแหน่งการประกาศใช้ฟังก์ชั่น
« แก้ไขครั้งสุดท้าย: พฤษภาคม 16, 2018, 04:02:32 PM โดย admin »