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()
相关推荐
一个用python3的Tkinter模块和pyserial模块写的串口调试助手,想学习上位机串口编程的要参考一下,Tkinter做的界面不够qt炫酷,但也够用
Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,但是试了几个都没有用,所以想到用GitHub下载库文件,步骤分为: 1.在Github下载python-...
使用了Python、wxPython、PySerial、线程、图片内嵌等多种实用GUI编程技术,且单文件实现,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!
运行stcflash需要Python(>=2.6)及其串口扩展模型pySerial 。如果您使用的是主流 Linux 发行版或 OS X,则很可能会预先安装 Python。另一方面,可能需要手动安装模块 pySerial。例如,在某些版本的 Ubuntu 上,您...
python 串口编程 补丁 工具 linux windows 都准备齐全
Python串口通信是指使用Python编程语言通过串口进行数据的发送和接收。串口通信常用于连接计算机与外部设备(如传感器、嵌入式系统等)进行数据交互。 以下是使用Python进行串口通信的一般步骤和描述: 导入串口...
基于PySide和PySerial实现的串口助手,...使用了Python、PySide、PySerial、线程、Queue等多种实用GUI编程技术,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!
首先需确保安装了serial模块,如果没安装的话就安装一下python-pyserial。 一个Python实现的串口Echo import serial import sys try: ser = serial.Serial('/dev/ttyUSB0', 9600) except Exception, e: print '...
使用PyQT5和Pyserial库,编写的虚拟串口USBCAN小蓝盒的CAN UDS诊断工具上位机,实现了报文ID的过滤,UDS诊断命令通过CAN TP层协议进行收发。学习Python串口编程和基本CAN TP协议可以参考。
python制作的简单串口读取工具,含有源代码,编程时可以进行参考