优秀作品

# 例程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中

       }

    }

0