import serial
import sys
from time import sleep
import time
TELNET_RETURN = "\n"
try:
ser = serial.Serial("COM11", 115200,timeout=0, parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
except:
sys.exit("Error connecting device")
result=ser.write(TELNET_RETURN.encode())#写数据
# 串口要等0.5秒才有ser.inWaiting() > 0
for _ in range(10):
print(time.strftime("%Y%m%d_%H_%M_%S", time.localtime()))
queue = ser.inWaiting()
if queue > 0:
print(time.strftime("%Y%m%d_%H_%M_%S", time.localtime()))
data = ser.read(1000)
print (data)
sleep(0.2)
ser.close()
import serial # 导入模块
try:
# 端口,GNU / Linux上的/dev/ttyUSB0 等 或 Windows上的 COM3 等
portx = "COM3"
# 波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
bps = 115200
# 超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
timex = 5
# 打开串口,并得到串口对象
ser = serial.Serial(portx, bps, timeout=timex)
# print("串口详情参数:", ser)
# print(ser.port) # 获取到当前打开的串口名
# print(ser.baudrate) # 获取波特率
result = ser.write("我是东小东".encode("gbk")) # 写数据
print("写总字节数:", result)
# print(ser.read())#读一个字节
# print(ser.read(10).decode("gbk"))#读十个字节
# print(ser.readline().decode("gbk"))#读一行
# print(ser.readlines())#读取多行,返回列表,必须匹配超时(timeout)使用
# print(ser.in_waiting)#获取输入缓冲区的剩余字节数
# print(ser.out_waiting)#获取输出缓冲区的字节数
# 循环接收数据,此为死循环,可用线程实现
while True:
if ser.in_waiting:
str = ser.read(ser.in_waiting).decode("gbk")
if (str == "exit"): # 退出标志
break
else:
print("收到数据:", str)
print("---------------")
ser.close() # 关闭串口
except Exception as e:
print("---异常---:", e)