Hello GNU Radio community! I am a Midshipman working on PSK31, but I have a slightly different approach than Louis Brown: I am creating a single custom block that will spawn a GUI to take keyboard input and then output the ASCII bit representation of the keystroke. I used a lot of the code for the Logitech transceiver on CGRAN as my starting point.
Right now, the user hits a submit button on the GUI which then writes any text to a file. The work function then reads through the file to determine if there is a new character to submit. Global variables are used to index progress through the file. Eventually, I want to use a better system than FIFO, but I am using this a proof of concept. Testing my block by running it straight into a file sink, I get 32,769 copies of each character. If I add a throttle block, then I don't get any data in my file sink. My work function runs a while loop because I need something to keep the program in the work function instead of the MainLoop function of the GUI. If I call MainLoop in the __init__ function, then I never get into the work function. Thanks for any help that you can offer! -Matt Lanoue MIDN USN #Define Global Variables last_tx = 0 size = 0 ################################################################################ ### GRC Block Class ################################################################################ class keyboard2_b(gr.sync_block): " Keyboard Source Block " def __init__(self): gr.sync_block.__init__( self, name = "keyboard_b", in_sig = None, # Input signature: n/a out_sig = [numpy.int8], # Output signature: 8 digit integer as a byte (-127 to 128) ) app = wx.App(False) frame = wx.Frame(None,wx.ID_ANY,title="Episode IV: A New Hope for Matt's Trident",size=(850,150)) panel = LanoueGUI(frame) frame.Center() frame.Show(True) #app.MainLoop() def work(self, input_items, output_items): while (1 == 1): #Read from the key_src file #print "I got to the work function of the block!" file1 = open('/tmp/key_src.txt', 'r') #Find the length of the file global size file1.seek(0, os.SEEK_END) size = file1.tell() print "Size: %s" % (str(size)) #time.sleep(0.2) #This was used to slow down the spew of terminal output #Branching statement global last_tx print "Last: %s" % (str(last_tx)) if (last_tx < size): file1.seek(last_tx, 0) next_char = file1.read(1) file1.close() output_items[0][:] = ord(next_char[0]) print "Outputting %s" % (next_char) last_tx = last_tx + 1 return len(output_items[0]) else: file1.close() output_items[0][:] = 95 #print "Outputting '_'" return len(output_items[0]) return len(output_items[0])
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio