| Total: | 16,480 |
| Latest: | nang |
| Onlines: | 0 |
| บุคคลทั่วไป: | 45 |

Category |
รับค่าจาก RS-232 ด้วย VB (HW interface ตอนที่1)
All Articles >> VB >> - รับค่าจาก RS-232 ด้วย VB (HW interface ตอนที่1)
ช่วงนี้มีโอกาสเขียนโปรแกรมควบคุมฮาร์ดแวร์ทั้งพอร์ตขนานและพอร์ตอนุกรมเลยกะว่าจะเอามาลงให้เพื่อน ๆ ได้ลองเล่นตามกันแต่คงไม่ละเอียดมากนักเพราะส่วนใหญ่ท่านผู้เชี่ยวชาญได้นำมาลงไว้หมดแล้ว โดยคาดว่าจะแบ่งออกเป็น 2 ตอนครับ
1. การเขัยนโปรแกรมรับค่าจาก RS-232 จากอุปกรณ์ได ๆ เช่นมัลติมิเตอร์ เป็นต้น
2. การเขียนโปรแกรมติดต่อพอร์ตขนานโดยใช้ซับรูทีน portout และฟังก์ชัน portin ในไฟล์ไลบรารี io.dll ผมเลือกตัวนี้แทน inpuot.dll (พัฒนาโดย Jan AxelSon) เนื่องจากมันมีฟังก์ชันให้เล่นมากกว่าน่ะครับ
ตอนที่ 1 การเขัยนโปรแกรมรับค่าจาก RS-232
1. ข้อกำหนดพื้นฐานสำหรับการทดลองรับส่งข้อมูลผ่านพอร์ตอนุกรม
1.1 การต่อสายลิงค์ข้อมูลระหว่างคอเนคเตอร์ DB9 ตัวเมียกับตัวเมียสามารถส่งข้อมูลระหว่างเครื่องคอมพิวเตอร์ได้(คอนเนคเตอร์ด้านคอมพิวเตอร์จะเป็นตัวผู้)
1.2 ถ้าต้องการทดสอบการรับส่งข้อมูลบนคอมพิวเตอร์เครื่องเดียวให้เชื่อมภาคส่ง (Tx) และภาครับ (Rx) โดยการต่อขา 2 และขา 3 ของปลายสายด้านที่ไม่ต่อเข้ากับคอมพิวเตอร์เข้าด้วยกัน
1.3 สามารถใช้โปรแกรม Hyper Terminal ทดสอบการรับส่งข้อมูลได้เช่นกัน
สำหรับ VB จะมีคอนโทรล Mscomm สำหรับการรับส่งข้อมูลผ่านพอร์ตอนุกรม ซึ่งจะถูกติดตั้งมาแล้วเมื่อลงโปรแกรมแต่จะไม่อยู่ในดีฟอลท์ของทูลบ๊อกซ์ เราจะต้องเพิ่มเข้ามาเองโดยกด ctrl+T ใน VBIDE และเลือก Microsoft Comm Control 6.0
2. ใช้ Hyper Terminal สำหรับการตรวจสอบข้อมูลจากดิจิตอลมัลติมิเตอร์
2.1 ต่อมิเตอร์เข้ากับพอร์ตอนุกรมของคอมพิวเตอร์

2.2 ต่อ probe เข้ากับ power supply จากรูป power supply มันรุ่นเก่าครับเลย display ไม่ตรง 5555

มิเตอร์อ่านได้ +15.32 โวลต์

2.3 กดปุ่ม RS-232 บนมิเตอร์แล้วรันโปรแกรม Hyper terminal ซึ่งในฟอร์แมทนี้เราจะอ่านได้ 21532<40= โดย
2 คือแสดง display แบบ 2 digit
1532 คือแรงดัน 15.32 โวลต์
<40= คือหน่วยวัดแรงดันไฟฟ้ากระแสตรง

3. ทีนี้เราก็มาออกแบบโปรแกรมของเรากันล่ะ

Option Explicit
Private Sub Form_Load()
MSCom.Settings = "2400,N,7,1" 'กำหนด setting ให้ตรงกับ manual ของมิเตอร์
MSCom.RThresholdv = 1 'กำหนดให้เกิด event OnComm
MSCom.CommPort = 1 'เลือกพอร์ต
End Sub
Private Sub cmdOpenPort_Click()
MSCom.PortOpen = True 'เปิดพอร์ต
End Sub
Private Sub cmdSend_Click()
If MSCom.PortOpen Then
MSCom.Output = txtSend.Text & vbCrLf 'ส่งค่าจาก txtSend
txtSend.Text = ""
txtReceive.Refresh
txtSend.SetFocus
End If
End Sub
Private Sub MSCom_OnComm() 'อันนี้สำคัญมากนะ
Dim buffer As Variant
Dim msg As Integer
If MSCom.CommEvent = comEvReceive Then 'ตรวจสอบการมาถึงของข้อมูลโดยการตรวจจาก event comEvReceive
buffer = MSCom.Input
txtReceive.Text = txtReceive.Text & buffer
txtReceive.Refresh
End If
End Sub
4. จากนั้นก็รันโปรแกรม

จะเห็นว่าเราจะได้ข้อมูลเหมือนกับการใช้โปรแกรม Hyper Terminal ทีนี้เราก็สามารถนำเอาไปประยุกต์ใช้ในงานต่าง ๆ ได้ เช่นทำเครื่อง auto testing เป็นต้น บางคนอาจจะสงสัยว่ามิเตอร์อาจต้องสุดหรู จริง ๆ ใช้อะไรก็ได้ที่มีเอาท์พุตออกมาจาก RS-232 น่ะครับ มิเตอร์ตัวที่ผมใช้คิดว่าน่าจะประมาณ 3000 บาทไม่เพงเลยครับเมื่อเทียบกับบางเครื่องที่มีความสามารถเช่นเดียวกันแต่ราคาสูงลิบเลย
บทความโดย: แมงเม่า