Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - Bokka

Pagine: [1]
1
Ciao a tutti!

Ho appena scritto (con l'aiuto di una guida) questa piccola applicazione client/server:

SERVER:

import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('192.168.0.96', 8089))
serversocket.listen(5) # become a server socket, maximum 5 connections

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print (buf)           
    break
   

CLIENT:

import socket

clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.96', 8089))
testo = "11010003000C"
testo_bytes = str.encode(testo)
clientsocket.send(testo_bytes)


Come avrete già capito, la parte server aspetta una connessione in entrata, una volta avvenuta attende i dati dal client, mentre il client una volta effettuata la connessione al server invia la stringa "11010003000C" convertita in bytes.

La cosa che non capisco è perchè dopo questa parte di codice:

while True:
    connection, address = serversocket.accept()
    buf = connection.recv(64)
    if len(buf) > 0:
        print (buf)           
    break


Più esattamente tra "print (buf)" e "break", se aggiungo lì in mezzo del codice, questo non viene eseguito.
Io vorrei convertire la variabile "buf" in stringa e fare delle operazioni su di essa. Non ricevo nemmeno degli errori, semplicemente passa direttamente all' istruzione break.

Come posso fare?

2
PyQT / Re:Oggetti QT e "proprietà"
« il: Maggio 26, 2017, 14:45 »
Prima di tutto grazie mille per la risposta!

Hai per caso un editor in particolare da consigliarmi? In rete ce ne sono tantissimi!!!

In pratica, non so se esiste, ma sto cercando un editor che faccia la seguente cosa:

Disegno l' interfaccia grafica con Qt Creator e la salvo in formato .UI

Carico il file .ui nell'editor, poi lui "capisce" quali sono i vari oggetti, come per esempio una edittext ed un pushbutton, poi quando vado a scrivere il codice, automaticamente, avendo capito quale è il bottone, mi propone l'autocompletamento.

Tipo nel codice:



class MyApp(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        Ui_MainWindow.__init__(self)
        self.setupUi(self)
        self.Button1.clicked.connect(self.buttonok)

    def buttonok(self):
       
        self.Button1.setText("Ciao")
        risultato = crc16 (self.TextBox1.text())
        self.TextBox1.setText(risultato)



Mi propone i vari autocompletamenti.....

Ecco, un editor del genere sarebbe perfetto per me :)

3
PyQT / Oggetti QT e "proprietà"
« il: Maggio 26, 2017, 12:39 »
Ciao a tutti!

Ho creato una piccola interfaccia con QT Desginer con un bottone e una textbox.

Non mi è chiara però una cosa: so che per esempio, per modificare il testo sul bottone, devo scrivere un codice come questo:

self.pushButton.setText("Bottone")

Ora, la cosa che non capisco è: come faccio a trovare un autocompletamento del testo che mi dice dopo .pushButton. che cosa posso mettere? Tipo un intellisense intendo. Ho provato con un paio di editor, ma se non carico il file QT che ho creato per forza di cose non riescono a dirmelo naturalemente.

Come posso fare?

Grazie mille!!

4
Altre tematiche / Re:Convertire funzione da VB a Python
« il: Maggio 23, 2017, 09:38 »

Talmente generico che non ti indica neanche la riga dov'è localizzato l'errore?

Esatto!

In poche parole sto cercando di creare una funzione che calcoli il CRC16 di una stringa:

11 01 00 03 00 0C

Il CRC calcolato deve risultare

CE9F (CE High, 9F Low)

E per la stringa:
11 01 02 CD 0B

Il CRC calcolato deve essere

6D 68


....Sto facendo dei progressi, ma ancora nulla, mi sa che sono ancora lontano dal risultato finale.... :thinking:


Piccolo edit per dire che l'errore di sintassi l'ho risolto, era una cosa veramente stupida da parte mia. Però con i codice che ho scritto non calcola correttamente l'output....

5
Altre tematiche / Re:Convertire funzione da VB a Python
« il: Maggio 22, 2017, 10:25 »
Ho provato a guardare per il codice, alla fine però con la seguente funzione, ricevo un generico "syntax error"...


def calc(data):
        crc_table=[0x0000,0xC0C1,0xC181,0x0140,0xC301,0x03C0,0x0280,0xC241,0xC601,0x06C0,0x0780,0xC741,0x0500,0xC5C1,0xC481,0x0440,0xCC01,0x0CC0,0x0D80,0xCD41,0x0F00,0xCFC1,0xCE81,0x0E40,0x0A00,0xCAC1,0xCB81,0x0B40,0xC901,0x09C0,0x0880,0xC841,0xD801,0x18C0,0x1980,0xD941,0x1B00,0xDBC1,0xDA81,0x1A40,0x1E00,0xDEC1,0xDF81,0x1F40,0xDD01,0x1DC0,0x1C80,0xDC41,0x1400,0xD4C1,0xD581,0x1540,0xD701,0x17C0,0x1680,0xD641,0xD201,0x12C0,0x1380,0xD341,0x1100,0xD1C1,0xD081,0x1040,0xF001,0x30C0,0x3180,0xF141,0x3300,0xF3C1,0xF281,0x3240,0x3600,0xF6C1,0xF781,0x3740,0xF501,0x35C0,0x3480,0xF441,0x3C00,0xFCC1,0xFD81,0x3D40,0xFF01,0x3FC0,0x3E80,0xFE41,0xFA01,0x3AC0,0x3B80,0xFB41,0x3900,0xF9C1,0xF881,0x3840,0x2800,0xE8C1,0xE981,0x2940,0xEB01,0x2BC0,0x2A80,0xEA41,0xEE01,0x2EC0,0x2F80,0xEF41,0x2D00,0xEDC1,0xEC81,0x2C40,0xE401,0x24C0,0x2580,0xE541,0x2700,0xE7C1,0xE681,0x2640,0x2200,0xE2C1,0xE381,0x2340,0xE101,0x21C0,0x2080,0xE041,0xA001,0x60C0,0x6180,0xA141,0x6300,0xA3C1,0xA281,0x6240,0x6600,0xA6C1,0xA781,0x6740,0xA501,0x65C0,0x6480,0xA441,0x6C00,0xACC1,0xAD81,0x6D40,0xAF01,0x6FC0,0x6E80,0xAE41,0xAA01,0x6AC0,0x6B80,0xAB41,0x6900,0xA9C1,0xA881,0x6840,0x7800,0xB8C1,0xB981,0x7940,0xBB01,0x7BC0,0x7A80,0xBA41,0xBE01,0x7EC0,0x7F80,0xBF41,0x7D00,0xBDC1,0xBC81,0x7C40,0xB401,0x74C0,0x7580,0xB541,0x7700,0xB7C1,0xB681,0x7640,0x7200,0xB2C1,0xB381,0x7340,0xB101,0x71C0,0x7080,0xB041,0x5000,0x90C1,0x9181,0x5140,0x9301,0x53C0,0x5280,0x9241,0x9601,0x56C0,0x5780,0x9741,0x5500,0x95C1,0x9481,0x5440,0x9C01,0x5CC0,0x5D80,0x9D41,0x5F00,0x9FC1,0x9E81,0x5E40,0x5A00,0x9AC1,0x9B81,0x5B40,0x9901,0x59C0,0x5880,0x9841,0x8801,0x48C0,0x4980,0x8941,0x4B00,0x8BC1,0x8A81,0x4A40,0x4E00,0x8EC1,0x8F81,0x4F40,0x8D01,0x4DC0,0x4C80,0x8C41,0x4400,0x84C1,0x8581,0x4540,0x8701,0x47C0,0x4680,0x8641,0x8201,0x42C0,0x4380,0x8341,0x4100,0x81C1,0x8081,0x4040]
       

        crc_hi=0xFF
        crc_lo=0xFF

        for w in data:
                index=crc_lo ^ ord(w)
                crc_val=crc_table[index]
                crc_temp=crc_val/256
                crc_val_low=crc_val-(crc_temp*256)
                crc_lo=crc_val_low ^ crc_hi
                crc_hi=crc_temp

        crc=crc_hi*256 +crc_lo
        print (crc)
        return crc





6
Altre tematiche / Re:Convertire funzione da VB a Python
« il: Maggio 19, 2017, 10:39 »
Per convertire questo codice basta studiare i primi capitoli di qualsiasi tutorial su python... Sono solo operazioni su interi e stringhe...

Avevo notato anche io, però non capisco questa parte di codice:

Citazione
  CRCREG = Bit.Xor(CRCREG, MVAL)
        CRCREG = Bit.And(CRCREG, 0xFFFF)
 
        For I = 1 To 8 Step 1
            If Bit.And(CRCREG, 0x01) = 1 Then
                CRCREG = Bit.Xor(Bit.UnsignedShiftRight(CRCREG, 1), 0xA001)
                CRCREG = Bit.And(CRCREG, 0xFFFF)
            Else
                CRCREG = Bit.UnsignedShiftRight(CRCREG, 1)
                CRCREG = Bit.And(CRCREG, 0xFFFF)

In python, come posso convertire "Bit.Xor", "Bit.And" ecc...?

7
Altre tematiche / Convertire funzione da VB a Python
« il: Maggio 19, 2017, 08:57 »
Ciao a tutti!

Fino ad ora ho sempre programmato con Visual Basic, però ora mi è stato chiesto di "spostare" alcuni miei lavori su Python. Diciamo che sto imparando in maniera blanda questo linguaggio in questo periodo, mi sono anche iscritto a questo forum per chiedere eventnualmente alcune delucidazioni.

Il fatto è che dovrei convertire una vecchia funzione di VB a python, per il calcolo del modbus.

Il codice è il seguente:

Citazione
Sub Modbus_CRC(strInput As String) As String
    Dim RetCRC As String
    Dim RetStr As String
   
    Dim CRCREG As Int
    Dim MVAL As Int
   
    Dim R As Short
    Dim I As Short
    Dim A As Int
    Dim B As Int
   
    CRCREG = 0xFFFF
 
    For R = 0 To strInput.Length - 1 Step 2
        RetStr = strInput.SubString2(R, R + 2)
        MVAL = Bit.ParseInt(RetStr, 16)
       
        CRCREG = Bit.Xor(CRCREG, MVAL)
        CRCREG = Bit.And(CRCREG, 0xFFFF)
 
        For I = 1 To 8 Step 1
            If Bit.And(CRCREG, 0x01) = 1 Then
                CRCREG = Bit.Xor(Bit.UnsignedShiftRight(CRCREG, 1), 0xA001)
                CRCREG = Bit.And(CRCREG, 0xFFFF)
            Else
                CRCREG = Bit.UnsignedShiftRight(CRCREG, 1)
                CRCREG = Bit.And(CRCREG, 0xFFFF)
            End If
        Next
    Next
 
    A = Bit.And(CRCREG, 0xFF)
    B = Bit.And(CRCREG, 0xFF00)
    A = A * 256
    B = B / 256
 
    If (A + B) < 16 Then
        RetCRC = "000" & (A + B)
    Else If (A + B) < 256 Then
        RetCRC = "00" & Bit.ToHexString(A + B)
    Else If (A + B) < 4096 Then
        RetCRC = "0" & Bit.ToHexString(A + B)
    Else
        RetCRC = Bit.ToHexString(A + B)
    End If
   
    Return RetCRC.ToUpperCase
End Sub


C'è qualcuno che riuscirebbe in poco tempo a convertire questo codice? Grazie mille in anticipo!!


8
Benvenuto e regolamento / Ciao a tutti!
« il: Maggio 19, 2017, 08:32 »
Ciao! Mi chiamo Gianluca e mi sono iscritto perchè ho bisogno di qualche dritta per convertire del codice da visual basic a python :)

Pagine: [1]