标题:debug.print的疑惑
取消只看楼主
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
 问题点数:0 回复次数:5 
debug.print的疑惑
大虾们
      你们好!
      小弟有一个小程序,在Byte_R_W.bas模块中一定要有debug.print才能正常运行,打包或者生成exe后则无法运行。
      请各大虾帮忙解惑,不胜感激
     附上程序
监控1.rar (3.35 KB)
搜索更多相关主题的帖子: print debug 
2010-08-09 18:21
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
得分:0 
BZ:不好意思从新上传,请赐教,谢谢
监控.rar (5.29 KB)

2010-08-09 21:45
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
得分:0 
这是一个监控三菱PLC的一个小程序,就是测试时没有debug.print这句话,则不能正常通信即收发信息(即程序不报错也无法正常监控);
打包或者生成exe后运行,就与测试时没有写debug.print一样的状况(不能正常通信即收发信息(即程序不报错也无法正常监控));
2010-08-10 07:16
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
得分:0 
以下是引用风吹过b在2010-8-10 10:54:48的发言:

你把 debug.print 这行,换成
DoEvents
试试
------------
个人感觉是不是因为 debug.print 执行时,会让程序有一个时间来缓冲其它数据.
换成 DoEvents 是手动让程序缓冲一下其它数据.
换成doevents后,程序不能读取资料,
附件图1为用debug.print时运行的画面


图2为不用debug.print或者用doevents时运行的画面,生成exe时也是这个样子
2010-08-11 10:05
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
得分:0 
程序代码:
Public Function Byte_Read(Comm As MSComm, sAddr As String) As String
  Dim STX As String
  Dim Cmd As String
  Dim Addr As String
  Dim ByteNum As String
  Dim ETX As String
  Dim CheckString As String
  Dim CheckSum As String
  Dim CmdCode As String
  Dim Sum As Integer
  Dim n As Integer

    Dim delay_time As Double
    Dim delay_start As Double
    Dim delay_chk As Double
  Dim tmp As String

 
  STX = Chr(2)
  Cmd = "0"
  Addr = UCase(sAddr)
  ByteNum = "03"
  ETX = Chr(3)

 
  CheckString = Cmd + Addr + ByteNum + ETX
  For n = 1 To Len(CheckString)
    Sum = Sum + Asc(Mid$(CheckString, n, 1))
  Next n
  CheckSum = Right$(Hex(Sum), 2)

  CmdCode = STX + Cmd + Addr + ByteNum + ETX + CheckSum
  Comm.PortOpen = True
  Comm.Output = CmdCode
'DoEvents
'Debug.Print "CMDCODE="; CmdCode


 ' Do While Len(tmp) < 6
    ' tmp = tmp + Comm.Input
    ' Debug.Print "tmp="; Comm.Input
    ' n = n + 1
     'If n >= 100 Then
       ' Comm.PortOpen = False
       'Exit Function
     'End If
   'Debug.Print
    'DoEvents
 ' Loop


 delay_time = 0.1
    delay_start = Timer
    Do
        delay_chk = delay_start + delay_time
    Loop Until Timer > delay_chk

     tmp = Comm.Input
  tmp = Mid$(tmp, 6, 2) + Mid$(tmp, 4, 2) + Mid$(tmp, 2, 2)

  Byte_Read = Hex2Bin(tmp)

  Comm.PortOpen = False
End Function


各位大虾: 谢谢你们的帮忙;
          近日XD在一本台湾的书上看到了一些例子,后将代码修改后,测试运行速度快了很多,运转也正常;
           但XD还是想不通为何旧程度里要用debug.print才能运行,谢谢


[ 本帖最后由 tanyk 于 2010-8-14 09:46 编辑 ]
2010-08-14 09:43
tanyk
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2009-8-28
得分:0 
回复 18楼 风吹过b
谢谢
2010-08-14 15:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-315239-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.132550 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved