python手柄读不出来
1、电脑USB接口或者USB手柄有问题,这种情况,只能找维修点或者电脑售后了。最简单的方法是换一个电脑,测试一下游戏手柄,如果游戏手柄能用,说明电脑接口有问题,游戏手柄不能用,则多数是游戏手柄有问题。
2、换个USB接口插入游戏手柄,台式机,尽量使用机箱后面的USB接口,因为前面板的USB接口是通过主板上的针脚引出来的,标准电压5V的时候最多也只能提供03-05A的电流,而后面的接口都是直接从PCB里引出来的,相同电压下能提供更大的电流(或者在更高的电压下也能有相同的电流输出),所以可以加快充电过程。
3、查看USB驱动是否安装,按WIN+R键,输入devmgmtmsc,打开设备管理器,查看”通用串行总线控制器“下的USB HUB是否有问号或者叹号,有表示未安装驱动,需要下载USB驱动程序,另外,一般在购买游戏手柄时,会附送一张驱动光盘,记得安装或者网上下载通用游戏手柄驱动程序。
楼上的方法太复杂,用serial库就可以,亲测可用:
import serialtoolslist_portsport_list = list(serialtoolslist_portscomports())
if len(port_list) == 0:
print('找不到串口')
else:
for i in range(0,len(port_list)):
print(port_list[i])
参考:网页链接
1、打开手机的开发者选项,本人小米手机,系统android 70(miui 91),设置->我的设备->全部参数(点击miui版本5次,即可开启开发者模式)
2、设置->更多设置(倒数第三个就是开发者选项)->开启USB调试,使用数据线连接手机和电脑
3、在电脑上安装adb驱动,下载地址:>
由于测试工作的需要,在C端产品上经常使用串口进行通信,而测试脚本大部分时候又采用python编写,于是就不得不了解并熟悉python下的串口通信实现方法了,整理如下以备随时使用:
一、说明
pyserial封装了python环境下对串口的访问,其兼容各种平台,并有统一的 *** 作接口。通过python属性访问串口设置,并可对串口的各种配置参数(如串口名,波特率、停止校验位、流控、超时等等)做修改,再进行串口通信的类与接口封装后,非常方便地被调用和移植。
二、模块安装
pip insatll pyserial
三、初始化与参数说明
import serial
ser = serialSerial('COM3', 115200, timeout=05, )
下面看看 serialSerial 原生类
四、不同平台下初始化
ser=serialSerial("/dev/ttyUSB0",9600,timeout=05)#使用USB连接串行口ser=serialSerial("/dev/ttyAMA0",9600,timeout=05)#使用树莓派的GPIO口连接串行口ser=serialSerial(1,9600,timeout=05)#winsows系统使用COM1口连接串行口ser=serialSerial("COM1",9600,timeout=05)#winsows系统使用COM1口连接串行口ser=serialSerial("/dev/ttyS1",9600,timeout=05)#Linux系统使用COM1口连接串行口
五、串口属性
sername #串口名称
serport #端口号
serbaudrate #波特率
serbytesize #字节大小
serparity #校验位N-无校验,E-偶校验,O-奇校验
serstopbits #停止位
sertimeout #读超时设置
serwriteTimeout #写超时
serxonxoff #软件流控
serrtscts #硬件流控
serdsrdtr #硬件流控
serinterCharTimeout #字符间隔超时
六、串口常用方法
isOpen():查看端口是否被打开。
open() :打开端口‘。
close():关闭端口。
read(size=1):从端口读字节数据。默认1个字节。
read_all():从端口接收全部数据。
write(data):向端口写数据。
readline():读一行数据。
readlines():读多行数据。
in_waiting():返回输入缓存中的字节数。
out_waiting():返回输出缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写 *** 作,并丢弃发送缓存中的数据。
sendBreadk(duration=025):发送BREAK条件,并于duration时间之后返回IDLE
setBreak(level=True):根据level设置break条件。
setRTS(level=True):设置请求发送(RTS)的控制信号
setDTR(level=True):设置数据终端准备就绪的控制信号
七、类与接口封装
import time
import serial
import serialtoolslist_ports
# 串口 *** 作类
class serialCommunication(object):
def __init__(self, port, bps, timeout):# 可配置更多参数
port_list =selfshow_usable_com()
if len(port_list) >0:
if portnot in port_list:
selfport = port_list[0]
else:
selfport = port
else:
print("no usable serial, please plugin your serial board")
return
selfbps = bps
selftimeout = timeout
try:
# 初始化串口,并得到串口对象,根据需要可拓展更多参数
selfser = serialSerial(selfport, selfbps, 8, 'N', 1, timeout=selftimeout, write_timeout=selftimeout)
except Exception as e:# 抛出异常
print("Exception={}"format(e))
# 显示可用串口列表
@staticmethod
def show_usable_com():
serialport_list = []
portInfo_list =list(serialtoolslist_portscomports())
if len(portInfo_list) <=0:
print("can not find any serial port!")
else:
print(portInfo_list)
for i in range(len(portInfo_list)):
plist =list(portInfo_list[i])
print(plist)
serialport_listappend(plist[0])
print(serialport_list)
return serialport_list
# 输出串口基本信息
def serial_infor(self):
print(selfsername)# 设备名字
print(selfserport)# 读或者写端口
print(selfserbaudrate)# 波特率
print(selfserbytesize)# 字节大小
print(selfserparity)# 校验位
print(selfserstopbits)# 停止位
print(selfsertimeout)# 读超时设置
print(selfserwriteTimeout)# 写超时
print(selfserxonxoff)# 软件流控
print(selfserrtscts)# 软件流控
print(selfserdsrdtr)# 硬件流控
print(selfserinterCharTimeout)# 字符间隔超时
# 打开串口
def serial_open(self):
try:
if not selfserisOpen():
selfseropen()
except Exception as e:# 抛出异常
print("serial_open Exception={}"format(e))
selfserclose()
# 读取指定大小的数据
# 从串口读size个字节。如果指定超时,则可能在超时后返回较少的字节;如果没有指定超时,则会一直等到收完指定的字节数。
def serial_read_with_size(self, size):
try:
selfserial_open()
return selfserread(size)decode("utf-8")
except Exception as e:
print("serial_read_all Exception={}"format(e))
selfserclose()
# 读取当前串口缓存中的所有数据
def serial_read_data(self):
try:
selfserial_open()
datalen =selfserinWaiting()
if datalen ==0:
return None
return selfserread(datalen)decode("utf-8")
except Exception as e:
print("serial_read_data Exception={}"format(e))
selfserclose()
# 读串口全部数据,注意timeout的设置
# 在设定的timeout时间范围内,如果读取的字节数据是有效的(就是非空)那就直接返回,
# 否则一直会等到设定的timeout时间并返回这段时间所读的全部字节数据。
def serial_read_all(self):
try:
selfserial_open()
return selfserread_all()decode("utf-8")
except Exception as e:
print("serial_read_all Exception={}"format(e))
selfserclose()
# 读一行数据
# 使用readline()时应该注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。
# 如果没有超时,readline会报异常。
def serial_read_line(self):
try:
selfserial_open()
return selfserreadline()decode("utf-8")
except Exception as e:
print("serial_read_line Exception={}"format(e))
selfserclose()
# 读多行数据,返回行列表
def serial_read_lines(self):
try:
selfserial_open()
return selfserreadlines()decode("utf-8")
except Exception as e:
print("serial_read_lines Exception={}"format(e))
selfserclose()
# 写数据
def serial_write_data(self, data):
try:
selfserial_open()
selfserflushOutput()
data_len =selfserwrite(dataencode('utf-8'))
return data_len
except Exception as e:
print("serial_write_data Exception={}"format(e))
return 0
# 写行数据,注意参数差异
def serial_write_lines(self, lines):
selfserwritelines(lines)
# 清除串口缓存
def serial_clean(self):
try:
if selfserisOpen():
selfserflush()
except Exception as e:
print("serial_clean Exception={}"format(e))
# 关闭串口
def serial_close(self):
try:
if selfserisOpen():
selfserclose()
except Exception as e:
print("serial_clean Exception={}"format(e))
if __name__ =='__main__':
testSerial = serialCommunication("COM10", 1500000, 05)
testSerialserial_open()
testSerialserial_infor()
testSerialserial_write_data("ifconfig eth0\n")
timesleep(01)
data = testSerialserial_read_all()
print(data)
testSerialserial_close()
八、其他
1)serVERSION表示pyserial版本; 另外,sername表示设备名称
2)端口设置可以被读入字典,也可从字典加载设置:
getSettingDict():返回当前串口设置的字典
applySettingDict(d):应用字典到串口设置
3) Readline()是读一行,以/n结束,要是没有/n就一直读,阻塞。注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。
4)serialread_all 与 serialread_all()区别
serialread_all:读取串口所有的参数信息
serialread_all():超时时间内从串口读取的所有数据
5) 异常信息
exception serialSerialException
exception serialSerialTimeoutException
以上就是关于python手柄读不出来全部的内容,包括:python手柄读不出来、python如何获取串口前面的名称、python如何 *** 作手机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)