Upon the initialization of RPI, the RPI will listen for connection from each device in order:
PC (Algorithm) – Using IP Socket
def init_pc_comm(self):
#Initiate PC connection over TCP
# Create a TCP/IP socket
self.signalObject.signalling()
self.signalObject.signalTime(100)
#wait for 5 seconds before timeout
self.conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.conn.setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1)
self.conn.bind((self.ip_address, self.port))
self.conn.listen(1)
#Listen for incoming connections
print ("Listening for incoming connections from PC...")
self.client, self.addr = self.conn.accept()
print ("Connected! Connection address: ", self.addr)
self.pc_is_connect = True
Bluetooth(Android) – using RFCOMM
def connect_bluetooth(self):
# Creating the server socket and bind to port
btport = 1
self.signalObject.signalling()
self.signalObject.signalTime(100) #wait for 5 seconds before timeout
self.server_socket = BluetoothSocket(RFCOMM)
self.server_socket.bind(("", btport))
self.server_socket.listen(1)
# Listen for requests
self.port = self.server_socket.getsockname()[1]
uuid = "00001101-0000-1000-8000-00805f9b34fb"
advertise_service( self.server_socket, "BluetoothServer",
service_id = uuid,
service_classes = [ uuid, SERIAL_PORT_CLASS ],
profiles = [ SERIAL_PORT_PROFILE ], )
print ("listening for requests...")
print ("Waiting for connection on RFCOMM channel %d" % self.port)
# Accept requests
self.client_socket, client_address = self.server_socket.accept()
print ("Accepted connection from ", client_address)
self.bt_is_connected = True
Serial(Arduino) – USB COM port
def connect_serial(self):
try:
self.signalObject.signalling()
self.signalObject.signalTime(100) #wait for 5 seconds before timeout
self.ser = serial.Serial(self.port, self.baud_rate)
print ("Serial link connected")
except Exception, e:
# print "Error (Serial): %s " % str(e)
print ("Error: Serial connection not established. Try reconnecting the serial cable and/or restart the pi")