可靠地监控串口(Nortel CS1000)

时间:2011-02-04 20:51:59

标签: mysql linux logging serial-port

我有一个自定义python脚本,用于监控来自Nortel电话系统的通话记录。这个电话系统全天都处于极高的音量状态,并且开始出现一些记录可能会丢失。

有些人可能不喜欢这个,但我对以任何方式分享源代码或当前方法都不感兴趣。我宁愿从“新项目”的方法来考虑这个问题。

我正在寻找有关通过Linux上的串行端口可靠监控大量数据输出的最简单,最安全的方法的见解。我并不是限制任何特定的工具或语言,我想找出最适合做这项关键工作的方法。我很自在地解析数据并将其插入到mysql中,我们可以假设数据可以放到文本文件中。

谢谢

1 个答案:

答案 0 :(得分:1)

好吧,我将采用这种方式让2个线程(或进程)工作。

线程1 :读取线程

此线程除了从原始串行端口读取数据并将数据放入本地缓冲区/队列之外什么都不做(在内存中首选速度)。它什么都不应该做。根据串行连接的时钟速度,这应该很容易做到。

Thread2 :处理线程

此线程只是休眠,直到本地缓冲区中有数据要处理,然后读取并处理它。而已。

将它拆分为两个的原因是,如果一个忙(处理线程的MySQL中的一个块),它将不会影响另一个。毕竟,当OS缓冲串行端口时,缓冲区大小有限。

但话说回来,任何本地程序都可能比串口发送数据的速度快。相对于处理器的时钟速度,串行传输实际上相当慢(115.2kbps大约是标准硬件的限制)。因此,除非你的CPU速度受限(例如在Arduino上),否则我看不到影响它的正常情况。所以你选择的语言真的不应该太过关注(假设是现代硬件)。坚持你所知道的。