VB 5.0 Mscomm 数据传输问题?

WJS 2000-01-04 12:41:00
在使用Mscomm控件进行串口数据通信时存在一个问题,Mscomm设置outbuffersize=8200,inbuffersize=8000,settings="2400,e,8,1",定义字节数组dim bytearray(8100) as byte之后,从文件取数据保存到bytearray中,再用mscomm1.output=bytearray就会出现问题。
现象:用调试工具观察发现,outbuffercount在从8100byte降到6000byte左右时,突然变为0,在接收方发现数据只传了大约2000byte,也就是说数据有丢失。最后只得用循环进行单字节发送,坚决了上一个问题,但是上一个问题的根源尚为坚决,希望能得到同行的帮助!
...全文
287 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
gafei 2000-11-12
  • 打赏
  • 举报
回复
sorry 粘错了 very very sorry!!^O^
gafei 2000-11-12
  • 打赏
  • 举报
回复
可以的,只要两端通信格式一样就可以了。我用机连过,没问题的!m使之为一,S为零 ,但由于RS232为负逻辑,显示的波形相反!! 有问题可以和我联系
WJS 2000-01-07
  • 打赏
  • 举报
回复
感谢大家!现在问题已基本解决,我用了一个循环,每次向缓冲区送一个字节,也就是在系统清除缓冲区已前,保证缓冲区的数据全部传送完毕(大约有4-5秒时间),这样就不会出现数据丢失,虽然程序实现不是令人非常满意。但毕竟不失为一种方法。
API方法,用文件传输的思想去实现,我还未尝试,希望大家有空继续探讨!
upstream 2000-01-07
  • 打赏
  • 举报
回复
用API写一段通讯代码。
lqjin 2000-01-06
  • 打赏
  • 举报
回复
无MODEM,流控就没用了。
将发送缓冲区容量设大一些,如2K.
不要一次写入,可一次写入1K byte, 下次写时
检测一下发送缓冲区内未发送的字节数,
根据情况再次写入!
lqjin 2000-01-06
  • 打赏
  • 举报
回复
要设置流控制,RTS或Xon/Xoff,一般Xon/Xoff比较好,
不过需要软件控制,比较麻烦,但灵活性大!
WJS 2000-01-06
  • 打赏
  • 举报
回复
DELPHI也有类似情况,难道WINDOWS API的是这样设计的?
WJS 2000-01-06
  • 打赏
  • 举报
回复
RTS或XON/XOFF是比较好,但是对方是一台监控设备,在设计前对方没有任何握手协议。
其次,我想握手协议只是检测与对方通信状态,其确定的是数据是否发送,以及数据在何时发送,对于OUTBUFFER的处理应该没有影响。
zyb 2000-01-06
  • 打赏
  • 举报
回复
这个问题我在用DELPHI编程时也遇到过,设置为"9600,N,8,1"时最多只能接收到6000个字节左右的数据,其余连续发送的数据被忽略.所以我估计MSCOMM控件的数据发送和接收是限时操作的!
WJS 2000-01-05
  • 打赏
  • 举报
回复
我是用的一台机器调试,将输出线和输入线短接,所以波特率和机器应该没问题。
我是针对这一问题专门调试OutBuffer,在数据传输完之前没有再输数据。
kxy 2000-01-05
  • 打赏
  • 举报
回复
是不是你的程序的问题? 没有传完就又向OutBuffer写数据?
kxy 2000-01-05
  • 打赏
  • 举报
回复
是不是有什末参数设置不对,
两端都是"9600,e,8,1"吗?
WJS 2000-01-05
  • 打赏
  • 举报
回复
将波特率调高以后,如设成"9600,e,8,1",能传输更多的数据,大约能传输6000Byte,似乎VB5.0 Mscomm的数据传输是定时的,在规定的时间内(大约有几秒钟)不能将OutBuffer中的数据传输完,Mscomm就要将Outbuffer清除,而不是将数据传输完, 奇怪!。
kxy 2000-01-05
  • 打赏
  • 举报
回复
:( 想不出了
kxy 2000-01-04
  • 打赏
  • 举报
回复
把波特率调高试试,设成"9600,e,8,1"

7,763

社区成员

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

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