Direct Download Center

มาคุยกันก่อน


คลิกที่นี่ เข้ามารู้จักกันก่อน
Mr. P

ตัวอย่างโค๊ดไพธอน

Python ติดต่อกับ Serial Port บน windows อย่างง่าย

โพสต์22 มิ.ย. 2553, 7:43โดยWisit P.   [ อัปเดต 4 ก.พ. 2554, 18:52 ]

    หลังจากเราได้ทราบถึงโมดูลไพธอน pySerial ตัวเก่ง ซึ่งทำโปรแกรมของเราที่พัฒนาด้วยภาษาไพธอน ฉีกหนีความจำเจ ที่กระทำโต้ตอบกับผู้ใช้เพียงแค่หน้าจอ และแป้นพิมพ์ ให้สามารถที่จะติดต่อกับอุปกรณ์ที่ต่อที่พอร์ตอนุกรมของคอมพิวเตอร์ของเราได้ด้วย

    ซึ่งตรงจุดนี้ จะเป็นการแนะนำการใช้ไพธอนสื่อสารผ่านพอร์ตอนุกรม (Serial Port) บนระบบปฏิบัติการวินโดวน์เท่านั้น ส่วนการเขียนโค๊ดและการติดตั้งบน Linux ขอให้เพื่อนลองไปศึกษาเอาเองนะครับ 

สิ่งที่จำเป็นต้องมี
Python 2.4 ไพธอนเวอร์ชั่น 2.4 
PyWin32: ใช้สำหรับติดต่อเรียกใช้บริการบนระบบปฏิบัติการวินโดวส์และคลาสใน Microsoft Foundation Classes: MFC
pySerial : โมดูลสำหรับใช้ python ติดต่อกับ serial port

 
 


โค๊ดตัวอย่างง่ายๆ ของการใช้โมดูล pySerial ในการติดต่อพอร์ตอนุกรม

import serial  # เรียกโมดูล เข้ามาทำงาน
ser = serial.Serial (0)  # เปิด  port อนุกรม พอร์ตแรก ที่คอมพิวเตอร์มองเห็นขณะนั้น
print ser.isOpen     #  แสดงค่าว่าพอร์ตนั้น ได้ถูกเปิดหรือยัง
print ser.portstr     #   แสดงค่าชื่อพอร์ต 
ser.write("\n\rData sent from computer1")   # ส่งข้อมูลออกพอร์ต
ser.close()    # ปิดพอร์ตทุกครั้ง หลังการใช้งาน




    ในตัวอย่างนี้ เป็นเพียงการทดสอบว่าไพธอนเอง ก็สามารถที่จะติดต่อกับพอร์ตอนุกรมของคอมพิวเตอร์ได้เช่นกัน เพื่อนๆอาจจะนำไปประยุกต์โดยใช้ไพธอนเป็นตัวกลางในการติดต่ออุปกรณ์ภายนอก ที่ติดต่ออยู่กับพอร์ตอนุกรมของเครื่องคอมพิวเตอร์ได้ เช่น ไมโครคอลโทรลเลอร์ ซึ่งเราสามารถนำหลักการนั้ ไปประยุกต์ได้มากมาย ซึ่งจะเห็นว่าภาษาไพธอนก็เป็นภาษาหนึ่ง ที่ทำงานได้ครอบจักรวาลจริงๆ 
 

หากต้องการทราบรายละเอียดเพิ่มเติม สามารถเข้าไปศึกษาได้จาก Short Introduction ได้โดยตรง 

วิดีโอ YouTube



สคริปต์ไพธอนนับตัวอักษรที่ต้องการ

โพสต์3 มี.ค. 2553, 7:04โดยWisit P.   [ อัปเดต 4 ก.พ. 2554, 18:49 ]

    วันนี้ ขอนำเสนอสคริปต์ไพธอนสำหรับนับตัวอักษรที่เราต้องการในประโยค สคริปต์นี้ผมได้มาจาก slide ชุดหนึ่ง หลังจากที่ได้ลองรันสคริปต์แล้วพบว่า สคริปต์นี้ทำงานได้ค่อนข้างดีเลยทีเดียว ซึ่งเค้าทำออกมาเป็นโมดูล นั่นก็หมายความว่า เพื่อนต้อง save ไฟล์นี้ไว้ที่โฟลเดอร์ C:\Python24\Lib ด้วยนะครับ 
 
 

ชื่อไฟล์ WORD_FRE.py  แล้วบันทึกไว้ที่ C:\Python24\Lib

import regex, string

word = regex.compile( "[" + string.letters + "]+" )

def countwords(text, pattern=word):
    dict = {}
    end = 0
    try:
       while 1:
          first = pattern.search(text, end)
          word = pattern.group(0)
          end = len(word) + first
          try:
             dict[word] = dict[word] + 1
          except KeyError:
             dict[word] = 1
    except regex.error:
       pass # triggers when first index goes to -1, terminates loop.
    items = []
    for word in dict.keys():
        items.append( (dict[word], word) )
    items.sort()
    items.reverse()
    return items

# if run as a script, count words in stdin.
if __name__ == "__main__":
   import sys
   x = countwords( sys.stdin.read() )
   s = map(str, x)
   t = string.joinfields(s, "\n")
   print t

จากนั้นให้เราเขียนไฟล์ไพธอนขึ้นมาอีกไฟล์หนึ่ง เพื่อจะทดลองเรียกโมดูล WORD_FRE ขึ้นมาทำงาน ในที่นี้ผมตั้งชื่อไฟล์ test.py ( จะ save ไว้ที่ไหนก็ได้ครับ สำหรับไฟล์นี้)

ชื่อไฟล์ test.py

import WORD_FRE
import regex

punctuations = regex.compile("[.,()!\"-?]")
print WORD_FRE.countwords('"Hello!" said I. "Um, hello," she said.',punctuations)

ให้ทดลองรันไฟล์นี้ที่ Pyscripter ครับ  จะได้ผลลัพธ์ดังนี้ครับ

>>> 
[(4, '"'), (2, '.'), (2, ','), (1, '!')]

ซึ่งเจ้าตัวโมดูล WORD_FRE จะทำการนับจำนวนตัวอักษรที่เรากำหนดไว้ที่ตัวแปร punctuations เพื่อนลองๆ ทำความเข้าใจโมดูลนี้ดูอีกครั้งครับ แล้วจะค่อยๆเข้าใจมากขึ้น สวัสดีครับ

Python ส่งข้อมูลผ่าน UDP Protocol อย่างง่าย

โพสต์15 ต.ค. 2552, 1:24โดยSample User   [ อัปเดต 26 ก.พ. 2553, 6:10 โดย Wisit P. ]

   
ตัวอย่างนี้เป็นการเขียนไพธอนผ่านระบบแลน โดยให้คอมพิวเตอร์สองเครื่องที่ติดตั้งตัวแปลภาษาไพธอนเอาไว้แล้ว ทำการคุยกันหรือติดต่อกันผ่าน UDP protocol โดยทำการเปิดพอร์ตที่เครื่องคอมพิวเอตร์ทั้งสอง โดยใช้พอร์ตหมายเลข port = 8081  จากนั้นเมื่อเรารันคำสั่งทั้งที่ตัว server และ ตัว client ที่ตัว server ทำหน้าที่เปิดพอร์ต 8081  และรอรับ message ที่ส่งมาจากตัว client โดยทำการวนลูปไปเรื่อยๆ (วนลูปไม่รู้จบ) และที่ตัว client ทำการส่งข้อความ "Holy Guido! It's working." พร้อมกับหมายเลข IP Address ของตัวเองออกไป



    ที่หน้าจอ cmd ของที่ตัว server จะปรากฏข้อความ พร้อมทั้ง IP Address ของตัว client ที่ส่งมา ให้สังเกตหมายเลขไอพีแอดแดรสบนหน้าจอคอมพิวเตอร์



หน้าจอของ client 


หน้าจอของ server


server.py
import socket port = 8081
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# Accept UDP datagrams, on the given port, from any sender
s.bind(("", port))
print "waiting on port:", port
while 1:
    # Receive up to 1,024 bytes in a datagram
    data,addr = s.recvfrom(1024)
    print "Received:", data, "from", addr


client.py
import socket port = 8081
host = "10.7.29.14"
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto("Holy Guido! It's working.", (host, port))


หมายเหตุ หากต้องการทดลองที่เครื่องตนเอง ให้แก้ไขที่ไฟล์ client.py ให้ host = "localhost"

Credit: Jeff Bauer

1-3 of 3