📄 pycom.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 + -