请教各位高手一个问题!用mscomm发送超过1000k的文本文件!

answerfish 2003-12-31 07:20:37
要用mscomm发送超过1000k的文件,我把mscom的outbuffersize和inbuffersize都调到最高,也只能实现一次发送32700,怎么连续发送1000k的文本文件呢?
...全文
264 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hhaikuotiankongg 2004-01-05
  • 打赏
  • 举报
回复
谁能告诉我出现上述情况的原因么 ?
是不是因为我的mscomm控件的属性值设置有问题?
hhaikuotiankongg 2004-01-04
  • 打赏
  • 举报
回复

是用二进制写的
写入的是文本文档的文件
接受文本的开头就有一段" ? "的字符
hanhuole 2004-01-04
  • 打赏
  • 举报
回复
也用二进制写入文件?并确定写入的都是正确的文字吗?
这些字符就是二进制码转成字符显示。
hhaikuotiankongg 2004-01-04
  • 打赏
  • 举报
回复
每隔一段就会出现的字符为" ? " 这是什么原因啊?
hhaikuotiankongg 2004-01-03
  • 打赏
  • 举报
回复
二进制的
hanhuole 2004-01-03
  • 打赏
  • 举报
回复
你mscomm控件的接受方式是什么?二进制还是字符串?
hhaikuotiankongg 2004-01-03
  • 打赏
  • 举报
回复
我用了下面的代码:
Private Static Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent
Case comEvReceive
Put #hRec, , mscomm1.input
End Select
End If
End Sub
结果每从缓冲区收到一段数据的时候就会自动加入一段空白字符,这是为什么啊?
hanhuole 2004-01-02
  • 打赏
  • 举报
回复
大哥,缓冲区的大小是有限的,如果你想收到全部文件请随收随存。
例如下面的代码,当然这只是一个比喻。
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
脆皮大雪糕 2004-01-02
  • 打赏
  • 举报
回复
分块发送!!以前我学硬件接口的时候,书上好像说过,rs232进行数据传输的时候一个数据报不能太长,否则可能因为通讯两端clock信号的误差累积产生数据不同步的问题,好像是这样吧,呵呵,东西都还给老师了只有模糊印象
answerfish 2004-01-02
  • 打赏
  • 举报
回复
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 Sub



Private Sub Command2_Click()

CommonDialog2.Filter = "All Files (*.*)|*.*|Text Files (*.txt)|*.txt"
CommonDialog2.ShowSave

hRec = FreeFile
Open CommonDialog2.FileName For Binary As #hRec
Put #hRec, , buffer
Close #hRec
End Sub


这是我用来接收数据的程序(包括OnComm事件用来接收数据到缓冲区,Command2_Click用来保存缓冲区的数据到文件中),现在发送一个15k的文本文件只能收到一个1k的文本文件,而且打开文件后什么也看不到,谁能帮我解决这个问题啊?
hhaikuotiankongg 2004-01-01
  • 打赏
  • 举报
回复
恩?对于楼上的问题,用LF& = LOF(hSend) 其中hSend是文件号 ,LF&用来存放hSend文件的长度,就可以设置控制发送结束了啊! 分块发送和重新整合具体源代码是如何啊?请赐教!
hanhuole 2004-01-01
  • 打赏
  • 举报
回复
关于楼上的问题,只要你会读写文件就很简单。发送端安顺序读取,接收端按顺序写入文件。需要多说吗?具体源码我现在没有。
lazygod 2003-12-31
  • 打赏
  • 举报
回复
同意楼上。假如最大1000k达到你的要求,下一次你发2000k怎么办?
hanhuole 2003-12-31
  • 打赏
  • 举报
回复
将文件以二进制方式读入,分块发送。在另一端重新整合。

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧