summaryrefslogtreecommitdiff
path: root/gr-serial/python
diff options
context:
space:
mode:
authormanojgudi2014-01-30 22:34:00 +0530
committermanojgudi2014-01-30 22:34:00 +0530
commit324438b65f3a2c58227fb0a304ba36e57a8a1b01 (patch)
tree2cd40921235623f49b13a35f411559e49da30e82 /gr-serial/python
parenta92e4f37be9dfb28ad8eb92969d80067f4281864 (diff)
downloadgnuradio-324438b65f3a2c58227fb0a304ba36e57a8a1b01.tar.gz
gnuradio-324438b65f3a2c58227fb0a304ba36e57a8a1b01.tar.bz2
gnuradio-324438b65f3a2c58227fb0a304ba36e57a8a1b01.zip
gr-serial block
Diffstat (limited to 'gr-serial/python')
-rw-r--r--gr-serial/python/CMakeLists.txt55
-rw-r--r--gr-serial/python/__init__.py53
-rw-r--r--gr-serial/python/gr_serial.py45
3 files changed, 153 insertions, 0 deletions
diff --git a/gr-serial/python/CMakeLists.txt b/gr-serial/python/CMakeLists.txt
new file mode 100644
index 000000000..e0f33d9b1
--- /dev/null
+++ b/gr-serial/python/CMakeLists.txt
@@ -0,0 +1,55 @@
+# Copyright 2012 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+
+########################################################################
+include(GrPython)
+
+GR_PYTHON_INSTALL(
+ FILES
+ __init__.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/serial
+ COMPONENT "serial_python"
+)
+
+GR_PYTHON_INSTALL(
+ FILES
+ gr_serial.py
+ DESTINATION ${GR_PYTHON_DIR}/gnuradio/serial
+ COMPONENT "serial_python"
+)
+
+
+
+########################################################################
+# Handle the unit tests
+########################################################################
+if(ENABLE_TESTING)
+
+list(APPEND GR_TEST_PYTHON_DIRS
+ ${CMAKE_BINARY_DIR}/gr-serial/python
+)
+list(APPEND GR_TEST_TARGET_DEPS gnuradio-serial)
+
+include(GrTest)
+file(GLOB py_qa_test_files "qa_*.py")
+foreach(py_qa_test_file ${py_qa_test_files})
+ get_filename_component(py_qa_test_name ${py_qa_test_file} NAME_WE)
+ GR_ADD_TEST(${py_qa_test_name} ${PYTHON_EXECUTABLE} ${PYTHON_DASH_B} ${py_qa_test_file})
+endforeach(py_qa_test_file)
+endif(ENABLE_TESTING)
diff --git a/gr-serial/python/__init__.py b/gr-serial/python/__init__.py
new file mode 100644
index 000000000..6e8ef1f55
--- /dev/null
+++ b/gr-serial/python/__init__.py
@@ -0,0 +1,53 @@
+#
+# Copyright 2008,2009 Free Software Foundation, Inc.
+#
+# This application is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This application is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+# The presence of this file turns this directory into a Python package
+
+'''
+This is the GNU Radio SCIGEN module. Place your Python package
+description here (python/__init__.py).
+'''
+
+# ----------------------------------------------------------------
+# Temporary workaround for ticket:181 (swig+python problem)
+import sys
+_RTLD_GLOBAL = 0
+try:
+ from dl import RTLD_GLOBAL as _RTLD_GLOBAL
+except ImportError:
+ try:
+ from DLFCN import RTLD_GLOBAL as _RTLD_GLOBAL
+ except ImportError:
+ pass
+
+if _RTLD_GLOBAL != 0:
+ _dlopenflags = sys.getdlopenflags()
+ sys.setdlopenflags(_dlopenflags|_RTLD_GLOBAL)
+# ----------------------------------------------------------------
+
+
+# import any pure python here
+import serial
+
+#
+
+# ----------------------------------------------------------------
+# Tail of workaround
+if _RTLD_GLOBAL != 0:
+ sys.setdlopenflags(_dlopenflags) # Restore original flags
+# ----------------------------------------------------------------
diff --git a/gr-serial/python/gr_serial.py b/gr-serial/python/gr_serial.py
new file mode 100644
index 000000000..00b70c0d8
--- /dev/null
+++ b/gr-serial/python/gr_serial.py
@@ -0,0 +1,45 @@
+#!/usr/bin/python
+
+import gras
+import numpy
+# Serial is imported in __init__
+class ser(gras.Block):
+
+
+ def __init__(self):
+ gras.Block.__init__(self,
+ name="ser",
+ in_sig=[numpy.float32],
+ out_sig=[numpy.float32])
+ self.n = 1
+ def set_parameters(self, port, baud, bytesize, parity, stopbits):
+
+ try:
+ print port
+ self.ser_obj = serial.Serial(port, baud, bytesize, parity, stopbits)
+ print("serial found on " + port )
+ self.ser_obj.open()
+ except:
+ print "Couldn't Open Serial Port " + port + " Failed"
+
+
+ def work(self, input_items, output_items):
+
+ self.n = input_items[0][0]
+ out = output_items[0][:self.n]
+ # Input is size of output_items to be returned
+
+ for i in range(self.n):
+
+ # Try catch block to avoid Error
+ # ValueError: invalid literal for int() with base 10: '\xfe354\r\n'
+ try:
+ out[i] = int(self.ser_obj.readline())
+ except:
+ pass
+
+ print "OUT", out[:self.n]
+
+ self.produce(0,len(out)) # Produce from port 0 output_items
+ self.consume(0,1) # Consume from port 0 input_items
+