导航:首页 > 编程语言 > python调用串口

python调用串口

发布时间:2023-03-13 02:26:02

A. python的pyserial读取串口占用状态

那么你干嘛要获取可用端口呢?
如果不可用,你强行去打开,是会出错的,所以自然知道需要换了

B. 有没有python的串口库

串口模块的波特率比较特别,找了几个串口工具都不支持。。。所以,干脆用python自己来写了,其实已经好奇好久了,别人的工具各种不顺手。

需要pyserial的支持,兼容各种平台,不需要新编译二进制文件。

先贴一个定时发送的代码:

6. exception:serial.SerialException

另一个完整收发的例子,单片机数据以TLV(Type,Length,Value)格式发上来

#!/usr/bin/env python
# it's a program of luo, [email protected]
import serialimport arrayimport osimport signalfrom time import sleep

flag_stop = Falsedef onsignal_int(a,b): print "sigint!"
global flag_stop
flag_stop = True

signal.signal(signal.SIGINT, onsignal_int)
signal.signal(signal.SIGTERM, onsignal_int)

ser = serial.Serial('/dev/ttyUSB0', 9600, timeout = 0.001)print "serial.isOpen() =",ser.isOpen()

cmd_send = ""cmd_send = cmd_send.decode("hex")

stop = "7b04047d0d0a"stop = stop.decode("hex")

cmd_back = ""cmd_length = 0x00cmd_count = 0x00s = ser.write(cmd_send)while True:
sleep(0.1)
if flag_stop: # read data until Ctrl+c
ser.write(stop) # send cmd stop before exit
print "reset cmd has been sent!"
sleep(0.05) break

text = ser.read(1) # read one, with timout
if text: # check if not timeout
n = ser.inWaiting() # look if there is more to read
if n:
text = text + ser.read(n) #get it
cmd_back = cmd_back + text
text = ""

if len(cmd_back) < 2: # go back if no enough data recvd
continue

if cmd_length == 0x00: # new loop
cmd_length = ord(cmd_back[1]) # Type(1 byte),Length of Value(1 byte),Value
print "new cmd length,",cmd_length

if (cmd_length + 0x02) > len(cmd_back): # do nothing until all bytes is recvd
continue

# so far, we have got a full cmd
hex_list = [hex(ord(i)) for i in cmd_back] # more readable than data.encode("hex")
print "In buffer:",hex_list
cmd_back = cmd_back[cmd_length+2:] # remove this cmd(TLV) from buffer
cmd_length = 0
cmd_count += 1
print "==> %d cmds recvd."%(cmd_count) print "-------------"
ser.close()

——————

C. linux中python怎么打开串口

一个Python实现的串口Echo

import serial
import sys
try:
ser = serial.Serial('/dev/ttyUSB0', 9600)
except Exception, e:
print 'open serial failed.'
exit(1)
print 'A Serial Echo Is Running...'
while True:
# echo
s = ser.read()
ser.write(s)
# write to stdout and flush it
sys.stdout.write(s)
sys.stdout.flush()


D. python如何通过串口SSH登录服务器

需要写一个基于串口通信协议的ssh服务器和客户端,服务器部署到linux上,客户端在windows上;
其次,客户端要提供sdk for python;
最后,你就可以用python通过ssh登录linux了。

E. 如何用python实现串口通信

Python非常适合写一些测试的脚本,如快速的串口通信测试等。如果使用VC++ QT开发,可能用时较多,使用python,如果掌握使用方法,可以直接读写测试,配合设备或是串口助手,很快验证与实现。
Python有没有现成的串口API直接调用呢?经过实践验证,需要安装一个叫 Pyserial的组件即可。这个可以在github上下载。

在windows 7 64bit 上可以使用吗?当然可以使用,我安装的python3.5为64位的。把下载后的文件,其中有一个serial的文件夹,拷贝到python35安装路径, C:\Python35\Lib\site-packages\serial
网上可以搜一下windows的安装包,安装完也是:C:\Python35\Lib\site-packages\serial ,可以用最新的版本,替换即可。
测试的方法:在python IDE里测试:
>>> import serial
这里如果报错,是python版本与pyserial版本没有配合好。如果正常,不返回,即可以导入serial模块。
>>> ser=serial.Serial("COM5",115200)
这里为COM5,115200的波特率。如果打不开,请检查安装环境。
>>> ser.write('hello,serial test'.encode())
17
发送测试(如果返回字节数,说明返回成功),这里需要转换一个编码为字节。
以上测试,可以使用现在的设备或是串口助手,如安装Virtual Serial Port Driver 7.2 虚拟串口软件,设置一对串口,进行自发自收的测试。
>>> print(ser.readline())
b'abcdefg\r\n'
这里是串口接收,有接收的超时。设备或是串口助手发送一个字符串,以回车换行结束,这里就可以收到打印出来。
也可以用ser.read(),这里只接收一个字符来实现。
上面已经实现了基本的串口操作。
关闭串口为:
>>> ser.close()
如果使用python,一般写个py文件,就像windows bat 批处理一样,这是python强大的地方。如果写一个py脚本呢?其实只要把上面的命令,一条条写下来,就是一个脚本,测试如下:
import serialser=serial.Serial("COM5",115200,timeout=0.5)for i in range(0,100-1):ser.write('hello\r\n'.encode())print(ser.readline());ser.close()

F. 如何用python写个串口通信的程序

使用 pyserial 就可以处理串口通信,这个包是跨平台的。

http://pyserial.sourceforge.net/


示例程序在这里:

https://pyserial.readthedocs.io/en/latest/examples.html#wxpython-examples


importserial

#创建serial实例
serialport=serial.Serial()
serialport.port='COM1'
serialport.baudrate=9600
serialport.parity='N'
serialport.bytesize=8
serialport.stopbits=1
serialport.timeout=0.6
try:
serialport.open()
serialport.setDTR(True)
serialport.setRTS(True)
exceptException,ex:
printex

#发送数据
serialport.write(raw_data)

#根据项目要求,可以开一个线程扫描接收数据

G. Python如何进行多串口通信一个串口控制电机 一个串口采集数据

下载 pyserial包
def OpenCom(self,*args): #设置端口和波特率 selComPort =‘com2’ #波特率 selBaudRate =9600 #奇偶校验 selParity = 'N' try: if(not self.mySerial): self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,bytesize=8,parity=selParity,stopbits=1,timeout=5) else: if(self.mySerial.isOpen()): self.mySerial.close() self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate, bytesize=8, parity=selParity, stopbits=1, timeout=5) self.lblInfo['text'] = '打开成功!' except Exception as ex: self.lblInfo['text'] = '打开失败!'

#使用com口发送modbus协议给终端设备。
def btnEmId_Click(self):
barray = bytearray([0x05, 0x03, 0xA#, 0x54, 0x00, 0x08])
vOldEmId = self.txbOldEmId.get()
vNewEmId = self.txbNewEmId.get()
barray[0] = int(vOldEmId)
barray[5] = int(vNewEmId)
#crc校验
strInput = utils.crc16_append(barray)
print(barray)
n = self.mySerial.write(barray)
if(n > 0):
str = self.mySerial.readall()
self.lblInfo['text'] = 'success!'
# for s in str:
# print (hex(s))
else:
self.lblInfo['text'] = 'error!'

阅读全文

与python调用串口相关的资料

热点内容
苹果买app扣哪里钱 浏览:296
java线程回调函数 浏览:762
苏州加密代理 浏览:339
中央编译怎么样 浏览:303
android界面入门 浏览:862
滚石PDF 浏览:678
知道网址怎么查服务器ip地址吗 浏览:948
服务器2U4路是什么意思 浏览:839
linux更新firefox 浏览:497
php站内消息功能 浏览:219
php自定义composer包 浏览:949
如何清理复制app的存储空间 浏览:711
grx编译器编译失败 浏览:696
linux使用的数据库服务器地址 浏览:693
我的世界电脑版如何服务器加光影 浏览:658
简便算法45乘239 浏览:442
踏花行APP哪里下载好 浏览:610
物理服务器释放是什么意思 浏览:173
魔兽世界密语命令 浏览:175
如何打开密码压缩包 浏览:674