您现在所在的是:

电脑编程

回帖:1个,阅读:1779 [上一页] [1] [下一页]
938
dq_zcm
文章数:12
年度积分:50
历史总积分:938
注册时间:2005/1/25
发站内信
发表于:2005/3/9 11:01:00
#0楼
通讯要求:
目前有一设备与PC通讯,采用异步通讯方式,流控制采用软交握(设备当缓冲区满时发送“19”通知PC停止发送,当缓冲区空出后发送“17”通知PC继续发送);通讯数据为文本信息;开发平台VB6.0。
出现的异常情况:
本人采用的VB6.0写的程序,通过了两种方案,但都遇到了问题;
第一方案:
采用的方式为,Oncomm事件触发发送和停止;当发生事件后,程序接收端口数据,并分析数据,根据数据“17”或“19”来控制发送,若为“19”就将程序置于一死循环,等待“17”的到来,当“17”到来后,跳出循环,继续发送数据。
第二方案:
直接发送,将串口的Handshaking 属性置于软交握

以上两个方案都出现一样的情况(在多设备测试都一样,排除设备问题),正常传输中(也有启停传输现象,证明功能已经实现)突然停止传输,无法再次恢复传输。无任何停的规律,属于随机停止。

分析:
一、估计是串口未收到恢复发送的指令,数据丢失
二、但按照第二方案来讲,无接收数据的功能,全由Mscomm控件来实现,应该没问题。但一样出现停止传输无法恢复现象

大哥,能帮忙解决吗?快!

938
dq_zcm
文章数:12
年度积分:50
历史总积分:938
注册时间:2005/1/25
发站内信
发表于:2005/3/9 11:01:00
#1楼
'=========发送文件事件================
Public Sub 发送文件(Filename As String)
Dim temp As String, k As Byte, textline As String

'初始化端口

初始化端口 端口参数()

Form1.ProgressBar1.value = 0 '清空进度条

temp = Filename
Do While InStr(temp, "\") <> 0
temp = Mid(temp, InStr(temp, "\") + 1)
DoEvents
Loop
Form1.StatusBar1.Panels(2).Text = "发送文件:" & temp
Open Filename For Input As #1
文件总字符数 = 0
Do While Not EOF(1)
temp = Input(1, #1)
文件总字符数 = 文件总字符数 + 1 '获得总字符数
DoEvents
Loop
Close #1
temp = ""

Open Filename For Input As #1
Do While Not EOF(1)

 Do While 传输控制指令 = False '控制传输启停
   Form1.Shape2.FillColor = RGB(0, 0, 0)
   DoEvents
 Loop
 
 textline = Input(1, #1)
 
 Form1.Shape2.FillColor = RGB(255, 0, 0)
 
 k = Asc(textline) '获取当前字符的ASCII值
 
 textline = UCase$(textline) '转换当前字符中的字母为大写字母
 
 Form1.MSComm1.Output = textline '将字符发送到端口发送取
 
 当前字符数 = 当前字符数 + 1
 
 If k <> 10 Then
    temp = temp & textline
 Else
   Form1.Text1.Text = Form1.Text1.Text & temp & Chr(13) & Chr(10)
   temp = ""
 End If
 Form1.MSComm1.InBufferCount = 0
DoEvents
Loop
Close #1
结束端口
End Sub
'=========发送文件事件结束============

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

31.2002