J jinms Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #1 现在要做一个小程序,在一个窗口里有一个TIMER控件,每隔一秒从COM口读取一次数据,然后按指定的保存时间(比如2分钟)保存一次,请问该怎么做啊,从来没做过多线程,哪位大侠帮帮忙给个例子,或者给个思路,急啊,请帮帮忙,先谢谢了。只有15分了
现在要做一个小程序,在一个窗口里有一个TIMER控件,每隔一秒从COM口读取一次数据,然后按指定的保存时间(比如2分钟)保存一次,请问该怎么做啊,从来没做过多线程,哪位大侠帮帮忙给个例子,或者给个思路,急啊,请帮帮忙,先谢谢了。只有15分了
J jinms Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #2 现在要做一个小程序,在一个窗口里有一个TIMER控件,每隔一秒从COM口读取一次数据,然后按指定的保存时间(比如2分钟)保存一次,请问该怎么做啊,从来没做过多线程,哪位大侠帮帮忙给个例子,或者给个思路,急啊,请帮帮忙,先谢谢了。只有15分了
现在要做一个小程序,在一个窗口里有一个TIMER控件,每隔一秒从COM口读取一次数据,然后按指定的保存时间(比如2分钟)保存一次,请问该怎么做啊,从来没做过多线程,哪位大侠帮帮忙给个例子,或者给个思路,急啊,请帮帮忙,先谢谢了。只有15分了
天 天河流星 Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #4 1. 你要做的是从串口(COM口或者说RS232口)读数据并保存吗? 2. 为什么要用线程呢? 3. 串口的数据交换的速度很慢的, 不需要使用线程就能读取并保存; 4. 你打算编写串口通讯方面的程序, 需要多了解一些相关的技术基础; 5. 当然也要有程序设计和delphi编程的一些基础技术, 例如数据、文件... 6. 努力吧, 总有一天你会发现其实什么都很简单的!
1. 你要做的是从串口(COM口或者说RS232口)读数据并保存吗? 2. 为什么要用线程呢? 3. 串口的数据交换的速度很慢的, 不需要使用线程就能读取并保存; 4. 你打算编写串口通讯方面的程序, 需要多了解一些相关的技术基础; 5. 当然也要有程序设计和delphi编程的一些基础技术, 例如数据、文件... 6. 努力吧, 总有一天你会发现其实什么都很简单的!
J jinms Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #5 TO:天河流星 谢谢大侠教诲,是这样的,我的程序在每秒从COM口读数据,然后保存到数据库中,我发现这样做在保存时,容易丢数据,比如测试取半个小时的数据,每三分钟保存一次,大侠看看有什么好方法啊
天 天河流星 Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #6 1. 除非你要把数据从伊拉克保存到美国, 否则读取并保存串口的数据是不会丢失的; 2. 一般的串口控件都有事件驱动(有数据可读的时候), 读数据很简单的; 3. (单线程的程序)当你保存数据的时候(可能需要几毫秒)也不会丢失串口突然传来的数据的, 因为串口的系统底层有接收的缓冲区可以保证数据不会丢失的;
1. 除非你要把数据从伊拉克保存到美国, 否则读取并保存串口的数据是不会丢失的; 2. 一般的串口控件都有事件驱动(有数据可读的时候), 读数据很简单的; 3. (单线程的程序)当你保存数据的时候(可能需要几毫秒)也不会丢失串口突然传来的数据的, 因为串口的系统底层有接收的缓冲区可以保证数据不会丢失的;
J jinms Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #7 呵呵,大侠真幽默,那我就在定时读数据的Timer控件的事件中每隔三分钟保存一次数据吗?
天 天河流星 Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #8 1. 你使用什么方法读串口(COM)的数据的? 为什么要使用timer呢? 2. 当然,你也可以使用你熟悉的timer控件工作的, 如果你的数据量不大, 多少时间保存一次数据是和下面这三个变量相关的: 2.1. 串口数据量的大小(或者速度), 例如最频繁的时候: 多少字节数/分钟; 2.2. 你自己定义的临时保存数据的缓冲区大小(不知道你是否能理解); 2.3. 其他应用对实时数据的需求(上级规定数据库的实时性需求);
1. 你使用什么方法读串口(COM)的数据的? 为什么要使用timer呢? 2. 当然,你也可以使用你熟悉的timer控件工作的, 如果你的数据量不大, 多少时间保存一次数据是和下面这三个变量相关的: 2.1. 串口数据量的大小(或者速度), 例如最频繁的时候: 多少字节数/分钟; 2.2. 你自己定义的临时保存数据的缓冲区大小(不知道你是否能理解); 2.3. 其他应用对实时数据的需求(上级规定数据库的实时性需求);
J jinms Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #9 我用的是ComPort2.63,每次向下位机发送读取数据的命令,下位机响应返回数据,然后我的程序读取并处理每次最多返回十二个字节,测试时要求每秒返回一次数据(测速度),所以用Timer控件,
A a_Fung Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #10 如果 在 内存中先保存数据 就怕会 断电或死机的情况发生。可以看出你的数据量并不大可以考虑 实时写入数据库。
X xrs Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-02 #12 不应该用Timer,无论你如何设置Timer定时都有可能丢失数据,应该用控件的OnRecive事件,在响应事件的同时,将数据写入数据库.为什么每秒/实时写数据库不好?你不用给我分,但建议给天河流星多加点分,他说的很好.
不应该用Timer,无论你如何设置Timer定时都有可能丢失数据,应该用控件的OnRecive事件,在响应事件的同时,将数据写入数据库.为什么每秒/实时写数据库不好?你不用给我分,但建议给天河流星多加点分,他说的很好.
V VictorWoo Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-06 #14 1.定义一个array of char做为接收队列 2.每3分钟(可定),触发一个timer事件,保存并清空 3.若array of char满,马上保存并清空
V VictorWoo Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-06 #15 另外我也有一问,在用超级终端的时候,用portmon监视,发现没有数据来的时候日志不滚动。我用不断地ReadFile则会产生一大堆日志。请问超级终端是怎么做到的?
J janker Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-09 #16 我也正在做一个类似的程序,485通信方式的,也是用的CPORT组件。单独一个线程进行串口数据读写,对各个设备进行轮询。线程里发一条查询,然后接收数据保存在一个全局变量里。自定义一个消息,接收到完整的数据后通知主线程进行数据处理。
我也正在做一个类似的程序,485通信方式的,也是用的CPORT组件。单独一个线程进行串口数据读写,对各个设备进行轮询。线程里发一条查询,然后接收数据保存在一个全局变量里。自定义一个消息,接收到完整的数据后通知主线程进行数据处理。
L lxw5214 Unregistered / Unconfirmed GUEST, unregistred user! 2005-11-09 #17 大家是怎么实现轮询的?我没用timer,不好用,我想要速度尽量快