audioData = b"" bytesSent = 0 lastBytesSent = 0 f = wave.open("/home/pi/Documents/wav.wav", "w") #hardcoded file format n_channels = 1 sample_width = 2 framerate = 44100 n_frames = 204800 comp_type = "NONE" comp_name = "not compressed" params = (n_channels, sample_width, framerate, n_frames, comp_type, comp_name) f.setparams(params) x = com.receiveAudio() timeFlag = time.time() while byteNumber < fileSize: #valid data if x != b"": timeFlag = time.time() byteNumber = byteNumber + 1 #valid data #append to data audioData = audioData + x bytesSent = bytesSent + 1 if bytesSent >= lastBytesSent + 1024: lastBytesSent = lastBytesSent + 1024 print(lastBytesSent) x = com.receiveAudio()
def main(): # Setup logging logger = logging.getLogger('control') logger.setLevel(logging.DEBUG) filehandler = logging.FileHandler('main.log') filehandler.setLevel(logging.DEBUG) console = logging.StreamHandler() console.setLevel(logging.DEBUG) formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s') filehandler.setFormatter(formatter) console.setFormatter(formatter) logger.addHandler(filehandler) logger.addHandler(console) # Connect to xBee com = Communication(COM_CONNECTION_STRING, 0.1) logger.debug("Connected to wireless communication transceiver") #Wait to receive file logger.debug("Waiting to receive file") f = wave.open("receivedWavFile.wav", "w") #hardcoded file format n_channels = 1 sample_width = 2 framerate = 44100 n_frames = 204800 comp_type = "NONE" comp_name = "not compressed" params = (n_channels, sample_width, framerate, n_frames, comp_type, comp_name) f.setparams(params) audioData = b"" x = com.receiveAudio() #iterate over file size #100 frames bytesSent = 0 lastBytesSent = 0 byteNumber = 0 fileSize = n_frames * sample_width * n_channels timeout = 20 timeFlag = time.time() while byteNumber < fileSize: #valid data if x != b"": timeFlag = time.time() byteNumber = byteNumber + 1 #valid data #append to data audioData = audioData + x bytesSent = bytesSent + 1 if bytesSent >= lastBytesSent + 1024: lastBytesSent = lastBytesSent + 1024 logger.debug(bytesSent) x = com.receiveAudio() if (timeFlag + timeout < time.time()): logger.debug("Timeout") break #transmission finished, write to file f.writeframesraw(audioData) f.close() # Program end logger.debug("Finished program.") sys.exit(0)