Python tutorial för att lära sig grunderna?
Python tutorial för att lära sig grunderna?
Börjat leka lite med Raspberry och märker snabbt att jag saknar grunderna i python.
Finns det ngn bra enkel tutorial att gå för att lära sig just bas kunskaperna?
Med baskunskaper menar jag hur koden är uppbyggd. Vad är main loopen. Hur fungerar tilldelning. Anrop.. mm..
Switch / Case / For etc har man från andra språk.. men fastnar i just hur koden skall partioneras.
Tex:
Jag vill ta emot UDP samtidigt som jag vill lyssna på en GPIO ingång.
Var för sig fungerar men inte tillsammans...
Hur skapar man kod som kan monitorera olika saker?
while True:
# dataFromClient, address = server_socket.recvfrom(256)
# options[dataFromClient]()
if(GPIO.input(17) == 0):
print "Detection"
Finns det ngn bra enkel tutorial att gå för att lära sig just bas kunskaperna?
Med baskunskaper menar jag hur koden är uppbyggd. Vad är main loopen. Hur fungerar tilldelning. Anrop.. mm..
Switch / Case / For etc har man från andra språk.. men fastnar i just hur koden skall partioneras.
Tex:
Jag vill ta emot UDP samtidigt som jag vill lyssna på en GPIO ingång.
Var för sig fungerar men inte tillsammans...
Hur skapar man kod som kan monitorera olika saker?
while True:
# dataFromClient, address = server_socket.recvfrom(256)
# options[dataFromClient]()
if(GPIO.input(17) == 0):
print "Detection"
Re: Python tutorial för att lära sig grunderna?
Ja du får väl kanske kolla upp lite grann med trådning alternativt inte ligga och blockera i väntan på din input (bör ju finnas en koll som kan som du har mottagit data, och om det är så, kan du beta av din buffer).
Re: Python tutorial för att lära sig grunderna?
https://www.codecademy.com/learn/python
Interaktivt verktyg för att lära sig Python. Mycket bra!
Interaktivt verktyg för att lära sig Python. Mycket bra!
- lillahuset
- Gått bort
- Inlägg: 13969
- Blev medlem: 3 juli 2008, 08:13:14
- Ort: Norrköping
Re: Python tutorial för att lära sig grunderna?
Från: https://docs.python.org/2/library/socket.html:
"socket.recvfrom(bufsize[, flags])
Receive data from the socket. The return value is a pair (string, address) where string is a
string representing the data received and address is the address of the socket sending the data.
See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero.
(The format of address depends on the address family — see above.)"
Från: http://linux.die.net/man/2/recv:
"The flags argument to a recv() call is formed by ORing one or more of the following values:
...
MSG_DONTWAIT (since Linux 2.2)
Enables nonblocking operation; if the operation would block, the call fails with the error EAGAIN or
EWOULDBLOCK (this can also be enabled using the O_NONBLOCK flag with the F_SETFL fcntl(2)).
...
"
Se även "socket.setblocking(flag)" och "socket.settimeout(value)" på Python sidan ovan...
"socket.recvfrom(bufsize[, flags])
Receive data from the socket. The return value is a pair (string, address) where string is a
string representing the data received and address is the address of the socket sending the data.
See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero.
(The format of address depends on the address family — see above.)"
Från: http://linux.die.net/man/2/recv:
"The flags argument to a recv() call is formed by ORing one or more of the following values:
...
MSG_DONTWAIT (since Linux 2.2)
Enables nonblocking operation; if the operation would block, the call fails with the error EAGAIN or
EWOULDBLOCK (this can also be enabled using the O_NONBLOCK flag with the F_SETFL fcntl(2)).
...
"
Se även "socket.setblocking(flag)" och "socket.settimeout(value)" på Python sidan ovan...
Re: Python tutorial för att lära sig grunderna?
> # dataFromClient, address = server_socket.recvfrom(256)
Om jag ser rätt så är flag=256:
198: #define MSG_EOR MSG_EOR
199: MSG_WAITALL = 0x100, /* Wait for a full request. */
Från : http://repo-genesis3.cbi.utsa.edu/cross ... ket.h.html:
Prova med server_socket.recvfrom(64) istället (alltså MSG_DONTWAIT = 0x40, /* Nonblocking IO. */).
Om jag ser rätt så är flag=256:
198: #define MSG_EOR MSG_EOR
199: MSG_WAITALL = 0x100, /* Wait for a full request. */
Från : http://repo-genesis3.cbi.utsa.edu/cross ... ket.h.html:
Kod: Markera allt
175: /* Bits in the FLAGS argument to `send', `recv', et al. */
176: enum
177: {
178: MSG_OOB = 0x01, /* Process out-of-band data. */
179: #define MSG_OOB MSG_OOB
180: MSG_PEEK = 0x02, /* Peek at incoming messages. */
181: #define MSG_PEEK MSG_PEEK
182: MSG_DONTROUTE = 0x04, /* Don't use local routing. */
183: #define MSG_DONTROUTE MSG_DONTROUTE
184: #ifdef __USE_GNU
185: /* DECnet uses a different name. */
186: MSG_TRYHARD = MSG_DONTROUTE,
187: # define MSG_TRYHARD MSG_DONTROUTE
188: #endif
189: MSG_CTRUNC = 0x08, /* Control data lost before delivery. */
190: #define MSG_CTRUNC MSG_CTRUNC
191: MSG_PROXY = 0x10, /* Supply or ask second address. */
192: #define MSG_PROXY MSG_PROXY
193: MSG_TRUNC = 0x20,
194: #define MSG_TRUNC MSG_TRUNC
195: MSG_DONTWAIT = 0x40, /* Nonblocking IO. */
196: #define MSG_DONTWAIT MSG_DONTWAIT
197: MSG_EOR = 0x80, /* End of record. */
198: #define MSG_EOR MSG_EOR
199: MSG_WAITALL = 0x100, /* Wait for a full request. */
200: #define MSG_WAITALL MSG_WAITALL
201: MSG_FIN = 0x200,
202: #define MSG_FIN MSG_FIN
203: MSG_SYN = 0x400,
204: #define MSG_SYN MSG_SYN
205: MSG_CONFIRM = 0x800, /* Confirm path validity. */
206: #define MSG_CONFIRM MSG_CONFIRM
207: MSG_RST = 0x1000,
208: #define MSG_RST MSG_RST
209: MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */
210: #define MSG_ERRQUEUE MSG_ERRQUEUE
211: MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */
212: #define MSG_NOSIGNAL MSG_NOSIGNAL
213: MSG_MORE = 0x8000, /* Sender will send more. */
214: #define MSG_MORE MSG_MORE
Re: Python tutorial för att lära sig grunderna?
Jo, detta har ju inte ett smack med Python som sådant att göra...
Re: Python tutorial för att lära sig grunderna?
Många snabba bra svar. Tackar!
Grundproblem när jag kör båda samtidigt:
Ger fel:
Grundproblem när jag kör båda samtidigt:
Kod: Markera allt
while True:
dataFromClient, address = server_socket.recvfrom(64)
options[dataFromClient]()
if(GPIO.input(17) == 0):
print "Detection"
if(GPIO.input(17) == 0):
^
IndentationError: unexpected indent
Re: Python tutorial för att lära sig grunderna?
sodjan skrev:> # dataFromClient, address = server_socket.recvfrom(256)
Om jag ser rätt så är flag=256:
198: #define MSG_EOR MSG_EOR
199: MSG_WAITALL = 0x100, /* Wait for a full request. */
Prova med server_socket.recvfrom(64) istället (alltså MSG_DONTWAIT = 0x40, /* Nonblocking IO. */).
Utgick från att det var mottagningsbuffer inom parantesen.. Hmm..
Re: Python tutorial för att lära sig grunderna?
Utgå inte från någonting alls, RTFM...
> IndentationError: unexpected indent
Ja men fixa det då. Det syns ju direkt i rutan ovan.
> IndentationError: unexpected indent
Ja men fixa det då. Det syns ju direkt i rutan ovan.
Re: Python tutorial för att lära sig grunderna?
Kod: Markera allt
if(GPIO.input(17) == 0):
print "Detection"
Kod: Markera allt
if (GPIO.input(17) == 0):
print "Detection"
Kod: Markera allt
if GPIO.input(17) == 0:
print "Detection"
Re: Python tutorial för att lära sig grunderna?
> Du kan inte ha parentes direkt efter if utan mellanslag.
??
(Python 2.7.8...)
Kod: Markera allt
>>> if(a == 1):
... print "OK"
...
OK
>>>
(Python 2.7.8...)
Senast redigerad av sodjan 4 januari 2016, 13:42:50, redigerad totalt 2 gånger.
Re: Python tutorial för att lära sig grunderna?
Kod: Markera allt
while True:
dataFromClient, address = server_socket.recvfrom(64)
options[dataFromClient]()
if(GPIO.input(17) == 0):
print "Detection"
Re: Python tutorial för att lära sig grunderna?
Erkänner att jag inte läste manualen... och att utgå från saker innan är dumt..sodjan skrev:Utgå inte från någonting alls, RTFM...
Säkert feltolkning av mig när det både finns bufsize och flaggor....sodjan skrev: "socket.recvfrom(bufsize[, flags])
Precis därför jag behövde Python for dummies så att jag kan lära mig vad som menas med indent:en....sodjan skrev: > IndentationError: unexpected indent
Ja men fixa det då. Det syns ju direkt i rutan ovan.
https://www.codecademy.com/learn/python
Var precis det jag var ute efter.. lättläst, grundlig och tydlig.
Re: Python tutorial för att lära sig grunderna?
> Säkert feltolkning av mig när det både finns bufsize och flaggor....
Nej, fel av mig i hastigheten! Det bör nog vara (256, 64).
Default för flags är 0. Jag undrade varför det var 256...
Nej, fel av mig i hastigheten! Det bör nog vara (256, 64).
Default för flags är 0. Jag undrade varför det var 256...