ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 5336|ตอบกลับ: 0

[VB6] แจกฟรีโค้ดโปรแกรม VB6 เปิดลิ้นชักเก็บเงิน (Cash Drawer) ผ่านพอร์ทอนุกรม

[คัดลอกลิงก์]

320

กระทู้

512

โพสต์

6583

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6583




สำหรับหลักการในเรื่องการสื่อสารผ่านพอร์ทอนุกรม แอดมินจะไม่ขอกล่าวซ้ำอีก สามารถหาอ่านได้จากเรื่อง
[VB6] การเชื่อมต่อคอมพิวเตอร์กับ RFID ภาค 1 (ทฤษฎี และ รูปแบบข้อมูล) ได้ตามสะดวกันเลยครับ ...
หลักการทำงานของโปรแกรม (ที่ภาษาอื่นๆก็นำไปใช้ได้)
- ค้นหา และ ทดสอบ COM Port ที่มีอยู่ในเครื่องคอมพิวเตอร์
- เลือก COM Port พร้อมกับตั้งค่ามาตรฐานของการรับส่งข้อมูล (Protocol)
- ส่งรหัส ASCII Code ออกไปยัง COM Port ที่ต้องการ ... มันเสมือนกับการจ่ายกระแสไฟฟ้า โดยการกดปุ่มสวิทช์ เพื่อให้หลอดไฟติดสว่างได้นั่นเอง ... ไม่คิดมาก่อนเลยว่าการเรียนช่างอิเล็กทรอนิกส์ จะนำความรู้มาใช้ประโยชน์ได้มากมายขนาดนี้
- แค่นี้เองลิ้นชักเก็บเงิน ก็เด้งออกได้แล้ว ... จบ


มาดูโค้ดกันเถอะ ...
  1. ' / -------------------------------------------------------------------------------------------------------------
  2. ' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
  3. ' / eMail : thongkorn@hotmail.com
  4. ' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
  5. ' / Facebook: https://www.facebook.com/g2gnet (Thailand only)
  6. ' / Facebook: https://www.facebook.com/commonindy (World Wide)
  7. ' / Purpose: Open cash drawer via RS-232 Serial Port.
  8. ' / Microsoft Visual Basic 6.0 Service Pack 6
  9. ' / -------------------------------------------------------------------------------------------------------------

  10. Option Explicit

  11. ' #####################################################
  12. ' เริ่มต้นการทำงาน
  13. ' #####################################################
  14. Private Sub Form_Load()

  15.     Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
  16.    
  17.     ' อันนี้แค่ปรับระยะตำแหน่งของ CommandButton แบบ Run Time เท่านั้นครับ
  18.     cmdOpenCashDrawer.Move Me.ScaleWidth - (cmdOpenCashDrawer.Width * 2) - 430, 750
  19.     cmdExit.Move cmdOpenCashDrawer.Left + cmdOpenCashDrawer.Width + 60, 750
  20.    
  21.     ' ค้นหา COM Port ที่ติดตั้งในเครื่องคอมพิวเตอร์
  22.     Call ScanCommPort

  23. End Sub

  24. ' #####################################################
  25. ' โปรแกรมย่อยใช้ในการค้นหา COM Port ที่ติดตั้งไว้ในเครื่องคอมพิวเตอร์
  26. ' #####################################################
  27. Sub ScanCommPort()
  28. ' ไม่ต้องสนใจ Error ครับ ...
  29. On Error Resume Next

  30. ' ตัวแปรเพื่อทดสอบ COM Port ไหนบ้างใช้งานได้ (1 - 4)
  31. Dim PortNumber As Byte

  32. ' ตัวแปรสร้างไฟล์ชั่วคราวขึ้นมา เพื่อทำการทดสอบการส่งข้อมูลออกจาก Port
  33. Dim iFileNum As Integer
  34.    
  35.     ' ทดสอบจำนวน 4 Port มาตรฐาน คือ COM1, COM2, COM3 และ COM4
  36.     For PortNumber = 1 To 4
  37.         
  38.         ' สร้างไฟล์ทดสอบชั่วคราวขึ้นมาก่อน เพื่อจะลองส่งข้อมูลออก Port นี้
  39.         iFileNum = FreeFile
  40.         
  41.         ' พยายามเปิด COM Port ดู (ส่ง Binary ออกไปยังช่องทางการติดต่อสื่อสาร)
  42.         Open "COM" & CStr(PortNumber) For Binary Shared As #iFileNum
  43.         ' เอาไว้ลองดูผลหมายเลข Err.Number ได้เลยครับ ... พี่น้อง
  44.         ' Debug.Print Err.Number
  45.         
  46.         ' หาก Port สามารถใช้งานได้ ค่า Err.Number = 0
  47.         ' หากค่า Err.Number <> 0 (ตัวอย่างนี้ คือ Err.Number = 53 หรือ File not found)
  48.         If Err.Number = 0 Then
  49.         
  50.             ' ปิดไฟล์ไปเลย
  51.             Close #iFileNum
  52.             
  53.             ' หาก Port ใช้งานได้ก็ให้เพิ่มรายการเข้าสู่ ComboBox เช่น COM1
  54.             cmbCommPort.AddItem "COM" & PortNumber
  55.             
  56.         End If
  57.         
  58.     Next
  59.    
  60.    ' หากมี COM Port อย่างน้อย 1 Port ก็ตั้งค่าให้อยู่ที่ COM1 เป็น Default เอาไว้ก่อน
  61.     If cmbCommPort.ListCount > 0 Then cmbCommPort.ListIndex = 0

  62. End Sub

  63. ' #####################################################
  64. ' คลิ๊กที่ปุ่มนี้เพื่อกำหนดมาตรฐาน และ ส่งข้อมูลออกไป สั่งให้ลิ้นชักเด้งออกได้
  65. ' #####################################################
  66. Private Sub cmdOpenCashDrawer_Click()
  67.      
  68.      ' เลือก Com Port ที่ต้องการ ก็คือ MSComm1.CommPort = ตัวเลขจำนวนเต็ม (เริ่มต้นจาก 1)
  69.      ' แต่ ListIndex ของ ComboBox ตัวแรกเริ่มต้นด้วยค่า 0 ดังนั้นเราเลยต้องบวก 1 เข้าไปด้วย
  70.      ' นั่นหมายความว่า MSComm1.CommPort = 1 <-- COM1 (ListIndex = 0)
  71.      ' หรือ MSComm1.CommPort = 2 <-- COM2 (ListIndex = 1)
  72.     MSComm1.CommPort = cmbCommPort.ListIndex + 1
  73.    
  74.     ' ทดสอบว่ามีการเปิด Port ค้างไว้หรือไม่ หากเงื่อนไขเป็นจริง สั่งให้ปิดช่องการสื่อสารหมายเลข Port นี้ก่อน
  75.     If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
  76.    
  77.     With MSComm1
  78.         ' กำหนดมาตรฐาน (Protocol) ในการติดต่อสื่อสารผ่าน COM Port ระหว่างผู้รับและผู้ส่ง
  79.         ' 9600 = อัตราการรับส่งข้อมูล (Baud Rate)
  80.         ' N = None Parity คือ ไม่มีการตรวจสอบความถูกต้องของข้อมูล
  81.         ' 8 = ขนาดข้อมูลจำนวน 8 บิต
  82.         ' 1 = มี Stop Bit ปิดท้ายอีก 1 บิต
  83.         .Settings = "9600,N,8,1"
  84.         
  85.         ' สั่งเปิด Port
  86.         .PortOpen = True
  87.         
  88.         ' ส่งข้อมูลออกจาก COM Port โดยผมส่งค่า NULL หรือ Chr(0) ออกไปจำนวน 10 ตัว (ที่ผมทดสอบผ่าน)
  89.         ' ไม่ได้ลองให้ละเอียดว่ามันต้องส่งข้อมูลออกไปกี่ไบต์กันแน่  เอาเป็นว่ามันทำงานได้ก็แล้วกัน ... 55555+
  90.         .Output = String$(10, Chr(0))
  91.         ' ลองส่ง ASCII Code ตัวอื่นๆก็ทำงานได้น่ะครับ
  92.         
  93.         ' ปิดการใช้งาน Port
  94.         .PortOpen = False
  95.         
  96.     End With

  97. End Sub

  98. Private Sub cmdExit_Click()
  99.     Set frmOpenCashDrawer = Nothing
  100.     End
  101. End Sub
คัดลอกไปที่คลิปบอร์ด


ดาวน์โหลดโค้ดต้นฉบับ VB6 ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

51

โพสต์

232

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
232
โพสต์ 2018-2-28 17:15:59 | ดูโพสต์ทั้งหมด

ขอบพระคุณอย่างสูงครับอาจารย์
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-11-27 23:33 , Processed in 0.259198 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้