Try to reduce runaway memory usaqe
--- /dev/null
+++ b/README.txt
@@ -1,1 +1,1 @@
-
+ffmpeg from http://ffmpeg.zeranoe.com/builds/
--- /dev/null
+++ b/run.bat
@@ -1,1 +1,1 @@
-
+python scannr.py > output.txt
--- a/scannr.py
+++ b/scannr.py
@@ -1,10 +1,17 @@
+import logging
+logging.basicConfig(level=logging.DEBUG,
+ format='%(asctime)s\t%(levelname)s\t%(message)s')
+
import snd
import time
from datetime import date
import threading
from pydispatch import dispatcher
import wave
+import serial
+#python -m serial.tools.miniterm -p COM20 -e -b 115200 --cr
import psycopg2
+import csv
import sys,os
@@ -12,24 +19,38 @@
import pynma
filename = "demo.wav"
-nma = pynma.PyNMA( "apikey(s)", "developerkey")
-conn = psycopg2.connect("dbname=test user=postgres")
+MIN_LENGTH = 90000
-def worker(filename):
+
+def worker(filename, length):
"""thread worker function
http://www.doughellmann.com/PyMOTW/threading/
-
https://github.com/uskr/pynma
-
-http://stackoverflow.com/questions/1092531/event-system-in-python """
+ffmpeg -i 2012-09-29-1348911268.34-demo.wav -ar 8000 -ab 4.75k test.3gp
+http://stackoverflow.com/questions/2559746/getting-error-while-converting-wav-to-amr-using-ffmpeg
+"""
print 'Worker for '+filename
- """nma.push(application, event, description, (opt) url,)"""
- """http://initd.org/psycopg/docs/usage.html"""
- #cur = conn.cursor()
- #cur.execute("INSERT INTO test (num, data) VALUES (%s, %s)",(100, "abc'def"))
- #conn.commit()
- #cur.close()
+ ser.write("GLG\r")
+ line = ser.readline() # read a '\n' terminated line
+ print line
+ reader = csv.reader([line])
+ for row in reader:
+ #GLG,40078,NFM,0,0,CanberraBlackMnt,AustralianCapita,SES Ops 1,1,0,NONE,NONE,NONE
+ if (row[0] != 'GLG'):
+ print "uh oh"
+ if (row[1] != ''):
+ tgid = row[1]
+ #nma.push("scannr", "ping", filename, "http://www.google.com")
+ tgname = row[7]
+ sitename = row[5]
+ """http://initd.org/psycopg/docs/usage.html"""
+ cur = conn.cursor()
+ cur.execute("INSERT INTO recordings (filename,tgid,tgname,sitename,length) VALUES (%s, %s,%s, %s, %s)",(filename,tgid,tgname,sitename, length))
+ conn.commit()
+ cur.close()
+ else:
+ print filename+" has no TGID"
return
@@ -40,20 +61,32 @@
def record_to_async_file():
"Records from the microphone and outputs the resulting data to `path`"
sample_width, data = snd.record()
- data = snd.pack('<' + ('h'*len(data)), *data)
- path = filename
- dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename)
- wf = wave.open(path, 'wb')
- wf.setnchannels(1)
- wf.setsampwidth(sample_width)
- wf.setframerate(snd.RATE)
- wf.writeframes(data)
- wf.close()
- print("done - result written to "+path)
+ print str(len(data))
+ if len(data) > MIN_LENGTH:
+ data = snd.pack('<' + ('h'*len(data)), *data)
+ path = filename
+ dispatcher.send( signal='FILE_CREATED', sender=filename, filename=filename, length=len(data))
+ wf = wave.open(path, 'wb')
+ wf.setnchannels(1)
+ wf.setsampwidth(sample_width)
+ wf.setframerate(snd.RATE)
+ wf.writeframes(data)
+ wf.close()
+ del wf
+ print("done - result "+str(len(data))+" frames written to "+path)
+ del data
dispatcher.connect( filenameMaker, signal='SND_STARTED', sender=dispatcher.Any )
dispatcher.connect( worker, signal='FILE_CREATED', sender=dispatcher.Any )
-print "Scannr started..."
+
+print "Opening serial port..."
+ser = serial.Serial('COM20', 112500, timeout=1)
+print "Loading notifymyandroid..."
+nma = pynma.PyNMA( "a6f50f76119eda33befe4325b4b9e1dd25eef7bad2868e4f")
+print "Connecting database..."
+conn = psycopg2.connect("dbname=scannr user=postgres password=snmc")
+print "Scannr started."
while True:
- print "ready to record"
+ print "ready to record again"
record_to_async_file()
+ser.close()
--- a/snd.py
+++ b/snd.py
@@ -90,7 +90,6 @@
data = stream.read(CHUNK_SIZE)
L = unpack('<' + ('h'*(len(data)/2)), data) # little endian, signed short
L = array('h', L)
- LRtn.extend(L)
silent = is_silent(L)
#print silent, num_silent, L[:10]
@@ -102,6 +101,8 @@
dispatcher.send( signal='SND_STARTED')
snd_started = True
print snd_started
+ if snd_started:
+ LRtn.extend(L)
if snd_started and num_silent > MAX_SILENT:
break
@@ -127,6 +128,7 @@
wf.writeframes(data)
wf.close()
print("done - result written to "+path)
+ del data
--- /dev/null
+++ b/trunklog.php
@@ -1,1 +1,31 @@
-
+<?php
+// http://www.unitrunker.com/logs.html
+/*
+Timestamp as YYYYMMDDHHMMSS
+Site number in unformatted decimal
+Action: Call, Leaves, Joins, Login, Logout, Drop, Add, Busy, Deny, Kill
+Source type I or G
+Source ID in unformatted decimal
+Target type I or G
+Target ID in unformatted decimal
+Channel number in unformatted decimal
+Call Type*/
+$row = 0;
+echo "<table>";
+if (($handle = fopen("C:\Users\Madoka\AppData\Roaming\UniTrunker\S00000001\UniTrunker-20120411.LOG", "r")) !== FALSE) {
+ while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
+
+ if ($row > 0 && count($data) == 9) {
+
+ echo "<tr>";
+ for ($c=0; $c < count($data); $c++) {
+ echo '<td>'.$data[$c] . "</td>\n";
+ }
+ echo "</tr>";
+ }
+ $row++;
+ }
+ fclose($handle);
+}
+echo "</table>";
+?>