none
Serialport 和 ProgressBar RRS feed

  • 问题

  • 之前使用Serialport来传输文件,一切正常。

    现在想加上ProgressBar来显示文件传输的进度,但是一直没法做到这点,ProgressBar一直没有任何显示。

    在BackGroundWorker内,用的是Serialport.Write(Byte[], Int32, Int32)传输文件,不过程序是直接传完,然后ProgreeBar却是一动未动。

    同样也使用过:

    Private Sub BackgroundWorker1_ProgressChanged(sender As System.Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged
            ProgressBar1.Value = e.ProgressPercentage
        End Sub

    但还是一样的情况,在想是不是Serialport在传输的时候程序无法判断还有多久能传完或传输了多少?又或者在Serialport.Write的方法时候,只有等它全部写完才会进入下一个工作点,因此直接使用Progresschanged事件不行?

    还打算试一下将文件分成几等分传输,然后每经过一等分ProgressBar进度条增加一段,但是Serialport.Write(Byte[], Int32, Int32)这个方法中,后两个值的和不能大于第一个,所以目前还没想到如何分等份传文件,另外也不清楚假使用了分等份传输会又出现什么情况,如文件传输出错或者不成功?

    希望大家能给我些自己的观点和想法,或者已经有过类似的经验,请指导我下,谢谢!

    2013年8月5日 9:54

答案

  • 好的!

    还是使用Serialport.Write(Byte[], Int32, Int32)方法,然后把要传输的文件分成你想要的等份,progressbar的最大值设置成传输文件的长度,用For语句,每传完一个等份,使用progressbar的performstep方法完成同步进度条。

    在backgroundworker里面不能直接调用progressbar,可以直接加上语句:CheckForIllegalCrossThreadCalls = Fasle

    2013年8月6日 9:31

全部回复

  • 不好意思,是我自己对serialport还不够了解,现在已经解决这个问题了,谢谢。

    2013年8月6日 2:42
  • Hi,

    很高兴你的问题已经解决了。

    如果你能够把你的解决办法分享出来并标记为答案的话,就能够帮助更多拥有类似问题的人了。

    Regards.


    Carl Cai
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2013年8月6日 9:05
    版主
  • 好的!

    还是使用Serialport.Write(Byte[], Int32, Int32)方法,然后把要传输的文件分成你想要的等份,progressbar的最大值设置成传输文件的长度,用For语句,每传完一个等份,使用progressbar的performstep方法完成同步进度条。

    在backgroundworker里面不能直接调用progressbar,可以直接加上语句:CheckForIllegalCrossThreadCalls = Fasle

    2013年8月6日 9:31