コード例 #1
0
    def __init__(self, CtrlServerLst):
        i = 0
        # Get the constant from 'common.h' file active.
        CTE = Constante("common.h")
        CTE.ParseFile()

        # Get the host IP address.
        #        if your PC / Host have several Ethernet/IP port,
        #        you might not get the IP address you want !!!!!!!!
        self.ipLocal = socket.gethostbyname(socket.gethostname())

        # The list of Server from
        self.ServerLst = []  # Array of server with IP, Port and name
        self.UDPClientSocket = [
        ]  # Array of the socket created: one per server.

        # Assigned the port for each server, then create the socket associated to each server
        for i in range(0, len(CtrlServerLst)):
            CtrlPt = CtrlServerLst[i]
            BYTES = CtrlPt.ip.split(
                '.'
            )  # Socket Port number  as port = 43150 + the fourth digit of the IP Address
            Byte4 = int(
                BYTES[3]
            )  # ==> For 192.168.1.100 the port will be 43150 + 100 ==> 43250
            CtrlPt.port = CTE.PORT + Byte4

            self.server = server(CtrlPt.name, CtrlPt.ip, CtrlPt.port)
            self.ServerLst.append(self.server)

            sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_DGRAM)
            # Use full trace
            print("Create socket for", CtrlPt.name, "IP:", CtrlPt.ip, "PORT:",
                  CtrlPt.port)
            sock.bind((self.ipLocal, CtrlPt.port))
            sock.setblocking(0)
            self.UDPClientSocket.append(sock)
コード例 #2
0
ファイル: XMLConfig.py プロジェクト: ggu3467/TrainControl
                    0]  # Read current value
                minVal = key.getElementsByTagName(TagMin)[0]

                oldMinValue = minVal.firstChild.nodeValue  # Get previous values
                oldMaxValue = maxVal.firstChild.nodeValue
                print("Replacing minValue:" + oldMinValue + " by new value:" +
                      str(MinValue))
                print("Replacing maxValue:" + oldMaxValue + " by new value:" +
                      str(MaxValue))

                minVal.firstChild.nodeValue = MinValue  # Assign new values
                maxVal.firstChild.nodeValue = MaxValue

                with open('ControlServer_test.xml', 'w') as f:
                    f.write(self.doc.toxml())
                    f.close()

                break

        return CtrlPoint


if __name__ == "__main__":
    CTE = Constante("common.h")  # From ParseCommonHeader.py
    CTE.ParseFile()
    CtrlServerLst = []  # ControlServers without the HMI aspect

    XML = XMLConfig(CTE.XML_cfgFile, "Locomotive", "TrackSwitch")
    CtrlServerLst = XML.ParseXML()
    XML.UpdateTrackSwitch(CTE.XML_cfgFile, "192.168.1.108", 0, 11, 111)
コード例 #3
0
class ChangeTrim:
    def __init__(self, master, _ControlPoint, NumTrimmer, _commESP): #########################################
        self.allure = 0  # Initially stopped
        self.CTE=Constante("common.h")       # From ParseCommonHeader.py
        self.CTE.ParseFile()
        self.commESP = _commESP  # get the liste of Server, contain only communicationa artefacts
        self.ControlPoint =  _ControlPoint
        self.NumTrimmer   =  NumTrimmer

        self.top = Toplevel(master)  # Link with master window
        self.top.withdraw()  # Dp Not display empty window
        self.top.grab_set()

        self.CreateTrimScale(self.top)

    def SetTrimValueLeft(self, value):
        print("==> LEFT", value)
        self.ControlPoint.TrimLeft[self.NumTrimmer] = value
        self.commESP.MsgForkLeft[1] = self.NumTrimmer+1
        self.commESP.MsgForkLeft[2] = int(value)
        self.commESP.SendData(self.commESP.MsgForkLeft, self.ControlPoint.numCtrlPoint)
        return

    def SetTrimValueRight(self, value):
        print("==> RIGHT", value)
        self.ControlPoint.TrimRight[self.NumTrimmer] = value
        self.commESP.MsgForkRight[1] = self.NumTrimmer+1
        self.commESP.MsgForkRight[2] = int(value)
        self.commESP.SendData(self.commESP.MsgForkRight, self.ControlPoint.numCtrlPoint)
        return

    def ValidateRight(self):
        print("ValidateRight")
        return

    def ValidateLeft(self):
        print("ValidateRight")
        return

    def CreateTrimScale(self, master):

        Head = Canvas(Toplevel(master), bg='light blue', height=600, width=800, borderwidth=5)
        Head.grid(row=1, column=3, sticky='NW', padx=4, pady=4)

        frameTitre = Frame(Head, width=1200, borderwidth = 3, height=30,bg='dark blue', relief="sunken", highlightcolor="red", highlightthickness=2 )
        frameTitre.grid(row=0, column=3)
        LabelTitre = Label(frameTitre, text="*** Set the minimum and maximum values ​​of the servo motors ***", font="Arial 12", height=2, bg='light blue')
        LabelTitre.grid(row=0, column=3)

        Trim = Frame(Head, width=1200, borderwidth=5, height=30, bg='dark blue', relief="sunken",
                             highlightcolor="red", highlightthickness=2)
        Trim.grid(row=4, column=3, rowspan=1, sticky='NW', padx=4, pady=4)

        SetTrim = Frame(Trim, width=1200, height=50, borderwidth=6, bg='light blue', relief="ridge")
        SetTrim.grid(row=3, column=5, sticky='NW')
        Label1 = Label(SetTrim, text=self.ControlPoint.name + '\n' + self.ControlPoint.ip, font="Arial 12", height=3, width=15,
                          bg='light blue')
        Label1.grid(row=1, column=0, rowspan=3, padx=3)

        TrimmerRight = Scale(SetTrim, variable=self.ControlPoint.TrimRight[self.NumTrimmer], resolution=1, orient=HORIZONTAL, length=600,bg='light blue',
                                    showvalue=1, from_=0, to_= 90, tickinterval=5,
                                    command=self.SetTrimValueRight)
        TrimmerRight.set(self.ControlPoint.TrimRight[self.NumTrimmer])
        TrimmerRight.grid(row=1, column=1, columnspan=3)
        TrimmerRight.config(state='active')
        TrimmerRight.lower()
        TxtButton2 = 'RIGHT: '+str(self.ControlPoint.TrimRight[self.NumTrimmer])
        LeftButton = Button(SetTrim, text=TxtButton2,  bg='light blue', command=self.ValidateLeft)
        LeftButton.grid(row=1, column=4)

        QuitButton = Button(SetTrim, text="QUIT-SAVE", command=self.QuitSave)
        QuitButton.grid(row=2, column=4)

        TrimmerLeft = Scale(SetTrim, variable=self.ControlPoint.TrimLeft[self.NumTrimmer], orient=HORIZONTAL, length=600,bg='light blue',
                                      showvalue=25, from_=90, to_=180, tickinterval=5,
                                      command=self.SetTrimValueLeft)
        TrimmerLeft.set(self.ControlPoint.TrimLeft[self.NumTrimmer])
        TrimmerLeft.grid(row=3, column=1, columnspan=3)
        TrimmerLeft.config(state='active')
        TrimmerLeft.lower()


        TxtButton1 = 'LEFT:'+str(self.ControlPoint.TrimLeft[self.NumTrimmer])
        RightButton = Button(SetTrim, text=TxtButton1, bg='light blue', command=self.ValidateRight)
        RightButton.grid(row=3, column=4)

        print("Fin CreateTrimScale")

    def QuitSave(self):
        print("QUIT SAVE")
        minValue=self.ControlPoint.TrimLeft[self.NumTrimmer]
        maxValue=self.ControlPoint.TrimRight[self.NumTrimmer]
        print("ControlPoint:"+self.ControlPoint.name+" NumTrim:",self.NumTrimmer)
        print("TrimLeft, min value: " , minValue)
        print("TrimRight, maxValue: " , maxValue)
        XML = CFG.XMLConfig(self.CTE.XML_cfgFile, " ", "TrackSwitch")

#        def UpdateTrackSwitch(self, xmlFilename, ip, NumSwitch, MinValue, MaxValue):
        XML.UpdateTrackSwitch(self.CTE.XML_cfgFile, self.ControlPoint.ip, self.NumTrimmer, minValue, maxValue)

        self.top.destroy()