关于pySerial串口读数,readline每次只显示一个

我是一个python新手,最近突发奇想想去玩一下硬件。用arduino对电脑的串口进行输出时,arduinoIDE的串口监视器可以监视到每秒都有新的数据从串口传递过来。但是我使用python serial模块,使用readline每次只读取到一个结果,程序就终止了。想向各位大神请教一下,应该怎么不断的获取数据

1个回答

你可以放到一个循环中不停的readline读取

AsserHong
AsserHong 回复oyljerry: 谢谢您的回答,完美的解决了我的问题
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ReadLine 能读数吗?
………………rnFileInfo sor=new FileInfo("aad.txt");rnStreamReader strm=sor.OpenText();rnrn………………rn………………rnint a=strm.ReadLine();rn rnConsole.WriteLine("0",a);rnrnrn请问 ReadLine 能读数吗?这个有错误说不能把string 隐式转换为intrn那该怎么办?我想从文件中读出一个数……
pyserial pyserial pyserial pyserial pyserial pyserial
pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial pyserial
Python 学习笔记:串口 pySerial
安装pyserial pip install pyserial 查看可用的端口 import serial.tools.list_ports import serial # 查找COM口 def SerialList(): port_list = list(serial.tools.list_ports.comports()) serial_list = [] if len(po...
Pyserial+PyQT+Python3.4串口工具——界面
Pyserial+PyQt+Python串口工具
pyserial的例子。一个简单串口助手
pyserial的例子。一个简单串口助手
PyQt4和Pyserial实现的串口助手
PyQt4和Pyserial实现的串口助手,实现发送、接收、十六进制显示灯功能,界面美观
python的串口操作(pyserial)源代码
python串口操作,使用python的pyserial实现,可进行hex转换发送,hex接收显示,如有不理解的地方,请参见博客:https://blog.csdn.net/absinjun
串口读数接口
串口读数接口,用于读取串口数据,方便使用,是调试串口程序必备的工具。
串口读数的问题
我用MSCOMM控件做了一个串口读数的程序,它在98下运行正常,但在XP下有时能读到数据,有时读不到,运行很不稳定,请问可能是什么原因?
Labview串口读数
基于Labview的串口上位机程序,可以设置波特率、位数,可用于上位机波形显示等~~~~~~欢迎下载
232串口读数
如何用汇编读取232串口数据?急急!!!!!!!!!!!!!
串口读数问题,急!
一台称重仪表通过RS232将称重值传入串口1,我用电脑的超级终端看信号,为:rnST,NT,+ 002890kgrnST,NT,+ 002890kgrnST,NT,+ 002890kgrnST,NT,+ 002890kgrnST,NT,+ 002890kgrn......rnrn是一组连续的读数,然而我用常用的串口工具如:AccessPort1.33来看,读出的信号却为:rnS袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛rnS袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛rnS袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛rnS袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛rnS袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛rn......rnrnrn说明:超级终端与AccessPort1.33串口工具的波特率、停止位、奇偶校验等等参数设置的都是一模一样的。我用原先好用的软件代码来读串口信号也都是类似:S袁N袁+?0哺990腌?S袁N袁+?0哺9?0腌鐛 这样的信号,无法判别其中的称重值,不知道是哪儿出了问题,请高手指教,谢谢!rn
串口读数问题
我们的工作中用到一个磁卡传感器,通过串口通讯。微机不断地往串口写一串指令码(读卡指令码),该传感器就会立刻返回一串代码作为回应。如果没有磁卡接触传感器,则回应吗为:"\nA1F3C\r",若有磁卡接触传感器,则回应码为:"\nA1F0007CA32901\r",但我们在serialPort_DataReceived()事件代码中接收有磁卡接触回应码时却总是收到"\nA1F0007",即8个字符,后面的却收不到,造成接收数据不全,代码如下:rnstring message = "";rnmessage = serialPort.ReadExisting(); rnif (message.Substring(0, 7) == "\nA1F3C\r" && message.Length == 7)rnrn serialPort.DiscardInBuffer(); //清除接收缓冲区rn serialPort.DiscardOutBuffer();rn return;rn rnMessageBox.Show(message); //message显示的是 \nA1F0007rnrn总是得不到完整的回应码,请问该如何解决此问题?谢谢各位!rnrn
串口读数的问题?
我从vb的串口空间Mscomm读入数据,十六进制(InputMode=comInputModeBinary)rn再转化成字符串,我是一个一个字节读入的,但如果读入的字节以0开头如0A,我只读进了Arn0不见了,我想问有什么方法让读进的也是0A么?rn很困扰我的,谢谢了!
请教串口读数问题
串口读出18位数之后,要如何区分符号位,小数点位置?本人初学,看不明白说明,请各位指点一二,谢谢!rn仪表说明如下:rn连续输出格式为18个字节。rn连续输出格式rnSTX SWA SWB SWC X X X X X X X X X X X X CR CKSrn1 2 3 4 5 6rn其中:rnASCII起始符(02H)rn状态字A,B,Crn显示重量可能是毛重也可能是净重,6位不带符号和小数点的数字rn皮重值,6位不带符号和小数点的数字rnASCII同车符(ODH)rn可选的校验和rnrn状态字A rnBits0,1,2 rn0 1 2 小数点位置 rn1 0 0 XXXXXOrnO 1 O XXXXXXrn1 1 0 XXXXX.Xrn0 0 1 XXXX.XXrn1 0 1 XXX.XXXrnBits3,4  rn4 3 分度值因子 rn0 1 X1rn1 0 X2rn1 1 X5rnBit5 恒为1rnBit6 恒为1rn
C#串口读数程序
c#开发的通过计算机串口读取其他硬件设备的数据的小程序
基于wxPython和PySerial实现的串口助手
基于wxPython和PySerial实现的串口助手,实现了常用的接收、发送、二进制显示、二进制发送等功能; 使用了Python、wxPython、PySerial、线程、图片内嵌等多种实用GUI编程技术,且单文件实现,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!
关于readLine()
其他的read()形式好象都能读到\nrn读取后写出去 原先是几行 写出去还是几行rnrnrn用readLine()的话,再写出去 居然不换行了 是不是readLine()读不到\n ?
串口通讯的python模块——pySerial
pySerial Overview This module encapsulates the access for the serial port. It provides backends for Python running on Windows, Linux, BSD (possibly any POSIX compliant system), Jython and IronPy...
神奇的python(六)之python的串口操作(pyserial)
简介:最近项目突然要使用python串口操作,这不,查资料,翻文档,是时候写一份串口操作的简要用法,以后有时间可以使用pyqt再写个界面,弄个串口调试终端。 (1) 安装pyserial库 pip install pyserial (2) pyserial库常用函数介绍 serial = serial.Serial(‘COM1’, 115200) 打开COM1并设置波特率为1152...
Tkinter PySerial串口程序下面怎么办啊???
现在Tkinter界面部分已经完成了,rnPySerial部分串口打开也已经完成了。rn线程串口读取函数的例子也已经在Google上找到了。rnrn我现在的问题是:怎么把这三部分给结合起来啊???感觉一点头绪都没有,希望高手指点,下面是我现在的代码和运行界面:rn[code=Python]# coding=gbkrnimport sys as sysrnimport ttk as ttkrnimport Tix as tixrnimport Tkinter as Tkrnrnimport serial rnimport threadingrnrnrnglobal comXrnrnrndef ComSwitch(event):rn global serxrn if(event.widget['text'] == '打开串口'.decode('gbk')):rn event.widget['text'] = '关闭串口'.decode('gbk')rn comX = ser.Serial('com1',baudrate=9600, bytesize=8,parity='N',stopbits=1,xonxoff=0,timeout=1)rn else:rn event.widget['text'] = '打开串口'.decode('gbk')rn comX.close()rnrn rnroot = Tk.Tk()rnroot.title("XIANSir's Light-weight COM Util")rntxt0 = Tk.Text(root,width=80,height=24,border=5)rntxt0.pack(side='top')rnsec0 = Tk.Frame(root,border=4)rnsec0.pack(side='top',anchor='w')rnsec1 = Tk.Frame(root,border=4)rnsec1.pack(side='top',anchor='w')rnrncomx = Tk.StringVar(root,'COM1')rnTk.Label(sec0,text='串口号: '.decode('gbk')).pack(side='left')rnttk.Combobox(sec0,text=comx,values=['COM1', 'COM2', 'COM3'],width='12').pack(side='left')rnrnbaud = Tk.StringVar(root,"9600")rnTk.Label(sec0,text=' 波特率: '.decode('gbk')).pack(side='left')rnttk.Combobox(sec0,textvariable=baud,values=['4800','9600','19200'],width='12').pack(side='left')rnrnbtnSW = Tk.Button(sec0,text='打开串口'.decode('gbk'),padx=8)rnbtnSW.pack(side='left',padx=16)rnbtnSW.bind('',ComSwitch)rnrndlen = Tk.StringVar(root,'8')rnTk.Label(sec1,text='数据位: '.decode('gbk')).pack(side='left')rnttk.Combobox(sec1,textvariable=dlen,values=['9','8','7','6','5,','4'],width='12').pack(side='left')rnrnslen = Tk.StringVar(root,'1')rnTk.Label(sec1,text=' 停止位: '.decode('gbk')).pack(side='left')rnlst3 = ttk.Combobox(sec1,textvariable=slen,values=['1','2'],width='12').pack(side='left')rnrnchck = Tk.StringVar(root,'None')rnTk.Label(sec1,text=' 校验位: '.decode('gbk')).pack(side='left')rnlst4 = ttk.Combobox(sec1,textvariable=chck,values=['None','Odd','Even','Mark','Space'],width='12').pack(side='left')rnrnroot.mainloop()rn[/code]rnrn[img=http://hi.csdn.net/attachment/201105/19/9855646_13058149108VFu.jpg][/img]rnrn[img=http://hi.csdn.net/attachment/201105/19/9855646_13058149117RE0.jpg][/img]rnrnrnrnrnrnrnrn
基于PySide和PySerial实现的串口助手
基于PySide和PySerial实现的串口助手,实现了常用的接收、发送、二进制显示、二进制发送等功能; 使用了Python、PySide、PySerial、线程、Queue等多种实用GUI编程技术,简单易懂,可以作为学习GUI编程的一个很好的例程,也可以作为自己实现更完整串口助手功能的起点!!!
串口读数关闭不掉问题
我的目的是,单机按钮,调用Main1()方法取数,然后给textbox赋值,一直开着怕对程序压力大,就关掉了。我在自己电脑上调试一点问题没有,将debug文件换了台电脑时运行发现,当我点击2次按钮时会报Access to the port 'COM1' is denied,这个错误,后来我加上弹窗之后发现一直在弹窗,也就是说mySerialPort.close();方法失效,换成mySerialPort.Dispose();也不可以,请问这是怎么回事。下面代码rnrnrnSerialPort mySerialPort = null;rn/开启端口rn public void Main1()rn rn mySerialPort = new SerialPort("COM2");rnrn mySerialPort.BaudRate = 9600;rn mySerialPort.Parity = Parity.None;rn mySerialPort.StopBits = StopBits.One;rn mySerialPort.DataBits = 8;rn mySerialPort.Handshake = Handshake.None;rn mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);rn mySerialPort.Open();rn rn//读取数据rn private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)rn rn rn SerialPort sp = (SerialPort)sender;rn string indata = sp.ReadExisting();rn if (indata.Contains("*0") && indata.Contains("0\r"))rn rn mySerialPort.Close();rn rn string zfc = indata.Replace("*0", "$");rn string[] sz = zfc.Split('$');rn string xxx = sz[1].Replace("0\r", "!");rn string[] sz2 = xxx.Split('!');rn MessageBox.Show(sz2[0].Trim());//此处加的弹窗rn SetText(sz2[0].Trim());rn rn rn rnrn//textbox赋值rnprivate delegate void SetTextCallback(string text);rn private void SetText(string text)rn rn // InvokeRequired需要比较调用线程ID和创建线程IDrn // 如果它们不相同则返回truern if (this.textBox2.InvokeRequired)rn rn SetTextCallback d = new SetTextCallback(SetText);rn this.Invoke(d, new object[] text );rn rn elsern rn this.textBox2.Text = text;rn rn
有关串口读数的问题,HELP!
小弟在做一个串口通讯的开发,用的是SDK,当返回的是二进制的数据,可是我怎么能读到这二进制数据并转化为十六进制,因为它提供的函数如下,我这样做好象获得的数据不对,rnCString Str;rnStr.Format(_T("%s:"),m_ComPort.AsCString());rn................................rn..............................//中间过程省略rnPort.GetStr(Str.GetBuffer(1500),1500);rnint Strlen=Str.GetLength();rnCString Strtemp1="";rnfor(int i=0;i
validation.xml 显示错误信息 能不能每次只显示一个?
validation.xml 显示错误信息 能不能每次只显示一个?rn如果能怎么操作?
关于读数据库一个小问题
当我需要从3张表里取不同的字段,SQL语句该如何写?
串口读数实时动态曲线
基于FRDM-K64F板子可以从串口得到重力加速度实时数据,我用VB编写了上位机软件将实时数据用动态曲线展现出来。有需要串口开发和实时曲线绘制的朋友也有一定的参考价值。
基于pyserial,用python34、PyQt5写的一个串口软件
PS:串口实现通信还是挺普遍的,特别现在的单片机,说不定接下来单片机的毕设,需要弄个上位机就是通过串口通信。趁现在有时间,搞个gui练练手。好吧正题基本描述:1、用QT的designer设计gui框架 2、用serial模块实现串口通信 3、用serial.tools实现自动检测串口 4、用binascii模块解决字符和Hex转码问题 5、串口接收用一个线程来监听 实现串口的基本功能,运行
贡献一个wxPython和PySerial编写的串口助手程序
rn我自己写的一个基于wxPython和PySerial的串口助手程序,帮助和我一样的菜鸟入门GUI编程!!!rnrn[img=https://img-bbs.csdn.net/upload/201308/01/1375341309_11466.png][/img]rn[img=https://img-bbs.csdn.net/upload/201308/01/1375341324_677160.png][/img]rnrn代码和wxFormBuilder的设计文件可以从下面的连接下载(一个积分[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/13.gif][/img])rnrn[url=http://download.csdn.net/detail/xivn1987/5852193][/url]rnrn
pyserial 安装步骤
pyserial安装步骤
pyserial模块
python3.0及以上串口操作模块,包含serialwin32.py不需要在安装pywin32模块了。
pyserial安装失败
安装pyserial时发现编译失败,提示pythonnot decodable from utf-8。发现python路径有中文名,我老婆的电脑用户名是中文......重新安装python搞定。
关于readline()的问题
关于BufferedReader类中readline()方法rn我看书上写的是一次性从缓冲区中将全部内容读取出来 本来没什么疑问 rn但编写程序过程中发现是不是System.in输入数据后使用readline()方法读出缓冲区的内容后缓冲区里面原先输入的数据都清空了呢
readLine
warning: readLine() in java.io.DataInputStream has been deprecatedrn            bet = Integer.parseInt(kbInput.readLine());rnrn在编译Java程序时遇到如上问题,是什么意思呢 rn我用的Java版本是1.3,例子是1.1版,有什么影响吗rnrnrnrn
readline
<p>rn <br />rn</p>rn<p>rn <p>rn 20周年限定一卡通!<span style="color:#337FE5;">可学Java全部课程</span>,仅售799元(原价7016元),<span style="color:#E53333;">还送漫威正版授权机械键盘+CSDN 20周年限量版T恤+智能编程助手!</span>rn </p>rn <p>rn 点此链接购买:rn </p>rn <table>rn <tbody>rn <tr>rn <td>rn <span style="color:#337FE5;"><a href="https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy" target="_blank">https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqy</a><br />rn</span>rn </td>rn </tr>rn </tbody>rn </table>rn</p>rn<span>&nbsp;</span>rn<p>rn 本教程讲解的内容是python的基础知识,教程中包含了操作系统,python环境搭建,python的基本语法、类型和对象、流程控制、函数、函数式编程、面向对象、文件操作等内容。本教程由浅入深,贴近真实开发,完全为python新手量身定做,也适合老手用来巩固补充基础知识,查漏补缺。rn</p>
java关于readline的使用
import java.io.BufferedReader;rnimport java.io.File;rnimport java.io.FileNotFoundException;rnimport java.io.FileReader;rnimport java.io.IOException;rnimport java.io.PrintWriter;rnimport java.util.HashSet;rnimport java.util.Iterator;rnimport java.util.Set;rnimport java.util.Stack;rnrnpublic class project2 rnpublic static void main(String args[])rn String a=null;rn int i;rn Stack si=new Stack();rn File aFile = new File("d:/a.txt");rn try rn PrintWriter pw = new PrintWriter(aFile);rn BufferedReader br=new BufferedReader(new FileReader("d:/Production.txt"));rn css b;rn a=br.readLine();rn while(a!= null)rn rn b=new css(a);rn si.push(b);rn a = br.readLine();rn rn Iterator it=si.iterator();rn while(it.hasNext())rn css j=it.next();rn pw.println(j.zuo+"->"+j.you);rn j.print();rn pw.flush();rn rn pw.close();rn br.close();rn catch (FileNotFoundException e) rn System.out.println("FileNotFoundException");rn rn catch (IOException e) rn System.out.println("IOException");rn rn rnrnpublic class css rn String zuo;rn String you;rn css(String t)rn rn if(t.indexOf("-")>=0)rn rn zuo=t.substring(0, t.indexOf("-"));rn you=t.substring(t.indexOf(">")+1, t.length());rn rn rn boolean equal(css t)rn rn if(t.zuo.equals(zuo)&&t.you.equals(you))rn rn return true;rn rn elsern rn return false;rn rn rn void print()rn rn System.out.println(zuo+"->"+you);rn rn rnrn其中d:/Production.txt文件存放的是rnA -> aBrnC -> sdfdfrn为什么输出的是rnA -> aBrnC -> sdfdfrnnull->nullrn多了null->null。rn我已经判断a!=null为什么rnwhile(a!= null)rn rn b=new css(a);rn si.push(b);rn a = br.readLine();rn rn还执行了一次把空对象押入了???
关于readLine()的小问题
[code=Java][/code]try rn fr=new FileReader("d:\\1.txt");rn br=new BufferedReader(fr);rn String n="";rn //先读取第一行rn n=br.readLine();rn allEnNum=Integer.parseInt(n); rn while(br.readLine()!=null)rn rn String []xyz=br.readLine().split(" "); rn Node node=new Node(Integer.parseInt(xyz[0]), Integer.parseInt(xyz[1]), Integer.parseInt(xyz[2]));rn nodes.add(node);rn rn catch (Exception e) rn e.printStackTrace();rn // TODO: handle exceptionrn finallyrn try rn br.close();rn fr.close();rn catch (Exception e2) rn e2.printStackTrace();rn // TODO: handle exceptionrn rn rnrn文本文档里有3行数据 为什么就只读到了一行呢 难道说只要出现readLine()就会去读一行 不赋值给n也算进去?
pyserial安装软件
pySerial 是 Python 用来开发串口应用程序的工具包,支持多平台。
关于readline的怪问题
文件内容是rn13774066625rn13774066626rnrn代码rntxtdir=new FileReader("D:/jakarta-tomcat-5/dist/webapps/root/userquery/data/inputx_1.txt");rnbufferin=new BufferedReader(txtdir);rntxtline=bufferin.readLine();rni=txtline.length();rnrni返回是23而不是11,rnrn关键是我如果用long j=Long.parseLong(txtline);rn报错 java.lang.NumberFormatException: For input string: "13774066626"rn java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)rn java.lang.Long.parseLong(Long.java:394)rn java.lang.Long.parseLong(Long.java:452)rn org.apache.jsp.userquery.input.sy_005ftxt_jsp._jspService(sy_005ftxt_jsp.java:73)rn org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:856)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:856)rnrn
关于readLine()方法的问题
import java.io.*;rnimport java.net.*;rn/*rn练习:服务器接收客户端的字符,并转换为大写返回给客户端。rn*/rnpublic class DemoTransform rnrnrnrnclass Clientrnrn public static void main(String[] args)throws Exceptionrn rn Socket s = new Socket(InetAddress.getLocalHost(),8080);rn BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));rn BufferedReader br = new BufferedReader(new InputStreamReader(System.in));rn String str=br.readLine();rn bw.write(str);rn bw.newLine();rn bw.flush();rn BufferedReader br2 = new BufferedReader(new InputStreamReader(s.getInputStream()));rn String read = br2.readLine();rn System.out.println(read);rn s.close();rn rnrnclass Serverrnrn public static void main(String[] args)throws Exceptionrn rn ServerSocket ss = new ServerSocket(8080);rn Socket s = ss.accept();rn BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));rn String str = br.readLine();rn BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( s.getOutputStream()));rn str=str.toUpperCase();rn bw.write(str);rn // bw.newLine();rn bw.flush();rn s.close();rn ss.close();rn rnrnrnreadLine()是阻塞式方法rn客户端的bw要写回车符或者换行符我可以理解,服务器的bw不是也要写回车符和换行符吗?rn为什么我没写,客户端的readLine()也能返回?rnrn
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件