У меня проблемы с моим кодом Bluetooth, возвращающим неправильные значения - PullRequest
0 голосов
/ 09 февраля 2019

Я создал тестовую программу, которая будет включена в мой основной проект, включающий многопроцессорность.Я использую многопроцессорный массив для хранения значения, отправленного по Bluetooth и передающего его другому процессу, но вместо этого отправленная переменная Bluetooth отправляет случайную строку символов, в то время как переменная с определенным значением передается правильно и печатает правильное значение.

import multiprocessing
import time
import os
import sys
#import bluetooth
from bluetooth import*
from ctypes import*
#Make device discoverable
#os.system("hciconfig hci0 piscan")

#Create a new server 
server_socket = BluetoothSocket(RFCOMM)

#Bind to any port
server_socket.bind(("", PORT_ANY))

#Start listening
server_socket.listen(1)

#Get the port the service is listening
port = server_socket.getsockname()[1]
#The Service UUID to advertise
uuid = "00001101-0000-1000-8000-00805F9B34FB"
advertise_service(server_socket, "Camaro",
                  service_id=uuid,
                  service_classes=[uuid, SERIAL_PORT_CLASS],
                  profiles=[SERIAL_PORT_PROFILE])

#Items in queue
def bt(a,z):
    while True:
        print("Waitng for connection on rfcomm channel %d" %port)
        try:
            client_socket = None
            client_socket, client_info = server_socket.accept()
            print("Accepted connection from", client_info)
            while client_socket != None:
                data=client_socket.recv(1024)
                a[1]=data
                print(data)
                a[0]=b'test'
                z.set()
        except IOError:
            pass
def ret(b,y):
    while(True):
        if y.is_set():
            print("Bluetooth sent: ",b[:])
            y.clear()
d = multiprocessing.Event()
t = multiprocessing.Array(c_char_p,[b'',b''])
bluetooth_thread=multiprocessing.Process(target=bt, args=(t,d))
bt1=multiprocessing.Process(target=ret, args=(t,d))
bluetooth_thread.start()
bt1.start()

Это то, что я получаю при тестировании программы:

linaro@tinkerboard:~/Documents$ python3 Blue.py
Waitng for connection on rfcomm channel 1
Accepted connection from ('08:AE:D6:09:DC:D3', 1)
b'Hello'
Bluetooth sent:  [b'test', b'9{b_\x8bT\x8eo\xa2Gw~+:\x9bN']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...