软件注册站
热情软件屋

 
利用MSComm控件接收文件并不完全
编号: QA004184    
建立日期: 2001年5月10日 最后修改日期: 2001年5月10日
所属类别: Visual Basic - 网络与通信
   
    操作系统:WIN
    编程工具:VB
    问题:我在用VB中的MSComm控件实现文件的传送与接收时,采用事件驱动的通讯处理方式,利用MSComm控件的CommEvent属性,当CommEvent属性值为comEvReceive时,接收文件,但用PUT语句写入文件后,再打开文件发现文件接收并不完全,也不知是什么原因?(用文本框控件接收文件正常且完整)由于是初学者,实在想不通,特此请教,望答复,谢谢!!!
    主叫机:笔记本电脑MMX200 WIN95 VB6.0
    被叫机:台式电脑MMX166 WindowsMe VB6.0
    通讯波特率9600
    
    Private Sub MSComm1_OnComm() '设置缓冲区大小为1024,属性RThreshold=2
    ' OnComm 事件被用于捕获 communications 事件及错误。
    Dim EVMsg$ '存放事件消息的字符串
    Dim ERMsg$ '存放错误消息的字符串
    
    '根据事件消息进行分支
    Select Case MSComm1.CommEvent
     '以下为事件消息
     Case comEvReceive
     Dim N As Long
     Dim Buffer As Variant
     Dim Var As Variant
    'txtReceived为接收信息的文本框,FILESTART为文件传送的开始标志,在文件内容传送开始前发送出,当文本框中出现FILESTART时,就打开接收文件接收
    
     If InStr(1, txtReceived.Text, "FILESTART") <> 0 Then
     N = MSComm1.InBufferCount
     Buffer = MSComm1.Input
     Dim hSend
     Dim Temp As String
     hSend = FreeFile
     Temp = Me.Dir.Path + "\" + GetFileName(txtReceived.Text)
    
     Open Temp For Binary Access Write As hSend
     'Var = Space(N)
     ' Var = Buffer
     'txtSend.SelStart = Len(txtSend.Text) ’用另一文本框接受文件,文本框显示出完整的文本文件
     'txtSend.SelLength = 0
     'txtSend.SelText = Buffer
     Put hSend, , Buffer ’写入文件后,打开文件不全
     Close hSend
    
     Else
     ’显示其他信息,如:Modom回应信息,通话聊天信息等
     Buffer = MSComm1.Input
     txtReceived.SelStart = Len(txtReceived.Text)
     txtReceived.SelLength = 0
     txtReceived.SelText = Buffer
     End If
    .......
    
    
    另外,请问
    1.利用MSCcomm控件可传送接收扩展名为哪些的文件(常用)?
    2.接收文本文件与二进制文件时处理有无不同?
    3.接收文件的大小是否有限制?
    对于接收文件的代码请帮助完善,谢谢!!!(ljx)
   
    1.利用MSCOMM控件可以发送和接收任何文件的类型。
    2.接收文本文件和二进制文件有一定的区别,接收二进制文件时用Mscomm1.Input读入的变量需用Variant类型的变量,而文本文件可以用字符型变量,另外InputMode属性应设置相应的文本方式或二进制方式。(参考QA000388 "MSComm无法在中文Windows 95下传递二进制数据"
    3.接收文本无大小限制。
    4.我看了你的程序发现打开文件后Put语句中省略了记录号,当连续存数据时记录号是自动加的,但当文件关闭后再次打开时,默认的记录号为1,存储文件不完整的原因可能在此。接收到文件头识别字符时打开文件,接收中途不要关闭文件,直到接收到文件结束符(Mscomm1.EOFEnable事件发生)才能关闭文件。
    以上意见不一定正确,仅供参考。
    
    相关书籍:
    《利用Visual Basic实现串并行通信技术》

    

此问题由hsy回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 网络与通信, network, communicate, com, com1, com2

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio