사례 2 · WinForms · PowerShell

실시간 디지털 VHF 교신량
가시화 위젯

자정 마감 수동 집계를 완전히 자동화. 5초 주기로 교신량을 실시간 산출하여 화면에 상시 표출.

🔒 사내 내부망 전용 도구 (WGC VCCS 로컬 경로 의존) · 가상 시연으로 진행됩니다
1 프로젝트 핵심 요약
🎯 개발 목적 자정 마감 시 수동으로 VHF 녹음 폴더를 열어 파일 개수를 세던 반복 작업 제거
⚙️ 주요 기능 16KB 이상 TX 파일 실시간 자동 필터링 · 5초 주기 갱신 · 최상단 고정 위젯창
🛠️ 기술 스택 PowerShell v5.1 · .NET WinForms · 멀티 타이머 (5000ms + 500ms)
WinForms Get-ChildItem Timer
✅ 기대 효과 자정 마감 집계 시간 → 0초 완전 제거 · 휴먼 에러(누락·오타) 원천 차단
2 도입 전 / 후 비교
⚠️ Before · 기존 방식
  • 자정마다 WGC VCCS 녹음 폴더를 수동으로 탐색기에서 열기
  • 파일명에 "TX" 포함 + 16KB 이상 조건을 눈으로 직접 필터링
  • 하나씩 카운팅하다 누락 또는 오타 발생 위험
  • 실시간 교신량 현황 파악 불가능
매일 자정 수동 집계
✅ After · 자동화 후
  • 스크립트 실행만 하면 화면 구석에 위젯 자동 표출
  • 5초마다 자동 갱신 — 항상 최신 교신량 표시
  • 전일 / 금일 교신량 동시 비교 표출
  • 작동 중 표시 인디케이터(●)로 상태 시각 확인
🕐 집계 시간 → 0초
3 가상 시연 · 실행 흐름
1

스크립트 실행

교신량 위젯.ps1 실행 → WinForms 창 로드 및 경로 초기화

2

실시간 파일 스캔

Get-ChildItem로 TX 파일 필터링 · 크기 조건(16KB↑) 검사 · 카운팅

3

위젯 자동 표출 및 갱신

화면 최상단 고정 위젯에 교신량 출력 · 5초마다 자동 업데이트

폴더 스캔 중...0%
TX 파일 필터링...0%
교신량 산출 완료0%
+ 소스코드 전문 공개

실제 구동되는 스크립트 소스코드 원본입니다.

교신량 위젯.ps1
Add-Type -AssemblyName System.Windows.Forms
$p = "C:\Program Files\WGC\VCCS\Client\Record"

$f = {
  $d0 = Get-Date; $d1 = $d0.AddDays(-1)
  $res = @($d1, $d0) | % {
    $dt = $_.ToString("yyyy_MM_dd")
    $dt2 = $_.ToString("M월 d일")
    $t = Join-Path $p $dt
    $c = if (Test-Path $t) {
      (Get-ChildItem $t -filter "*TX*" | Where-Object { $_.Length -ge 16kb }).Count
    } else { 0 }
    "$dt2 교신량: $($c)건"
  }
  $l.Text = $res -join "`n"
}

$obj = New-Object Windows.Forms.Form
$obj.Width=410; $obj.Height=230; $obj.Text="교신량 집계"; $obj.Topmost=1

$l = New-Object Windows.Forms.Label
$l.SetBounds(20,20,410,100); $l.Font="맑은 고딕, 24pt"

$btn = New-Object Windows.Forms.Button
$btn.SetBounds(20,130,100,30); $btn.Text="새로고침"; $btn.Add_Click($f)

$tmr = New-Object Windows.Forms.Timer
$tmr.Interval = 5000
$tmr.Add_Tick($f)
$tmr.Start()

& $f
$obj.Controls.AddRange(@($l,$btn))
[Windows.Forms.Application]::Run($obj)