# 例程4:串口收发,调试该程序,需要事先用数据线连接两个串口,并对两个串口进行配置,两个端口的波特率要相同。
# 收发二进制数据
gui = GUI("fine") # 定义一个GUI对象
#gui.HideConsoleWindow() # 隐藏控制台窗口
serial = SERIAL("COM7",9600)
title = "串口收发" # Fine窗口标题
Size = [20,10,80,30] # 指定窗口位置和宽度高度
edit = ["发送数据","edit","s",12,2,60,4]
button = [" 发送 ","button",3,4.5,8,1]
textbox = ["","textbox","N",12,8,42,12]
list = [title,Size,edit,button,textbox] # 将设计的窗口元素打包成一个列表
gui.Fine(list) # 创建Fine窗口,并返回窗口资源ID号
while gui.FineClosed() != -1 # 循环检测窗口关闭消息,如果gui.FineClosed(id) = -1表明窗口已关闭
{
PowerDown(3) # 低功耗设置
if gui.FineReady() == 0 # 如果点击了“发送”按钮
{
x = gui.FineRead() # x是个列表,第一项是指令,这里就是发送指令,第二项是edit录入数据
binarydata = Binary(x[1]) # x[1]是界面录入的数据(x01x02x03格式),通过函数Binary转换成二进制数据
length = int(len(x[1])/3) # x01三个字符表示一个二进制的字节,所以,转换成二进制的长度是len(x[1])/3
bytesWritten = serial.Write(binarydata,length) # 串口发送
str = "发送数据:" + x[1] + "\n"
gui.SendTextbox([str]) # 显示在textbox中
gui.SendEdit([""]) # 清空edit控件
}
if serial.IsReady() == 0 # 串口收到数据
{
data = serial.Read("binary") # 参数表明接收的是二进制数据
if data[0] > 0
{
str1 = sprint(data[1]) # 是收到的二进制数据,通过sprint函数转换成字符串
str = "接收数据:" + str1 + "\n"
gui.SendTextbox([str]) # 显示在textbox中
}
}
}