VB寫的串口和單片機讀卡程序 有需要的下
0.png (43.51 KB, 下載次數: 91)
下載附件
2017-10-8 20:55 上傳
所有資料51hei提供下載:
自己寫的通過串口和單片機通訊的ic卡讀卡程序.rar
(55.17 KB, 下載次數: 73)
2017-10-8 11:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
vb源程序如下:
- Attribute VB_Name = "IC卡管理自動記錄系統"
- Attribute VB_GlobalNameSpace = False
- Attribute VB_Creatable = False
- Attribute VB_PredeclaredId = True
- Attribute VB_Exposed = False
- Option Explicit
- Public inData As String '串口中斷時讀入的字符串
- Dim TEXT_OK As Boolean
- Dim text1_temp As String
- Dim t7 As String
- Private Sub Command2_Click()
- data1.Recordset.MovePrevious
- If data1.Recordset.BOF Then data1.Recordset.MoveFirst
- Text1.Text = data1.Recordset("卡號")
- Text2.Text = data1.Recordset("姓名")
- Text3.Text = data1.Recordset("班級")
- Text4.Text = data1.Recordset("余額")
- Text5.Text = data1.Recordset("日期")
- Text6.Text = data1.Recordset("時間")
- Text9.Text = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00") & "小時" & Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00") & " 分鐘"
- data1.UpdateRecord
- End Sub
- Private Sub Command3_Click()
- If data1.Recordset.EOF = False Then data1.Recordset.MoveNext
- If data1.Recordset.EOF Then data1.Recordset.MoveLast
- Text1.Text = data1.Recordset("卡號")
- Text2.Text = data1.Recordset("姓名")
- Text3.Text = data1.Recordset("班級")
- Text4.Text = data1.Recordset("余額")
- Text5.Text = data1.Recordset("日期")
- Text6.Text = data1.Recordset("時間")
- data1.UpdateRecord
- Text9.Text = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00") & "小時" & Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00") & " 分鐘"
- End Sub
- Sub 找卡號()
- Dim n, m As Integer
- data1.Refresh
- data1.Recordset.MoveLast
- m = data1.Recordset.RecordCount
- data1.Refresh
- data1.Recordset.MoveFirst
- For n = 1 To m Step 1
- If Text1.Text = data1.Recordset("卡號") Then
- Text1.Text = data1.Recordset("卡號")
- 'Text2.Text = data1.Recordset("姓名")
- 'Text3.Text = data1.Recordset("班級")
- End If
- data1.Recordset.MoveNext
- Next n
- End Sub
- Private Sub Command6_Click()
- Timer2.Enabled = True
- Command9.Enabled = True
- Command6.Enabled = False
- End Sub
- Private Sub Command7_Click()
- Text1.Text = ""
- Text2.Text = ""
- Text3.Text = ""
- Text4.Text = ""
- MSComm1.Output = "rr12345678" '把查詢命令發出到串口
- End Sub
- Private Sub Command8_Click()
- Dim NUM, n, m As Integer
- Call CACK_TEXT
- If TEXT_OK = True Then
- NUM = Val(Text4.Text)
- n = NUM \ 256
- m = NUM - n * 256
- 'Call 寫入單片機
-
- Call 寫入數據庫
- text1_temp = Text1.Text
- Text1.Text = ""
- Else
- n = MsgBox("請正確輸入", 5 + vbExclamation, "錯誤")
- End If
- End Sub
- Sub 寫入單片機()
- Dim adsafdds As String
- Dim yuer1, yuer2 As String
- yuer1 = Format(CStr(CStr((CSng(Text4.Text) * 100) \ 60)), "#00")
- yuer2 = Format(CStr(CStr((CSng(Text4.Text) * 100) Mod 60)), "#00")
- adsafdds = "ss" & Text1.Text & yuer1 & yuer2
- MSComm1.Output = adsafdds
- End Sub
- Private Sub Command9_Click()
- Timer2.Enabled = False
- Command6.Enabled = True
- Command9.Enabled = False
- End Sub
- Private Sub Form_Load()
- MSComm1.PortOpen = True
- MSComm1.RThreshold = 1
- Command8.Enabled = False
- Command6.Enabled = True
- Command9.Enabled = False
- End Sub
- Sub CACK_TEXT()
- TEXT_OK = False
- If (Len(Text1.Text) = 4 And Len(Text4.Text) < 6) Then TEXT_OK = True
- End Sub
- Sub 寫入數據庫()
- data1.Refresh
- data1.Recordset.MoveLast
- data1.Recordset.AddNew
- data1.Recordset("卡號") = Text1.Text
- 'data1.Recordset("姓名") = Text2.Text
- 'data1.Recordset("班級") = Text3.Text
- data1.Recordset("余額") = Text4.Text
- data1.Recordset("日期") = Date
- data1.Recordset("時間") = Time()
- data1.UpdateRecord
- End Sub
- Private Sub MSComm1_OnComm() '串口中斷
- 'On Error Resume Next
- Static bFlag As Boolean
- Static Xbyte As Long
- Select Case MSComm1.CommEvent '選擇事件
- Case comEvReceive '接收到字符
- Dim I As Integer
- Dim InByte() As Byte '定義一個二進制指針放接收到的數據
- InByte = MSComm1.Input '數據轉移到指針
- Dim j As Long
- For j = 0 To UBound(InByte) '循環到指針上標
-
- inData = inData & Chr(InByte(j)) '取出一個字節換為16進制顯示用
-
- Next j
- DoEvents
- Text1.SelText = inData '將剛收到的字符串顯示出來
- inData = ""
- Text1.SelStart = Len(Text1.Text) '光標置后
- If Len(Text1.Text) = 10 Then
- Call 計算
- 'Call 找卡號
- End If
- Case comEventRxOver '接收緩沖區滿的處理
- MsgBox "接收緩沖區滿了!" '發出警告
- End Select
- End Sub
- Sub 計算()
- Dim temp As String
- Dim 標志 As String
- Dim k As Integer
- Dim yuer1 As String
- Dim 余額 As Integer
- temp = Text1.Text
- 標志 = Left(temp, 1)
- temp = Right(temp, Len(temp) - 2)
- Select Case 標志
- Case "s"
- Text1.Text = Left(temp, 4)
-
- Case "r"
- Text1.Text = ""
- MsgBox "寫卡成功!!!!!"
- GoTo 計算end
- Case Else
- Text1.Text = ""
- MsgBox "通訊有誤??????"
- GoTo 計算end
- End Select
- temp = Right(temp, 4)
- Text9.Text = Left(temp, 2) & "小時" & Right(temp, 2) & "分鐘"
- Text4.Text = Format(CStr((CSng(Left(temp, 2) * 60 + CSng(Right(temp, 2)))) / 100), "#00.00")
- 計算end:
-
- End Sub
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
|