ข้ามไปที่เนื้อหาหลัก

Get measurement result from Gauge to PC #2

การเขียนโปรแกรมรับค่าจากเครื่องมือวัด #2

ส่วนนี้ก็จะเป็นคำสั่งในการเชื่อมต่อกับ PC นะครับ โดยจะใช้ ActiveX XMCommCRC แทนตัว Common control จากทาง Microsoft นะครับ เนื่องจากติดเรื่อง ลิขสิทธิ์ในการใช้งาน จึงไม่สามารถใช้ Common control จากทาง Microsoft ได้ครับ

โดยเจ้าตัว ActiveX XMCommCRC เขาก็ปล่อยให้ใช้ฟรีนะครับ ไปดูรายละเอียดได้ที่ http://www.hardandsoftware.net/xmcomm.htm
ข้อดีอีกอย่างของตัว ActiveX ตัวนี้คือ ลักษณะการใช้งานจะเหมือนกับตัว Common control ของทาง Microsoft เลย

ต่อไปเรามาดูลักษณะข้อมูลที่ Mini-Processor ส่งมาให้ผ่านทาง Com port กันครับ
 
ข้อมูลจาก Manual ของ Digimatic mini-Processor
จากรูปจะเห็นได้ว่าข้อมูลตำแหน่งที่ 5 – 12 คือ ผลการวัดนะครับ เราก็จะดักเอาข้อมูลช่วงนี้มาใช้งาน

ก่อนอื่นก็ให้สร้างฟอร์มเพิ่มอีก ฟอร์มหนึ่งคือ FmMain แล้ววาง Control และตั้งชื่อตามนี้เลย



จากนั้นเรามาดู Code กันครับ
Private Sub CmAbout_Click()
MsgBox "RS-232 Communication [Freeware version]" & vbCrLf & "Develop by Jiranuwat Maitawin" & vbCrLf & "Contact / Information " & _
vbCrLf & "   jiranuwat.mai@gmail.com", vbInformation + vbOKOnly, "Software information :"
End Sub

Private Sub CmOnline_Click()
ดัก Error ว่ามีการตั้งค่า Port หรือยัง
If PortStatus = False Then MsgBox "ต้องตั้งค่า Port ให้เรียบร้อยก่อน": Call CommandButton2_Click: Exit Sub
If XMCommCRC1.PortOpen = True Then
ถ้า Port เปิดอยู่ให้ปิด
XMCommCRC1.PortOpen = False
CmOnline.Caption = "Connect"
CommandButton2.Enabled = True
CmTools.Enabled = True
Call txtNormal
Else
ถ้า Port ปิดอยู่ให้เปิด
XMCommCRC1.CommPort = activePort.cPortNo
XMCommCRC1.Settings = activePort.cRate & "," & Left(activePort.cParity, 1) & "," & _
activePort.cLenght & "," & activePort.cBits
XMCommCRC1.PortOpen = True
CmOnline.Caption = "Disconnect"
CommandButton2.Enabled = False
CmTools.Enabled = False
กำหนดค่า Parameter อ้างอิงในการเพิ่มค่าลง Excel ไฟล์ครับ
RowRec = 1
ColRec = 0
CountPnl = 10
ColMax = 5
'ตั้งค่ารูปแบบ ตัวอักษร
Call txtReady
End If
End Sub

Private Sub CmTools_Change()
If CmTools.ListIndex = 0 Then
dtPath = "ThicknessTester"
Else
dtPath = "WeightScale"
End If
dtPath = "D:\Data\" & dtPath
activePort = Read_Text(dtPath)
End Sub

Private Sub CommandButton2_Click()
เรียกฟอร์มการตั้งค่า Port ขึ้นมา
FmSetting.Show vbModal
End Sub


Private Sub UserForm_Activate()
With CmTools
.Clear
.AddItem "Thickness tester"
.AddItem "Weight scale"
.ListIndex = 0
End With

Dim dtPath As String

If CmTools.ListIndex = 0 Then
dtPath = "ThicknessTester"
Else
dtPath = "WeightScale"
End If
'ตำแหน่งเก็บไฟล์ข้อมูลของการตั้งค่า Port
dtPath = "D:\Data\" & dtPath
activePort = Read_Text(dtPath)     'acPort คือค่าที่จะใช้ Connect ณ ตอนนั้น ๆ

End Sub

Sub txtReady()   'text show when ready
With LaOnline
.Caption = "Port Open"   '"Ready"
.BackColor = RGB(0, 255, 0)
End With
End Sub

Sub txtNormal()    'text show in normal form
With LaOnline
.Caption = "Port Close"
.BackColor = RGB(240, 240, 240)
End With
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ดักเหตุการณ์กรณีกดปิด Excel แต่ไม่ได้ปิด Port
If XMCommCRC1.PortOpen Then XMCommCRC1.PortOpen = False
End
End Sub

Private Sub XMCommCRC1_OnComm()
Dim buffer
'รับค่าที่ส่งมาจาก Com port
buffer = XMCommCRC1.InputData

'<< แสดงผลการวัดที่ Label LaOnline
จะเห็นว่าใช้คำสั่ง MID  ในการดักเอา ส่วนที่ต้องการ  คือตำแหน่งที่  5-12
LaOnline.Caption = Mid(buffer, 5, 8)  
Call EnterValue(LaOnline.Caption)    '<< ป้อนผลการวัดที่ได้ลงใน Excel


End Sub


ก็เป็นอันเสร็จสินในส่วนของ Code การทำงานทั้งหมด
บทความต่อไปมาดูผลลัพธ์การทำงานของโปรแกรมกันครับ

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2 วันนี้ก็จะเอาเทคนิคการซ่อน Folder มาฝากกันเพิ่มเติมนะครับ จะต่างจากในบทความแรก https://lazedev.blogspot.com/2016/03/folder-folder.html ซึ่งเป็นการเก็บแบบ System file ธรรมดา โดยคราวนี้จะเพิ่มความสามารถให้ Folder ที่เราซ่อนไว้ให้เข้ายากขึ้นไปอีกนิด (ซ่อนได้เนียนขึ้น) นะครับ มาดูขั้นตอนกันเลย

Make BIG checkbox in Excel

ทำ Checkbox ขนาดใหญ่ใน Excel ในบางครั้งเมื่อเราต้องการทำฟอร์มเอกสารให้คนอื่นกรอก ก็มักจะมีตัว Checkbox เพื่อให้คลิ๊กเลือกในรายการที่เรากำหนดไว้ โดยจะเพิ่มจากตัว ActiveX control ที่มีอยู่แล้วใน Excel แต่ปัญหาคือเจ้าตัว checkbox นี้มันปรับขนาดไม่ได้ พอเราปรับขนาดหน้าจอเล็กลง เจ้าตัว checkbox นี่ก็จะเล็กลงตาม ทำให้ความไฮโซของแบบฟอร์มลดลงไป

เอา Password Excel VBA ออก

พอดีว่ากำลังทำโปรเจ็คฐานข้อมูลเกี่ยวกับ Excel VBA แต่ทำ ๆ ไปดันลืม พาสเวิดที่ตัวเองใส่ไว้ซะงั้น เลยต้องลำบากลำบนไปค้นหาวิธีการเอาพาสเวิดนั้นออก ดูไปแล้วก็พอมีวิธีอยู่ ก็เลยทำเป็นบทความเก็บไว้ดีกว่า มาดูกันเลย **เป็นการเอารหัสของ VBA ใน Excel ออกนะครับ ไม่ใช่รหัสของ Excel