Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 车辆2车辆通信代码_Python - Fatal编程技术网

Python 车辆2车辆通信代码

Python 车辆2车辆通信代码,python,Python,我已经编写了一个代码来启用两个自动化车辆之间的V2V通信。然而,它并没有像预期的那样工作。控制器基本上在另一个代码中调用发送数据方法,该代码包含一个航路点列表。数据随后由其他端口接收。但是,m端口根本不接收数据 在控制器代码中,我将每辆车都作为一个线程。因此,每个线程都访问这个类。我希望我在这里已经解释清楚了 class V2V_comm(): global ports def __init__(self,port): self.host

我已经编写了一个代码来启用两个自动化车辆之间的V2V通信。然而,它并没有像预期的那样工作。控制器基本上在另一个代码中调用发送数据方法,该代码包含一个航路点列表。数据随后由其他端口接收。但是,m端口根本不接收数据

在控制器代码中,我将每辆车都作为一个线程。因此,每个线程都访问这个类。我希望我在这里已经解释清楚了

 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
请将其编辑到问题中,以便可读。如果你不能问一个新的问题,包括它-理想的目标是一个最小的自我包含的例子,其他人可以实际运行和理解。