找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4559|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

VB串口和單片機(jī)讀IC卡上位機(jī)源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
VB寫的串口和單片機(jī)讀卡程序 有需要的下


所有資料51hei提供下載:
自己寫的通過串口和單片機(jī)通訊的ic卡讀卡程序.rar (55.17 KB, 下載次數(shù): 73)


vb源程序如下:
  1. Attribute VB_Name = "IC卡管理自動(dòng)記錄系統(tǒng)"
  2. Attribute VB_GlobalNameSpace = False
  3. Attribute VB_Creatable = False
  4. Attribute VB_PredeclaredId = True
  5. Attribute VB_Exposed = False
  6. Option Explicit
  7. Public inData As String '串口中斷時(shí)讀入的字符串
  8. Dim TEXT_OK As Boolean
  9. Dim text1_temp As String
  10. Dim t7 As String



  11. Private Sub Command2_Click()
  12. data1.Recordset.MovePrevious
  13. If data1.Recordset.BOF Then data1.Recordset.MoveFirst
  14. Text1.Text = data1.Recordset("卡號(hào)")
  15. Text2.Text = data1.Recordset("姓名")
  16. Text3.Text = data1.Recordset("班級(jí)")
  17. Text4.Text = data1.Recordset("余額")
  18. Text5.Text = data1.Recordset("日期")
  19. Text6.Text = data1.Recordset("時(shí)間")

  20. Text9.Text = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00") & "小時(shí)" & Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00") & " 分鐘"
  21. data1.UpdateRecord
  22. End Sub

  23. Private Sub Command3_Click()

  24. If data1.Recordset.EOF = False Then data1.Recordset.MoveNext
  25. If data1.Recordset.EOF Then data1.Recordset.MoveLast
  26. Text1.Text = data1.Recordset("卡號(hào)")
  27. Text2.Text = data1.Recordset("姓名")
  28. Text3.Text = data1.Recordset("班級(jí)")
  29. Text4.Text = data1.Recordset("余額")
  30. Text5.Text = data1.Recordset("日期")
  31. Text6.Text = data1.Recordset("時(shí)間")
  32. data1.UpdateRecord

  33. Text9.Text = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00") & "小時(shí)" & Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00") & " 分鐘"
  34. End Sub

  35. Sub 找卡號(hào)()
  36. Dim n, m As Integer
  37. data1.Refresh
  38. data1.Recordset.MoveLast
  39. m = data1.Recordset.RecordCount
  40. data1.Refresh
  41. data1.Recordset.MoveFirst

  42. For n = 1 To m Step 1
  43.     If Text1.Text = data1.Recordset("卡號(hào)") Then
  44.         Text1.Text = data1.Recordset("卡號(hào)")
  45.         'Text2.Text = data1.Recordset("姓名")
  46.         'Text3.Text = data1.Recordset("班級(jí)")
  47.     End If
  48.     data1.Recordset.MoveNext
  49. Next n
  50. End Sub




  51. Private Sub Command6_Click()
  52. Timer2.Enabled = True
  53. Command9.Enabled = True
  54. Command6.Enabled = False
  55. End Sub

  56. Private Sub Command7_Click()

  57. Text1.Text = ""

  58. Text2.Text = ""
  59. Text3.Text = ""
  60. Text4.Text = ""
  61. MSComm1.Output = "rr12345678" '把查詢命令發(fā)出到串口
  62. End Sub
  63. Private Sub Command8_Click()
  64. Dim NUM, n, m As Integer

  65. Call CACK_TEXT
  66. If TEXT_OK = True Then
  67.     NUM = Val(Text4.Text)
  68.     n = NUM \ 256
  69.     m = NUM - n * 256
  70.     'Call 寫入單片機(jī)
  71.    
  72.     Call 寫入數(shù)據(jù)庫
  73.     text1_temp = Text1.Text
  74.     Text1.Text = ""
  75. Else
  76.     n = MsgBox("請(qǐng)正確輸入", 5 + vbExclamation, "錯(cuò)誤")
  77. End If

  78. End Sub
  79. Sub 寫入單片機(jī)()
  80. Dim adsafdds As String
  81. Dim yuer1, yuer2 As String
  82. yuer1 = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00")
  83. yuer2 = Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00")

  84. adsafdds = "ss" & Text1.Text & yuer1 & yuer2
  85. MSComm1.Output = adsafdds

  86. End Sub

  87. Private Sub Command9_Click()
  88. Timer2.Enabled = False
  89. Command6.Enabled = True
  90. Command9.Enabled = False
  91. End Sub

  92. Private Sub Form_Load()
  93. MSComm1.PortOpen = True
  94. MSComm1.RThreshold = 1
  95. Command8.Enabled = False
  96. Command6.Enabled = True
  97. Command9.Enabled = False
  98. End Sub
  99. Sub CACK_TEXT()
  100. TEXT_OK = False
  101. If (Len(Text1.Text) = 4 And Len(Text4.Text) < 6) Then TEXT_OK = True
  102. End Sub
  103. Sub 寫入數(shù)據(jù)庫()
  104. data1.Refresh
  105. data1.Recordset.MoveLast
  106. data1.Recordset.AddNew
  107. data1.Recordset("卡號(hào)") = Text1.Text
  108. 'data1.Recordset("姓名") = Text2.Text
  109. 'data1.Recordset("班級(jí)") = Text3.Text
  110. data1.Recordset("余額") = Text4.Text
  111. data1.Recordset("日期") = Date
  112. data1.Recordset("時(shí)間") = Time()
  113. data1.UpdateRecord

  114. End Sub


  115. Private Sub MSComm1_OnComm() '串口中斷
  116. 'On Error Resume Next
  117. Static bFlag As Boolean
  118. Static Xbyte As Long
  119. Select Case MSComm1.CommEvent '選擇事件
  120. Case comEvReceive '接收到字符
  121. Dim I As Integer
  122.         Dim InByte() As Byte '定義一個(gè)二進(jìn)制指針放接收到的數(shù)據(jù)
  123.         InByte = MSComm1.Input '數(shù)據(jù)轉(zhuǎn)移到指針
  124.         Dim j As Long
  125.         For j = 0 To UBound(InByte) '循環(huán)到指針上標(biāo)
  126.             
  127.             inData = inData & Chr(InByte(j)) '取出一個(gè)字節(jié)換為16進(jìn)制顯示用
  128.          
  129.         Next j
  130. DoEvents
  131.     Text1.SelText = inData '將剛收到的字符串顯示出來
  132.     inData = ""
  133. Text1.SelStart = Len(Text1.Text) '光標(biāo)置后
  134.   If Len(Text1.Text) = 10 Then
  135.     Call 計(jì)算
  136.     'Call 找卡號(hào)
  137.   End If
  138. Case comEventRxOver '接收緩沖區(qū)滿的處理
  139. MsgBox "接收緩沖區(qū)滿了!" '發(fā)出警告
  140. End Select

  141. End Sub

  142. Sub 計(jì)算()
  143. Dim temp As String
  144. Dim 標(biāo)志 As String
  145. Dim k As Integer
  146. Dim yuer1   As String
  147. Dim 余額    As Integer
  148. temp = Text1.Text

  149. 標(biāo)志 = Left(temp, 1)
  150. temp = Right(temp, Len(temp) - 2)
  151. Select Case 標(biāo)志
  152.     Case "s"
  153.         Text1.Text = Left(temp, 4)
  154.         
  155.     Case "r"
  156.         Text1.Text = ""
  157.         MsgBox "寫卡成功!!!!!"

  158.         GoTo 計(jì)算end
  159.     Case Else
  160.         Text1.Text = ""
  161.         MsgBox "通訊有誤??????"
  162.         GoTo 計(jì)算end
  163. End Select
  164.     temp = Right(temp, 4)
  165.     Text9.Text = Left(temp, 2) & "小時(shí)" & Right(temp, 2) & "分鐘"
  166.     Text4.Text = Format(CStr((CSng(Left(temp, 2) * 60 + CSng(Right(temp, 2)))) / 100), "#00.00")
  167. 計(jì)算end:
  168.    
  169. End Sub


  170. ……………………

  171. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:130231 發(fā)表于 2017-10-8 22:25 | 只看該作者
請(qǐng)教一下用什么單片機(jī)好。
回復(fù)

使用道具 舉報(bào)

板凳
ID:241242 發(fā)表于 2017-11-17 13:37 | 只看該作者
真是不錯(cuò)
回復(fù)

使用道具 舉報(bào)

地板
ID:241242 發(fā)表于 2017-11-17 13:37 | 只看該作者
刷卡器和單片機(jī)連接,然后單片機(jī)再和VB通過串口連接嗎?
回復(fù)

使用道具 舉報(bào)

5#
ID:252862 發(fā)表于 2017-11-25 16:20 | 只看該作者
正在學(xué)習(xí)IC卡的單片機(jī)和上位機(jī)通信,多謝分享。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表