以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  发现一个奇怪的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86260)

--  作者:ljh29206
--  发布时间:2016/6/14 11:44:00
--  发现一个奇怪的问题
If Vars("完成的闪烁灯次数") < 60 Then
    If Vars("完成的闪烁灯号") > ""  Then
        If  Vars("完成的闪烁灯号").CONTAINS(" FF 00") Then
            Functions.Execute("灯输出控制",Vars("完成的闪烁灯号").SubString(0,11) & " 00 00")
            Vars("完成的闪烁灯号") = Vars("完成的闪烁灯号").SubString(0,11) & " 00 00"
            Vars("完成的闪烁灯次数") = Vars("完成的闪烁灯次数") +1
        Else
            Functions.Execute("灯输出控制",Vars("完成的闪烁灯号").SubString(0,11) & " FF 00")
            Vars("完成的闪烁灯号") = Vars("完成的闪烁灯号").SubString(0,11) & " FF 00"
            Vars("完成的闪烁灯次数") = Vars("完成的闪烁灯次数") +1
        End If
    End If
Else
   If Vars("完成的闪烁灯号") > ""  Then
    Functions.Execute("灯输出控制",Vars("完成的闪烁灯号").SubString(0,11) & " 00 00")
    Vars("完成的闪烁灯号") = Nothing
    MyTimers("已经完成的灯闪烁").Enabled = False
    End If
End If

以上的代码 放在计时器里面,当计时器开始后

如果在这个期间 触发异步的语音朗读,

以上的代码 会卡住, 直到第一次的语音朗读完成再继续,

但是经过第一次后,接下来的几次语音朗读 都不会导致  代码 卡住。  
不知道各位有没试过这个情况?

[此贴子已经被作者于2016/6/14 11:45:32编辑过]

--  作者:大红袍
--  发布时间:2016/6/14 12:16:00
--  

不应该,把代码改成输出当前时间,做个具体实例发上来测试。

[此贴子已经被作者于2016/6/14 12:15:47编辑过]

--  作者:ljh29206
--  发布时间:2016/6/14 12:23:00
--  
测试了,
不是语音朗读问题

      If  Vars("完成的闪烁灯号").CONTAINS(" FF 00") Then
            Functions.Execute("灯输出控制",Vars("完成的闪烁灯号").SubString(0,11) & " 00 00")
            Vars("完成的闪烁灯号") = Vars("完成的闪烁灯号").SubString(0,11) & " 00 00"
            Vars("完成的闪烁灯次数") = Vars("完成的闪烁灯次数") +1
        Else
            Functions.Execute("灯输出控制",Vars("完成的闪烁灯号").SubString(0,11) & " FF 00")
            Vars("完成的闪烁灯号") = Vars("完成的闪烁灯号").SubString(0,11) & " FF 00"
            Vars("完成的闪烁灯次数") = Vars("完成的闪烁灯次数") +1
        End If
完全就是这段代码的问题

写入串口缓冲区的时候, 设备接收的信号不知道怎么处理!
老是会出现处理缺失,导致 灯 的开关信号不能 收到, 

直接导致 灯 卡住了!

请问袍哥 除了 这个方法  还有没其他的办法  做到 灯闪烁
[此贴子已经被作者于2016/6/14 12:23:33编辑过]

--  作者:大红袍
--  发布时间:2016/6/14 12:37:00
--  
 你要发送什么信息做闪烁啊。弹出具体的值,看合成的值有没有问题啊
--  作者:ljh29206
--  发布时间:2016/6/14 13:39:00
--  
值没有问题的 ,单独发送都可以

"01 05 00 07 FF 00"   开
"01 05 00 07 00 00"  关
(数组写入 已经进行处理)

 用  System.Threading.Thread.Sleep(300),能够有效间隔开。

请教 如何使 通过代码让灯发生闪烁,但不会导致系统挂起!
另外开一条线程的行否?
改怎么写呢
[此贴子已经被作者于2016/6/14 13:40:04编辑过]

--  作者:ljh29206
--  发布时间:2016/6/14 14:06:00
--  
袍哥 

如何判断 串口 缓冲区的 数据 已经被 设备处理掉?

--  作者:大红袍
--  发布时间:2016/6/14 14:27:00
--  

1、你发送的内容,是否正确?

 

2、加大发送间隔执行是否正常?

 

3、参考 http://www.foxtable.com/help/topics/1977.htm