⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pycom.py

📁 python写的串口程序
💻 PY
字号:
import gobject,gtk,gtk.glade
import serial
from threading import Thread
class serialThread (Thread):
    def __init__ (self,mainwin):
        Thread.__init__(self)
        self.mainwin = mainwin
    def run (self):
	while(1):
		if(self.mainwin.sChanel.isOpen()):
			i=""
			i=self.mainwin.sChanel.read(1)
			if(i!=""):
				print i
				gtk.threads_enter()
				self.mainwin.selfPrint(i)
				buffer=self.mainwin.infoWin.get_buffer()
				if(buffer.get_end_iter().get_line_offset()>79):
					self.mainwin.selfPrint("\n")   #add new line every 80 char
				gtk.threads_leave()

class comWin:
        comWin=None
	port=None
	baudrate=None
	dataBit=None
	stopBit=None
	parity=None
	command=None
	infoWin=None
	statuBar=None
	sChanel=serial.Serial(None)		
	##############################################################
	def btOpenClick(self,widget,data=None):
		if(self.sChanel.isOpen()):
			self.sChanel.close()
			self.selfPrint( "serial chanel closed\n")
			return
		self.sChanel.timeout=0.5
		self.sChanel.port=self.port.get_active_text()
		self.sChanel.baudrate=self.baudrate.get_active_text()
		self.sChanel.bytesize=int(self.dataBit.get_active_text())
		self.sChanel.stopbits=int(self.stopBit.get_active_text())
		self.sChanel.parity=self.parity.get_active_text()[0]
		print self.sChanel
		self.sChanel.open()
		if(self.sChanel.isOpen()):
			self.selfPrint( "serial chanel opened\n")
		else:
			self.selfPrint( "can onpen serial chanel as you set\n")
	def btSentClick(self,widget):
		istr=self.command.get_text()
		self.selfPrint( "sent: "+istr+"\n")
		if(istr!=""):
			self.sChanel.write(istr)
	def btSentFileClick(self,widget,data=None):
		return None
	def readOnIdle(self):
		if(self.sChanel.isOpen()):
			i=self.sChanel.read(1)
			if(i!=""):
				self.selfPrint(i)
				buffer = self.infoWin.get_buffer()
				if(buffer.get_end_iter().get_line_offset()>79):
					self.selfPrint("\n")   #add new line every 80 char
		return True
	def selfPrint(self,info):
		buffer = self.infoWin.get_buffer()
		buffer.insert(buffer.get_end_iter(), info)
		return None
	#################################################################
#	signals_dict={
#	"on_openButton_clicked":btOpenClick,
#	"on_sentButton_clicked":btSentClick,
#	"on_sentFileButton_clicked":btSentFileClick
#	}
	def __init__(self):
		self.comWin=gtk.glade.XML("pycom.glade","mainWin")
		#self.comWin.signal_autoconnect(self.signals_dict)
		self.mainWin=self.comWin.get_widget("mainWin")
		self.port=self.comWin.get_widget("port")
		self.port.set_active(0);
		self.baudrate=self.comWin.get_widget("Baudrate")
		self.baudrate.set_active(0);
		self.dataBit=self.comWin.get_widget("dataBit")
		self.dataBit.set_active(3);
		self.stopBit=self.comWin.get_widget("stopBit")
		self.stopBit.set_active(0);
		self.parity=self.comWin.get_widget("parity")
		self.parity.set_active(0);
		self.command=self.comWin.get_widget("ComdText")
		self.infoWin=self.comWin.get_widget("textview1")
		self.statuBar=self.comWin.get_widget("statusbar1")
		self.mainWin.connect("destroy",gtk.main_quit)
		button=self.comWin.get_widget("sentButton")
		button.connect("clicked",self.btSentClick)
		button=self.comWin.get_widget("sentFileButton")
		button.connect("clicked",self.btSentFileClick)
		button=self.comWin.get_widget("openButton")
		button.connect("clicked",self.btOpenClick)
		#gobject.timeout_add(100, self.readOnIdle)
		gobject.idle_add(self.readOnIdle)
		#self.st=serialThread(self)
		#self.st.start()
###############################################################	
def main():
	# Initialize threads
	#gtk.threads_init()
	comWin()
	#gtk.threads_enter()
	gtk.main()
	#gtk.threads_leave()
        return 0
	
if (__name__=="__main__"):
	main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -