`

串口编程 Python 、pyserial

 
阅读更多

1、串口编程 Python 、pyserial 

网址:http://www.douban.com/group/topic/7400483/

import sys,os 
import serial 
ser=serial.Serial(port='COM5',baudrate=9600,bytesize=8,parity='N',stopbits=1,timeout=5) 

str="" 
while ser.isOpen(): 
x=ser.readline(200) 
print x, 
str=str+x 

ser.close() 

 

2、python socket编程 UDP

网址:http://www.2cto.com/kf/201412/360043.html

server.py

import socket
 
BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(server_addr)
while True:
     print "waiting for data"
     data,client_addr = server.recvfrom(BUF_SIZE)
     print 'Connected by ',client_addr,' Receive data : ',data
     server.sendto(data,client_addr)
server.close()

 client.py

 

import socket
import struct
 
BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
 
while True:
     data = raw_input("Please input some string > ")
     client.sendto(data,server_addr)
     data,addr = client.recvfrom(BUF_SIZE)
     print "Data : ",data
client.close()

 3、python网络编程之TCP通信实例和socketserver框架使用例子

1)TCP是一种面向连接的可靠地协议,在一方发送数据之前,必须在双方之间建立一个连接,建立的过程需要经过三次握手,通信完成后要拆除连接,需要经过四次握手,这是由TCP的半关闭造成的,一方在完成数据发送后要发送一个FIN来终止这个方向的连接,一个TCP连接在收到一个FIN后仍能发送数据,但应用程序很少这么做,下面是TCP连接建立和拆除的过程:


 

2)python可以实现TCP服务器和客户端的编程,下面是代码:

服务器端:

#!/usr/bin/env python
import socket
host="localhost"
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
while 1:
 sock,addr=s.accept()
 print "got connection form ",sock.getpeername()
 data=sock.recv(1024)
 if not data:
  break
 else:
  print data

 
 
客户端:

#!/usr/bin/env python
import socket
host="localhost"
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send("hello from client")
s.close()

 3)使用socketserver框架编写TCP服务器

    Socketserver模块可以简化网络服务器的编写,它包含了四种服务器类,TCPServer使用TCP协议,UDPServer使用UDP协议,还有两个不常使用的,即UnixStreamServer和UnixDatagramServer,这两个类仅仅在unix环境下有用。

    使用服务器编程,需要进行一下步骤,先建立一个请求句柄类,这个类继承自BaseRequestHandler类,建立这个类后重写它的handle方法,然后实例化服务器类,把主机名,端口号和句柄类传给它,然后调用server_forever()方法来处理请求。

   使用socketserver框架的服务器:

import SocketServer
host=''
port=10000
class Handler(SocketServer.StreamRequestHandler):

 def handler(self):
  addr=self.request.getpeername()
  print "got connection from",addr
  self.wfile.write("connected")

server=SocketServer.TCPServer((host,port),Handler)
server.serve_forever()

 上面的socketserver服务器只能处理一个请求,如果要处理多个请求,可以用forking或者threading实现,实现多进程或者多线程服务器。下面是使用forking和threading的服务器代码:

使用forking的服务器:

from SocketServer import TCPServer,ForkingMixIn,StreamRequestHandler
class Server(ForkingMixIn,TCPServer):pass
class Handler(StreamRequestHandler):

 def handle(self):
  addr=self.request.getpeername()
  print "got connection from",addr
  self.wfile.write('connected')

server=Server((''.10000),Handler)
server.serve_forever()

 使用多线程的服务器:

 

from SocketServer import TCPServer,ThreadingMixIn,StreamRequestHandler
class Server(ThreadingMixIn,TCPServer):pass
class Handler(StreamRequestHandler):
 def handle(self):
  addr=self.request.getpeername()
  print "got connection from",addr
  self.wfile.write("connected")

server=Server(('',10000),Handler)
server.serve_forever()

 4、python Tcp 小例子

服务端代码server.py
#coding:utf-8
import socket
import datetime
 
"""
定义基本的信息
"""
HOST = ""            #主机
PORT = 23151         #端口
ADD = (HOST, PORT)
BUFFERSIZE = 1024    #缓冲区大小
 
"""
建立socket,绑定地址和开始监听
"""
TcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    #创建socket
TcpSerSock.bind(ADD)       #绑定地址和端口
TcpSerSock.listen(10)      #开始监听,监听数目同时间不超过10个
 
"""
socekt建好后,开始进行连接和数据的传输
"""
print "服务器等待连接......"
TcpCliSock, addr = TcpSerSock.accept()  #开始连接
while True:
    date = TcpCliSock.recv(BUFFERSIZE)   #接受数据
    if date:     #如果接受到了数据
        curTime = datetime.datetime.now()  #获得当前时间 格式是:datetime.datetime(2012, 3, 13, 1, 29, 51, 872000)
        curTime = curTime.strftime('%Y-%m-%m %H:%M:%S')     #转换格式
        print "%s  %s" % (addr, curTime) 
        print date
        #发数据
        sendDate = raw_input("input:")
        TcpCliSock.send('%s' % (sendDate))   #发数据   
        if date == '88':
            break  
     
"""
连接完毕,关闭套接字
"""
print "server close"
TcpCliSock.close()
TcpSerSock.close()
 
 
 
 
 
 
 
客户端代码 client.py
#coding:utf-8
import socket
import datetime
 
"""
定义基本的信息: 主机和端口要和服务器一致
"""
HOST = "localhost"  #服务其地址
PORT = 23151       #服务器端口
BUFFERSIZE = 1024
ADDR = (HOST, PORT)
 
"""
建立套接字,开始连接
"""
TCPClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPClient.connect(ADDR) #连接服务器
 
"""
开始进行数据的传输
"""
while True:
    senddate = raw_input("input:")
    if senddate:
        TCPClient.send('%s' % (senddate))  #发送数据
         
    recvdate = TCPClient.recv(BUFFERSIZE)    #接受数据
    curTime = datetime.datetime.now()  #获得当前时间 格式是:datetime.datetime(2012, 3, 13, 1, 29, 51, 872000)
    curTime = curTime.strftime('%Y-%m-%m %H:%M:%S')     #转换格式
    print "%s  %s" % (HOST, curTime)
    print  recvdate
    if recvdate == '88':
            break  
     
"""
传输完毕,关闭套接字
"""
print "client close"
TCPClient.close()

 

  • 大小: 19.4 KB
  • 大小: 20.4 KB
分享到:
评论

相关推荐

    python3+Tkinter+GUI界面+pyserial+串口+串口调试助手

    一个用python3的Tkinter模块和pyserial模块写的串口调试助手,想学习上位机串口编程的要参考一下,Tkinter做的界面不够qt炫酷,但也够用

    在windows下使用python进行串口通讯的方法

    Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,但是试了几个都没有用,所以想到用GitHub下载库文件,步骤分为: 1.在Github下载python-...

    基于wxPython和PySerial实现的串口助手

    使用了Python、wxPython、PySerial、线程、图片内嵌等多种实用GUI编程技术,且单文件实现,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!

    STC 8051微控制器的命令行编程器_python_代码_相关文件_下载

    运行stcflash需要Python(>=2.6)及其串口扩展模型pySerial 。如果您使用的是主流 Linux 发行版或 OS X,则很可能会预先安装 Python。另一方面,可能需要手动安装模块 pySerial。例如,在某些版本的 Ubuntu 上,您...

    pyserial.zip

    python 串口编程 补丁 工具 linux windows 都准备齐全

    python串口通信案例

    Python串口通信是指使用Python编程语言通过串口进行数据的发送和接收。串口通信常用于连接计算机与外部设备(如传感器、嵌入式系统等)进行数据交互。 以下是使用Python进行串口通信的一般步骤和描述: 导入串口...

    基于PySide和PySerial实现的串口助手

    基于PySide和PySerial实现的串口助手,...使用了Python、PySide、PySerial、线程、Queue等多种实用GUI编程技术,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!

    Python操作串口的方法

    首先需确保安装了serial模块,如果没安装的话就安装一下python-pyserial。 一个Python实现的串口Echo import serial import sys try: ser = serial.Serial('/dev/ttyUSB0', 9600) except Exception, e: print '...

    PyQT5_Pyserial_USBCAN_UDS_CANTP.zip

    使用PyQT5和Pyserial库,编写的虚拟串口USBCAN小蓝盒的CAN UDS诊断工具上位机,实现了报文ID的过滤,UDS诊断命令通过CAN TP层协议进行收发。学习Python串口编程和基本CAN TP协议可以参考。

    Serial.rar

    python制作的简单串口读取工具,含有源代码,编程时可以进行参考

Global site tag (gtag.js) - Google Analytics