打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB读取智能温湿度显示不变化
小弟学编了一个VB显示存储温湿度的程序,能读,也能写入ACCESS表中,每当温湿度计送过来信息时,能读进表中,但数值永远是第一次的,用串口助手读看出,每次送过来的是不一样的值。
附上程序请高手指点:
  1. '串口模块
  2. Public Sub MyCom(MSComm1 As MSComm)
  3. On Error GoTo ErrHandle

  4. With MSComm1
  5. .CommPort = 3
  6. '使用COM3
  7. .Settings = '9600,N,8,1' '设置通信口参数
  8. .InBufferSize = 60 '设置MSComm1接收缓冲区为40字节
  9. .OutBufferSize = 2 '设置MSComm1发送缓冲区为2字节
  10. .InputMode = comInputModeBinary '设置接收数据模式为文本式
  11. .InputLen = 1 '设置Input 一次从接收缓冲读取字节数为1
  12. .SThreshold = 1 '设置Output 一次从发送缓冲读取字节数为1
  13. .RThreshold = 1 '接收缓冲区每收到一个,触发
  14. .InBufferCount = 0 '清除接收缓冲区
  15. .OutBufferCount = 0 '清除发送缓冲区
  16. If .PortOpen = False Then
  17. .PortOpen = True
  18. End If
  19. End With
  20. Exit Sub
  21. ErrHandle:
  22. MsgBox '通讯口打不开,请检查'

  23. End Sub
  24. '这是向温度计发送读的命令
  25. Public Sub mySend(bytHex() As Byte)
  26. ReDim bytHex(7) As Byte
  27. ReDim bytHex(7)
  28. bytHex(0) = &H1
  29. bytHex(1) = &H4
  30. bytHex(2) = &H0
  31. bytHex(3) = &H0
  32. bytHex(4) = &H0
  33. bytHex(5) = &H2
  34. bytHex(6) = &H71
  35. bytHex(7) = &HFB
  36. End Sub

  37. Dim datatempA As Single '这是采样温湿度值
  38. Dim datatempB As Single '这是采样温湿度值
  39. Dim num As Integer '这是采样温湿度个数
  40. Dim bytHex() As Byte
  41. Dim InByte(1000) As Byte '串口接收数据用
  42. Dim buffer As String
  43. Dim Varp As Variant
  44. Private Declare Sub Sleep Lib 'Kernel32' (ByVal dwMilliseconds As Long) '-----Sleep函数 延时函数
  45. '将收到的内容串联出来,因为COM口是接到一个触发一次
  46. Private Sub SwichVar(ByVal nNum As Integer)
  47. Sleep (10)
  48. Varp = Null
  49. Varp = MSComm1.Input
  50. InByte(nNum) = Varp(0)

  51. End Sub
  52. Private Sub Form_Load()

  53. '这是调用串口
  54. MyCom MSComm1

  55. '使时钟有效
  56. Timer3.Enabled = True
  57. End Sub
  58. Private Sub MSComm1_OnComm()
  59. Dim datatemp1, datatemp2 As String
  60. Call Sleep(50)

  61. If MSComm1.CommEvent = 2 Then
  62. MSComm1.RThreshold = 0
  63. Dim i
  64. For i = 1 To MSComm1.InBufferCount
  65. SwichVar i
  66. buffer = buffer & Right('00' & Hex(InByte(i)), 2) & Chr(32)
  67. Next i
  68. Text1.Text=buffer '在这能看到接到的数据
  69. datatemp1 = Mid(buffer, 10, 5)
  70. datatempA = Val('&H' & datatemp1)
  71. TempText.Text = (datatempA - 4000) / 100
  72. datatemp2 = Mid(buffer, 16, 5)
  73. datatempB = Val('&H' & datatemp2)
  74. AverText.Text = datatempB / 100
  75. Adodc3.ConnectionString = cnn.ConnectionString
  76. Adodc3.RecordSource = 'select * from Table_temp'
  77. Adodc3.Refresh
  78. If Adodc3.Recordset.RecordCount > 0 Then
  79. Adodc3.Recordset.MoveLast
  80. End If
  81. cnn.Execute ('insert into Table_temp (温度值,湿度值)values('' & TempText & '','' & AverText & '')')



  82. MSComm1.RThreshold = 1

  83. End If
  84. End Sub
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
学习vb的心得体会
MSCOMM控件的一些说明
自己用VB编制的上位机(MSComm控件)
用VB6.0数字示波单片机实时监测数据的一种方法
MSCOMM串口控件数据接收方式
串口技术 BCD码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服