我需要实现的是通过pc给下位机发命令,从中读取eeprom中的信息。下位机收到pc要求发送的命令以后,先发头字节(比如8个字节)给pc,pc收到后做校验,校验正确了再要求传实际的数据,实际数据有2k多,不正确的话就重发。这样反复有32次(共64k数据要发送),pc和下位机的baud是19200,这样需要20多妙的时间。在程序中应该怎么处理?我希望达到的目的是:比如按下一个command,让用户等待一段时间读取所有的信息。现在我单步调试可以实现。但是如果一直不停的读,就会出错。是不是一直读,串口的数据来不及接收呢?
在线等待!

解决方案 »

  1.   

    我做过的经验是,COM接受缓冲区的大小是达不到64K的,我曾经作到过最大的一次是16K数据,也溢出了。
    不过我后来的解决方法是一边接受,一边读进内存变量中,同时将缓冲区清空。这样就保证缓冲区不溢出。我当时使用的波特率是38400,楼主根据自己的实际参数更改一下。
    sub form_load()
    With Com1  '控件名
       If .PortOpen Then .PortOpen = False   '如果端口已打开,则先关闭
       .Commport = 1                  '选择串口1
       .RThreshold = 1                '接收缓冲区每收到每一个字符都会一个OnComm 事件
       .InputLen = 0                  '接收缓冲区中全部的内容
       .InputMode = comInputModeText  '数据传输模式为文本方式
       .Settings = "38400,n,8,1"      '波特率38400
       .Handshaking = 0               '硬件握手方式
       .InBufferCount = 0             '输入缓冲大小
       .PortOpen = True               '打开端口
    End With
    end sub