要用mscomm发送超过1000k的文件,我把mscom的outbuffersize和inbuffersize都调到最高,也只能实现一次发送32700,怎么连续发送1000k的文本文件呢?

解决方案 »

  1.   

    恩?对于楼上的问题,用LF& = LOF(hSend) 其中hSend是文件号 ,LF&用来存放hSend文件的长度,就可以设置控制发送结束了啊! 分块发送和重新整合具体源代码是如何啊?请赐教!
      

  2.   

    分块发送!!以前我学硬件接口的时候,书上好像说过,rs232进行数据传输的时候一个数据报不能太长,否则可能因为通讯两端clock信号的误差累积产生数据不同步的问题,好像是这样吧,呵呵,东西都还给老师了只有模糊印象
      

  3.   

    Private Static Sub MSComm1_OnComm()
    Dim buffer As Variant
    If commflag <> 2 Then
    Select Case MSComm1.CommEvent
    Case comEvReceive
     buffer = buffer & MSComm1.Input
    End Select
    End If
    End SubPrivate Sub Command2_Click()CommonDialog2.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt"
    CommonDialog2.ShowSavehRec = FreeFile
    Open CommonDialog2.FileName For Binary As #hRec
    Put #hRec, , buffer
    Close #hRec
    End Sub
    这是我用来接收数据的程序(包括OnComm事件用来接收数据到缓冲区,Command2_Click用来保存缓冲区的数据到文件中),现在发送一个15k的文本文件只能收到一个1k的文本文件,而且打开文件后什么也看不到,谁能帮我解决这个问题啊?
      

  4.   

    大哥,缓冲区的大小是有限的,如果你想收到全部文件请随收随存。
    例如下面的代码,当然这只是一个比喻。
    Private Static Sub MSComm1_OnComm()
    Dim buffer As Variant
    If commflag <> 2 Then
    Select Case MSComm1.CommEvent
    Case comEvReceive
        Put #hRec, , buffer
    End Select
    End If
    End Sub
      

  5.   

    我用了下面的代码:
    Private Static Sub MSComm1_OnComm()Select Case MSComm1.CommEvent
    Case comEvReceive
        Put #hRec, , mscomm1.input
    End Select
    End If
    End Sub
    结果每从缓冲区收到一段数据的时候就会自动加入一段空白字符,这是为什么啊?
      

  6.   

    你mscomm控件的接受方式是什么?二进制还是字符串?
      

  7.   

    谁能告诉我出现上述情况的原因么 ?
    是不是因为我的mscomm控件的属性值设置有问题?