2011-02-04 5 views
1

Nortel 전화 시스템에서 호출 로그를 모니터링하는 사용자 정의 python 스크립트가 있습니다. 이 전화 시스템은 하루 종일 매우 높은 음량을 유지하고 있으며 일부 레코드가 손실 될 수있는 것처럼 보입니다.신뢰할 수있는 직렬 포트 모니터링 (Nortel CS1000)

여러분 중 일부는 이것을 싫어할 지 모르지만 나는 어떤 식 으로든 소스 코드 또는 현재 방법을 공유하는 것에 관심이 없습니다. 나는 이것을 "새로운 프로젝트"접근법에서 오히려 고려할 것이다.

Linux에서 직렬 포트를 통해 무거운 데이터를 안정적으로 모니터링하는 가장 쉽고 안전한 방법에 대한 통찰력을 찾고 있습니다. 이 도구 나 언어의 특정 집합에만 국한하지 않고이 중요한 작업을 수행하는 데 가장 적합한 것이 무엇인지 알아야합니다. 필자는 데이터를 파싱하고 mysql에 데이터를 넣을만큼 편안합니다. 데이터를 텍스트 파일에 놓을 수 있다고 가정 할 수 있습니다.

당신에게

+0

시리얼 라인으로 나가기 전에 데이터가 전화 시스템에서 폐기되지 않았는지 확인할 수 있습니까? –

+0

스크립트에서이 작업을 일시적으로 교차 검사로 수행하려는 경우 텍스트 파일로 파이핑하는 것이 좋습니다. 당신이 영원히 그것을 실행하고 싶다면, 시스템 로그와 같이 날짜별로 나누는 것이 의미가 있습니다. 대부분의 자유 소프트웨어 라이센스는 귀하가 네트워크 서비스를 제공하기 위해 프로그램을 사용하는 경우 소스가 필요한 경우도 있지만 귀하가 단순히 내부적으로 사용하는 프로그램이 아닌 파트너 엔티티를 포함하여 귀하가 배포하는 바이너리에 소스를 제공해야합니다. 미래의 필요를 위해 신중하게 계획하십시오. –

+0

@Chris, 나는 폐쇄 소스 애플리케이션을 배포하려고한다는 뜻이 아니 었습니다. 이것은 회사를위한 일회 일뿐입니다. 머리를 가져 주셔서 고마워. – andyortlieb

답변

1

글쎄, 난이이 작업이 개 스레드 (또는 프로세스)를 가지고 접근하는 방법과 감사합니다.

스레드 1 : 판독 스레드

이 스레드 원료 시리얼 포트로부터 데이터를 판독하고 (메모리에 속도 바람직하다) 로컬 버퍼/큐에 데이터를 배치하지만, 아무것도하지 않는다. 다른 일은해서는 안됩니다. 직렬 연결의 클럭 속도에 따라이 작업은 매우 쉽습니다.

Thread2 : 처리 스레드

이 데이터는 그 후, 처리는 로컬 버퍼에 판독하고, 그것을 처리 할 때까지이 스레드는 단지 인용. 그게 전부 야.

2 개로 분할하는 이유는, 처리 스레드 용으로 MySQL의 블록이 사용 중이면 다른 것에 영향을주지 않기 위해서입니다. 결국 직렬 포트가 OS에 의해 버퍼링되지만 버퍼 크기는 제한됩니다.

하지만 로컬 프로그램이 직렬 포트보다 데이터를 보낼 수있는 속도가 빠를 가능성이 높습니다. 직렬 전송은 실제로 프로세서의 클럭 속도에 비해 상당히 느립니다 (115.2kbps는 표준 하드웨어의 한계 임). 따라서 CPU 속도가 (Arduino에서와 같이) 바뀌지 않는 한 정상적인 조건이 너무 많이 영향을받는 것을 볼 수 없습니다. 따라서 언어 선택은 너무나도 걱정이되어서는 안됩니다 (현대적인 하드웨어라고 가정). 당신이 아는 것에 충실하십시오.