python串口模块找不到_python 串口访问模块...

本文介绍了一个Python串口通信类ComThread,包括初始化、开始、停止等功能。示例中展示了如何打开串口,设置波特率,接收和发送数据,以及异常处理。在主函数中进行了类的实例化和测试,实现了串口通信的基本操作。
摘要由CSDN通过智能技术生成

import sys,threading,time;

import serial;

import binascii,encodings;

import re;

import socket;

from struct import *;

class ComThread:

def __init__(self, Port=0):

self.l_serial = None;

self.alive = False;

self.waitEnd = None;

self.port = Port;

def waiting(self):

if not self.waitEnd is None:

self.waitEnd.wait();

def SetStopEvent(self):

if not self.waitEnd is None:

self.waitEnd.set();

self.alive = False;

self.stop();

def start(self):

self.l_serial = serial.Serial();

self.l_serial.port = self.port;

self.l_serial.baudrate = 9600;

self.l_serial.timeout = 2;

self.l_serial.open();

if self.l_serial.isOpen():

self.waitEnd = threading.Event();

self.alive = True;

self.thread_read = None;

self.thread_read = threading.Thread(target=self.FirstReader);

self.thread_read.setDaemon(1);

self.thread_read.start();

return True;

else:

return False;

def FirstReader(self):

while self.alive:

# 接收间隔

time.sleep(0.1);

try:

data = '';

n = self.l_serial.inWaiting();

if n:

data = data + self.l_serial.read(n);

for l in xrange(len(data)):

print '%02X' % ord(data[l]),

# 发送数据

snddata = '';

snddata += chr(97)

tt = 0x12345678;

snddata += pack('i', tt)

snddata += chr(0x64)

self.l_serial.write(snddata);

# 判断结束

if len(data) > 0 and ord(data[len(data)-1])==0x45:

#pass;

break;

except Exception, ex:

print str(ex);

self.waitEnd.set();

self.alive = False;

def stop(self):

self.alive = False;

self.thread_read.join();

if self.l_serial.isOpen():

self.l_serial.close();

#测试用部分

if __name__ == '__main__':

rt = ComThread();

try:

if rt.start():

rt.waiting();

rt.stop();

else:

pass;

except Exception,se:

print str(se);

if rt.alive:

rt.stop();

print '';

print 'End OK .';

del rt;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值