请教大家,我使用spcomm空间,在串口结束交换机的报告,每条报告是以02H开始,以03H结束。在该条报告结束之后,我调用解析子程序,把统计报告分解,然后把分解后的数据送入oracle数据库。我使用的连接方式是ado。请问我不稳定的原因可能出在哪儿呢?另外,我使用交换机自带的观看报告的软件,都很稳定。请问,是不是单线程的原因(不一定,大家不要看了这句话就说一定是单线程的原因啊)?倘若我把这个程序改为三个线程的一个线程接收并缓存数据,一个线程使用richedit在屏幕上显示,同时另外一个线程用于分解数据和入库,其中接收数据为主线程,每当接收完一条缓存后,call其他两个线程,同时自己还可以继续接收数据。另外,还有一点,每条报告我都把它分解为多行数据,我是解析完一行送数据库一条。大家觉得是这样好呢,还是解析完所有行数据后再集中送往数据库好呢?

解决方案 »

  1.   

    一个线程接收并缓存数据,richedit在屏幕上显示,同时另外一个线程用于分解数据和入库。
    我感觉分这两个线程比较还些,线程多了不好管理!
      

  2.   

    不稳定的表现是经常自动退出,接收方式是被动接收,频率是不固定,有时15分钟才一条,有时是每秒3、4条,有时一条为1k左右,有时一条为12k左右(最大),但每秒最大不会超过32k的数据接收。另外,还有一个问题,我得程序对数据分解原来是写入到硬盘上,然后再读取硬盘上生成的文本文件进行分解的,使用了writeln读一行处理一行的处理方式。现在我不想把它写到硬盘上而是缓存在内存中(为了减少IO加快处理速度),同时仍然能够以writeln这样的方式处理,请问怎么样把每条数据以文本文件的形式缓存在内存中?
      

  3.   

    每条报告是以02H开始,以03H结束,这里有些问题,每条数据的长度是不固定的,中间是否会出现这两个数据呢?
    对于串口通讯,站用的系统资源很少,用单线程不会有什么影响,并且SPCOM可以自动建立线程。
    使用一个STRING接收就足够了吧!
      

  4.   

    02H和03H是ascii码规定的传输开始和结束字符,决不会在中间出现,可以参看rfc文档。