Member Login
 สมัครสมาชิกที่นี่
 เข้าระบบ:
ลืมรหัสผ่าน?
สถิติสมาชิก:
Total:16,480
Latest:nang 
Onlines:
บุคคลทั่วไป: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 บาทไม่เพงเลยครับเมื่อเทียบกับบางเครื่องที่มีความสามารถเช่นเดียวกันแต่ราคาสูงลิบเลย

บทความโดย: แมงเม่า