|
สร้างฟอร์ม
การออกแบบของเราจะใช้ VB
Control ที่ชื่อว่า MSComm
โดยที่คุณต้อง กำหนด Custom Control
เข้าไปที่ เมนู Project--->Companents
แล้วเลือกที่ช่อง MSComm
ก็จะปรากฏ เป็นรูปไอคอนโทร
ศัพท์สีเหลือง
ให้คลิกที่ไอคอนลากนำมาไว้บน
Form ใน Project ของโปรแกรมเรา
จากนั้นก็วาง Frame control สำหรับชุด
Communication และ Control I/O Microcontroller
ส่วนการจัดว่างตำแหน่ง Control
ต่างๆนั้น
ผมได้อธิบายชี้ตำแหน่งเป็นรูปไว้ดังนี้
รูปการออกแบบฟอร์ม
เขียนคำสั่งของโปรแกรม
ชุดแรกจะเป็นปุ่มของการ
Setting Communication PC Serial Port
Private Sub Command8_Click()
On Error GoTo Errlabel
' ตั้งค่า Setting คือ
="Baud Rate(อัตราการรับส่งข้อมูล),Parity(ถ้าไม่ใช้ใส่
N,Data bit(จำนวนบิตข้อมูล),Stop bit"
เช่น 9600,n,8,1
MSComm1.Settings = Text1.Text '
โดยเราจะใส่ค่า Setting ที่ Textbox
MSComm1.CommPort = Combo1.ListIndex + 1
' กำหนด Com port
MSComm1.RThreshold = 1 ' ตั้งค่าให้มีการใช้ Event-driven เมื่อมีข้อมูลเข้ามา
MSComm1.PortOpen = True ' เปิด Com port พร้อมใช้งาน
MSComm1.InputLen = 0
' กำหนดให้อ่านข้อมูลใน Buffer ของ MSComm ทั้งหมด
Exit Sub
' สำหรับตรวจการเกิดข้อผิดผลาดของโปรแกรม
Errlabel:
If Err.Number = 8002 Then MsgBox "Select com Port", vbInformation, "8051 Control I/O"
End Sub
ชุดปุ่มควบคุมการส่งค่าออกไปที่ตัวไมโครคอนโทรลเลอร์8051
' คำสั่งส่งรหัสให้กับไมโครคอนโทรลเลอร์เพื่อให้สั่งควบคุม LED แต่ละตัว
Private Sub Command1_Click()
MSComm1.Output = "1" ' ส่งเลข 1 ออกไปให้ คือค่า Ascii =31(Hex) ให้ LED1 ติด
valLED1 = Not valLED1
' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED1
End Sub
Private Sub Command2_Click()
MSComm1.Output = "2" ' ส่งเลข 2 ออกไปให้ คือค่า Ascii =32(Hex) ให้ LED2 ติด
valLED2 = Not valLED2 ' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED2
End Sub
Private Sub Command3_Click()
MSComm1.Output = "3" ' ส่งเลข 3 ออกไปให้ คือค่า Ascii =33(Hex) ให้ LED3 ติด
valLED3 = Not valLED3
' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED3
End Sub
Private Sub Command4_Click()
MSComm1.Output = "4" ' ส่งเลข 4 ออกไปให้ คือค่า Ascii =34(Hex) ให้ LED4 ติด
valLED4 = Not valLED4 ' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED4
End Sub
Private Sub Command5_Click()
MSComm1.Output = "5"
' ส่งเลข 5 ออกไปให้ คือค่า Ascii =35(Hex) ให้ LED5 ติด
valLED5 = Not valLED5
' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED5
End Sub
Private Sub Command6_Click()
MSComm1.Output = "6" ' ส่งเลข 6 ออกไปให้ คือค่า Ascii =36(Hex) ให้ LED6 ติด
valLED6 = Not valLED6 ' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED6
End Sub
Private Sub Command7_Click()
MSComm1.Output = "7"
' ส่งเลข 7 ออกไปให้ คือค่า Ascii =37(Hex) ให้ LED7 ติด
valLED7 = Not valLED7
' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED7
End Sub
Private Sub Command9_Click()
MSComm1.Output = "0" ' ส่งเลข 0 ออกไปให้ คือค่า Ascii =30(Hex) ให้ LED ดับหมด
valLED = Not valLED ' กำหนดค่าเพื่อตรวจสอบการกดปุ่ม LED0
End Sub
ชุดรับค่าจากไมโครคอนโทรลเลอร์โดยจะอยู่ใน
MSComm1_OnComm()
Private Sub MSComm1_OnComm()
Select Case MSComm1.CommEvent ' กรณีที่เกิด Commevent ขึ้น
Case comEvReceive ' เมื่อมีการรับข้อมูลทางด้าน Com Port
Dim Buffer As Variant ' ตัวแปรสำหรับเก็บข้อมูลที่รับเข้ามา
Buffer = MSComm1.Input ' เก็บข้อมูลไว้ในตัวแปร
Label2.Caption = "Return = " & Buffer
' กรณีที่ไมโครคอนโทรลเลอร์ส่งข้อมูลเข้ามาเพื่อยื่นยันการทำงานเสร็จแล้ว
' ตรวจอบค่าที่รับมาว่าเป็น "C" และ ค่าvalLED1-7 ประจำแต่ละปุ่มที่กด
' เพื่อเปลี่ยนสีของวงกลมเป็นสีแดง(หมายถึง LEDติด)และ ถ้าเป็นสีขาว(หมายถึง LED ดับ)
On Error GoTo Errlabel
If Buffer = "C" Then
If valLED = True Then
For x = 0 To 7 Step 1
Shape1(x).FillColor = &HFFFFFF
Next
Shape1(0).FillColor = &HFF&
valLED1 = False
valLED2 = False
valLED3 = False
valLED4 = False
valLED5 = False
valLED6 = False
valLED7 = False
Command9.Caption = "ON ALL"
' หากว่าปุ่มยัง "ON ALL" อยู่จะไม่สามารถควบคุมได้จนกว่ากดให้เป็น "OFF ALL"
Exit Sub
Else
Shape1(0).FillColor = &HFFFFFF
Command9.Caption = "OFF ALL"
End If
If valLED1 = True Then
Shape1(1).FillColor = &HFF&
Else
Shape1(1).FillColor = &HFFFFFF
End If
If valLED2 = True Then
Shape1(2).FillColor = &HFF&
Else
Shape1(2).FillColor = &HFFFFFF
End If
If valLED3 = True Then
Shape1(3).FillColor = &HFF&
Else
Shape1(3).FillColor = &HFFFFFF
End If
If valLED4 = True Then
Shape1(4).FillColor = &HFF&
Else
Shape1(4).FillColor = &HFFFFFF
End If
If valLED5 = True Then
Shape1(5).FillColor = &HFF&
Else
Shape1(5).FillColor = &HFFFFFF
End If
If valLED6 = True Then
Shape1(6).FillColor = &HFF&
Else
Shape1(6).FillColor = &HFFFFFF
End If
If valLED7 = True Then
Shape1(7).FillColor = &HFF&
Else
Shape1(7).FillColor = &HFFFFFF
End If
End If
End Select
Errlabel:
Exit Sub
End Sub
|