Python 车辆2车辆通信代码
我已经编写了一个代码来启用两个自动化车辆之间的V2V通信。然而,它并没有像预期的那样工作。控制器基本上在另一个代码中调用发送数据方法,该代码包含一个航路点列表。数据随后由其他端口接收。但是,m端口根本不接收数据 在控制器代码中,我将每辆车都作为一个线程。因此,每个线程都访问这个类。我希望我在这里已经解释清楚了Python 车辆2车辆通信代码,python,Python,我已经编写了一个代码来启用两个自动化车辆之间的V2V通信。然而,它并没有像预期的那样工作。控制器基本上在另一个代码中调用发送数据方法,该代码包含一个航路点列表。数据随后由其他端口接收。但是,m端口根本不接收数据 在控制器代码中,我将每辆车都作为一个线程。因此,每个线程都访问这个类。我希望我在这里已经解释清楚了 class V2V_comm(): global ports def __init__(self,port): self.host
class V2V_comm():
global ports
def __init__(self,port):
self.host = "127.0.0.1"
self.port = port
self.skt = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.skt.bind((self.host,self.port))
self.skt.settimeout(1)
self.loc_info = []
self.receiving_data()
def sending_data(self,wp):
try:
message = wp
for port in ports:
if port != self.port:
print "Sending location of: ", self.port
self.skt.sendto(str(message),("127.0.0.1",port))
except:
print "Unable to send message from: ", self.port
def receiving_data(self):
try:
print "Trying to receive data at: ", self.port
data,addr = self.skt.recvfrom(1024)
#print "The points received are: ", str(data)
#print "The points are received at: ", self.port
self.loc_info.append(data)
print self.loc_info, "for port: ", self.port
except:
print "Unable to receive message at: ", self.port
您是否为每个线程创建此
V2V_comm
类的实例?它们都有相同的端口,还是不同的端口?谁调用发送\u数据
以及全局端口
在哪里更新?是的,我为每个线程创建此实例。每个线程都有不同的端口。正如您在init函数中所看到的,端口是为每个线程传递的。因此,基本上每个线程的“控制器”都会调用发送数据。这基本上是你在现实生活中所期望的。代码中的每个车辆(线程)都有一个负责V2V通信的控制器。全局端口未更新。基本上,这些是车辆的端口。因此,我创建了一个列表,其中包含网络中所有车辆的端口。因此,一个端口将其轨迹发送到除自身以外的所有其他端口。您确实理解为什么所有这些信息都应该存在问题,对吗?您还缺少一个消息循环(无论何时创建实例,它都会从其端口读取一条消息,但您应该在别处的循环中调用receiving_data
)。您也没有显示您描述的任何逻辑或代码的输出。我相信您必须使用0.0.0
作为IP地址,而不是127.0.0.1
请将其编辑到问题中,以便可读。如果你不能问一个新的问题,包括它-理想的目标是一个最小的自我包含的例子,其他人可以实际运行和理解。