qq_38226608
qq_38226608
采纳率0%
2017-04-26 07:45 阅读 2.7k

在树莓派上使用 Python,对串口进行读写操作,遇到一个问题,下面是我的一部分代码

import tkinter as tk
from tkinter import messagebox # import this to fix messagebox error
import pickle
import serial
ser = serial.Serial('/dev/ttyS0', 9600, parity=serial.PARITY_NONE)

login and sign up button

btn_login = tk.Button(window, text='Login', command=usr_login)
btn_login.place(x=170, y=230)
btn_sign_up = tk.Button(window, text='Sign up', command=usr_sign_up)
btn_sign_up.place(x=270, y=230)

def usr_config(usr_name):
window_config = tk.Toplevel(window)
window_config.title('config')
window_config.geometry('200x200')
print (usr_name)
var3 = usr_name

def print_selection():
value = lb.get(lb.curselection()) #从列表中光标选中的位置获取值赋给 value
var1 = '%d' %value
var3 = usr_name
var4 = var3 +'I will back in' + var1 + 'minutes'
var5 = var4.encode()
print(ser.isOpen())
ser.write(var5)
tk.messagebox.showinfo(title='Confirmation', message='Your message has been sent successfully'+ '/n' + 'message is:' +var4)
window_config.destroy()

b1 = tk.Button(window_config, text='print_selection', width=15, height=2, command=print_selection)
b1.pack()

var2 = tk.StringVar()
var2.set((11,22,33,44))
lb = tk.Listbox(window_config, listvariable=var2) #设置 listbox
list_items = [1,2,3,4]
lb.pack()

var3 = tk.StringVar()
var3.set(usr_name)

window.mainloop()

运行时不报错,但是下位机上的串口不能接收到 ser.write(var5) 通过串口发送的信息
而我直接在 IDLE 中依次输入'var ='I will back in 5 minutes''
var1 = var.encode()
“import serial”
“ser= serial.Serial('/dev/ttyAMA0',9600)”
'ser.open()'
'ser.write(var1)'
下位机上的接收程序是完全可以正常接收的

百思不得其解,跪求大神帮看看
图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • iamoyjj 欧阳嘉 2017-04-26 08:19

    1.确认你的界面程序执行了open()
    2.确认isOpen()的值
    3.serial.PARITY_NONE是否一致
    4.打印出其他的串口属性,如波特率,可是否一致。
    5.打开后关闭串口

    点赞 评论 复制链接分享

相关推荐