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

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

[VB6] โค้ดคำสั่งในการติดต่อและสั่งเปิดลิ้นชัก PosiFlex รุ่น CR-4105 ผ่าน COM Port

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

213

กระทู้

301

โพสต์

2407

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
2407




แอดมินเขียนโค้ดชุดนี้ขึ้นมาโดยที่ไม่มีลิ้นชัก PosiFlex รุ่น CR-4105 มาเชื่อมต่อใช้งานเลย แต่อาศัยหลักการพื้นฐานทั่วๆไปเท่านั้นเอง คืออันดับแรก เราต้องทำการตรวจสอบ Communication Port หรือเรียกสั้นว่า COM Port ว่ามันมีอยู่หรือไม่ และมันอยู่กี่พอร์ท (กรณีที่ไม่มี COM Port เราสามารถจำลองได้ด้วยการจำลอง Virtual Port อันนี้ไปหาข้อมูลเพิ่มเติมเองล่ะกันครับ) จากนั้นก็เลือกพอร์ทที่เราทำการติดต่อกับลิ้นชัก (Cash Drawer) แล้วทำการส่งคำสั่งไปให้ตัวลิ้นชัก หรือว่าง่ายๆคือส่งสัญญาณไฟฟ้าจำนวนหนึ่งไปยังลิ้นชักเพื่อให้เกิดการเปิดสวิทช์ที่ตัวลิ้นชักนั่นเอง ก็จะทำให้ลิ้นชักเด้งออกมากได้ ... จบ


การนำไฟล์ USBCR.DLL ไปไว้ยังเครื่องที่ต้องการใช้งาน ... (ใช้ไฟล์เดียวพอ)



การติดตั้ง Utility ของ PosiFlex Cash Drawer รุ่น CR-4105 ...



มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Option Explicit
  2. ' **********************************************
  3. ' ลิ้นชักเก็บเงิน
  4. ' PosiFlex usbcr.dll DLL
  5. ' **********************************************
  6. ' ใช้แค่สั่งให้เปิด DrawerOpen และ OpenUSBcr
  7. Private Declare Function DrawerOpen Lib "usbcr.dll" (ByVal Id As Long) As Long
  8. Private Declare Function DrawerState Lib "usbcr.dll" (ByVal Id As Long) As Long
  9. Private Declare Function OpenUSBcr Lib "usbcr.dll" () As Long
  10. Private Declare Function CloseUSBcr Lib "usbcr.dll" () As Long
  11. Private Declare Function crRetrieveStatistics Lib "usbcr.dll" Alias "RetrieveStatistics" ( _
  12.     ByVal Id As Long, _
  13.     ByVal idx As Long, _
  14.     ByRef buf As Any, _
  15.     ByVal size As Long _
  16.     ) As Long

  17. Private Sub cmdOpenCash_Click()
  18.     On Error Resume Next
  19.     MSComm1.CommPort = cmbCommPort.ListIndex + 1 ' (เลือก Com Port)
  20.     If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
  21.     With MSComm1
  22.         .Settings = "9600,N,8,1"
  23.         .PortOpen = True
  24.         .Output = String(10, Chr(0))
  25.         .PortOpen = False
  26.     End With
  27.    
  28.     '//  สั่งลิ้นชักเด้งอัตโนมัติ
  29.     Call OpenUSBcr
  30.     DoEvents
  31.     '// ส่งสัญญาณไฟฟ้าไปยังลิ้นชัก เอาให้แน่นอนเลยส่งออกไป 3 รอบ
  32.     DrawerOpen (7)
  33.     DrawerOpen (7)
  34.     DrawerOpen (7)
  35.     '//
  36.     MsgBox "โอมเพี้ยง!!! ลิ้นชักจงเด้งเปิดออกมา ณ บัดนี้.", vbOKOnly + vbInformation, "รายงานสถานะ"
  37.     Unload Me
  38. End Sub

  39. Private Sub Form_Load()
  40.     '/ ตรวจสอบ Comm Port
  41.     Call ScanCommport
  42. End Sub

  43. '/ ตั้งค่า Comm Port
  44. Sub ScanCommport()
  45.     Dim i As Byte
  46.     For i = 1 To 8
  47.         If IsComPortAvailable(i) Then
  48.             cmbCommPort.AddItem "COM" & i
  49.         End If
  50.     Next
  51.     If cmbCommPort.ListCount > 0 Then cmbCommPort.ListIndex = 0
  52. End Sub

  53. '/ Check whether a given COM serial port is available
  54. Function IsComPortAvailable(ByVal portNum As Integer) As Boolean
  55.     Dim FFileNum As Integer
  56.     On Error Resume Next
  57.     FFileNum = FreeFile
  58.     Open "COM" & CStr(portNum) For Binary Shared As #FFileNum
  59.     If Err = 0 Then
  60.         Close #FFileNum
  61.         IsComPortAvailable = True
  62.     Else
  63.         IsComPortAvailable = False
  64.     End If
  65. End Function
คัดลอกไปที่คลิปบอร์ด



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

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

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

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

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

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

GMT+7, 2020-1-21 12:43 , Processed in 0.391675 second(s), 4 queries , File On.

Powered by Discuz! X3.3 R20170401, Rev.54

© 2001-2017 Comsenz Inc.

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