CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

一个需要经验来回答的问题,请教高人

楼主asili(吃饱了-撑着)2001-07-11 21:05:38 在 Delphi / VCL组件开发及应用 提问

我有一项工程:程序要通过串口读数据,并且要将数据存入网络数据库中。现在分开作简单。因串口读数据很频繁,数据要及时存入数据库中,我想做成多线程,一个线程读串口,一个线程将数据存入数据库中。请问有谁做过吗?串口读出的数据用什么暂存供数据库线程读比较好,因该注意什么?  
        请大虾们明示!!!! 问题点数:29、回复次数:16Top

1 楼luhongjun(过江项羽)回复于 2001-07-11 21:10:35 得分 0

串口读数据有两种方式:1:查询方式。2:中断方式。  
  如果使用查询方式,应该做成多线程。使用中断方式不用了,他本身已经是多线程的了。  
  建议你使用MSCOMM32.OCX控件,比较简单。  
  Top

2 楼BlueTrees(蜗牛)回复于 2001-07-11 21:11:57 得分 0

我看着没必要,因为读和写是要同步的,并且是串行的,和单线程的有差别吗?或者你的理由?Top

3 楼asili(吃饱了-撑着)回复于 2001-07-11 21:32:35 得分 0

各位老大,我读串口使用中断方式,数据已读出来,中断方式自己管理多线程,我也不管。我是想  
  时程序除读串口外,另开一线程将数据存入数据库中。串口读出的数据用什么暂存供数据库线程读比较好?  
          谁能给点提示!!Top

4 楼snowglave(独孤九剑)回复于 2001-07-11 21:44:37 得分 0

用SPCOMM控件可以实现你的要求,关于该控件可以自已去找吧.Top

5 楼asili(吃饱了-撑着)回复于 2001-07-11 22:04:17 得分 0

可能是我没有讲清楚:  
  其实我主要是想问,用什么来暂存从串口读出来的一条一条的数据比较好,这样程序可以一边从串口中读出一条一条的数据(存到数据库中就是一条一条的记录),一边将数据存入数据库中。串口读出的数据为BARCODE,因为程序读串口时缓时急,所以我想将存数据库部分做成一单独线程。我想知道用什么来暂存读出的数据比较适合   。请教了!!!Top

6 楼liuchcn(michael)回复于 2001-07-12 01:07:24 得分 0

通常串口的速度远远比不上你把数据存入数据库的速度,而且它有缓冲的。  
   
  所以我觉得最好不要搞多线程,恐怕问题会很多。Top

7 楼oldfriend(并不陌生)回复于 2001-07-12 03:35:26 得分 0

问题好像不用那么复杂。如果你的通讯数据多,而且需要预处理,放在一个临时表里就可以啦。  
  然后满足条件写入总库(用Timer控件定时处理)。  
  Top

8 楼Hillside(河东河西)回复于 2001-07-12 04:34:22 得分 0

我现在忙活的一个项目和你的类似,不过读取串口和数据处理一共使用了2个程序.第一个程序读出串行数据后,放入共享缓存,然后向第二个程序发PostMessage.第二个程序有2个线程,主线程得到Message后,更改一个标志位通知另一个线程,这个线程负责到共享区去拿数据,但并不做长时间工作.如果某项工作耗时,则再通过PostMessage通知主线程去处理.如果第一个程序可以直接对第二个程序的副线程发Message,可能问题更简单.Top

9 楼asili(吃饱了-撑着)回复于 2001-07-12 07:54:46 得分 0

多谢各位老大好建议Top

10 楼asili(吃饱了-撑着)回复于 2001-07-12 09:45:54 得分 0

谁能给我讲的再详细一点的介绍吗?用到的具体的DELPHI   技术  
  真是不好意思,这么少分,我在开页加分。Top

11 楼Hillside(河东河西)回复于 2001-07-12 14:20:01 得分 29

如果你对我的方案感兴趣的话,我可以讲详细些.我今天刚到,积分较少,请帮助Top

12 楼LittleStar(牛牛)回复于 2001-07-12 15:16:09 得分 0

可能单线程就可以了  
  用一个数组缓冲吧Top

13 楼bokei(一夜好眠)回复于 2001-07-12 17:41:01 得分 0

用队列暂存串口读出来的数据.  
  Delphi里有TQueue这个类.  
  Top

14 楼MrGun(甘)回复于 2001-07-12 19:13:49 得分 0

建议用两个线程,一个读,一个写,中间用一个TList将数据保存下来,这样不会造成数据混乱Top

15 楼asili(吃饱了-撑着)回复于 2001-07-12 21:28:31 得分 0

请Hillside()帮忙,请去http://www.csdn.net/expert/topic/192/192170.shtm   拿分  
  多谢各位的回答,我出100分请多提建议,Top

16 楼asili(吃饱了-撑着)回复于 2001-07-12 22:20:14 得分 0

我用单线程,串口数据较慢时还可以,串口输入数据很快时,每秒>5,程序很容易挡住,因为一台PC上加了8把读马枪,数据时多时少,用多线程可以避免挡住吗?我没有经验。。。Top

相关问题

  • 请 将web的DataGird导到Excel 的有经验的人回答
  • 需要有经验的高人指点。
  • 问个简单问题,但可能需要有经验的高手才能回答
  • 文件夹共享问题(适合有网管经验的人回答)
  • 什么样的公司需要经验不多的人?119分!
  • 刚开始接触vc,请有经验之人进来回答个比较简单的问题。
  • 需要一句话回答的问题!!!!!
  • 关于vc++6.0和GDI+的问题,有经验的来回答
  • 这里需要你的经验
  • 这里需要你的经验,50分

关键词

  • 数据
  • 线程
  • 数据库
  • 多线程
  • 控件
  • 中断
  • 串口
  • 读出
  • 存入
  • 程序

得分解答快速导航

  • 帖主:asili
  • Hillside

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo