C#中采用serialPort组件中的write()和DataReceiced()方法进行串口通信串口速率设为9600,还设置了portname,别的初始设置没有.前段时间感觉传感觉传输速率挺快,今天好像不行了:一万个字母传输时间有两分多钟;还有就是内存占用为25M左右,,问题两个,一是,为了提高传输速率,是不是要设置写入及读取缓存等参数??         二是,内存占用是不是有些高,需要释放资源,,如何释放.串口不用的时候是不是要关掉
              用的时候再打开,我是一直开着的.

解决方案 »

  1.   

    要是觉得速度慢了,就提高速率吧。一般9600的速度只用在普通的信息交换上,大量的单向数据传输要用更高的串口速率来传输。至于释放资源,串口对象本身应该不缓存数据的,所以应该是你的字符串变量占用的资源,如果你是直接使用的+=来拼接字符串,占用的资源肯定比StringBuilder的大。
      

  2.   

    Baudrate設更高,可增加速度。
    另外ReaderBufferSize及Write也設高一點,ReadThreshold設開一點
    一次讀多再觸發事件,都有幫助。
      

  3.   


    其中,ReadThreshold設開一點
    一次讀多再觸發事件    可以再解释一下吗??
      

  4.   

    不是虚拟串口,实际的串口,,,代码很简单,发送端,用write()方法..接收端用,,DataReceiced()事件...
      

  5.   

    1. 可以适当提高BufferSize,和Baudrate。 但这两个设置都是在实际环境中存在上限的。过了这个限度通信就很不可靠。 一般以COM连接的设备通信速率上限为界限2. 可以使用GZipStream对你要传送的流进行压缩。 这样可以在原有的通信速率上,传输2-5倍的数据,可变相提高通信速率。 
      

  6.   


    第二种办法不是面向的串口设备,只是面向两端都是你的.net程序的情况。
      

  7.   

    BufferSize的大小是个什么概念 ,,比如说,与要传输的字节数,有什么关系??怎么设比较合适。。