当前位置:   article > 正文

python编程调用设备串口发送数据_向串口设备发送指令代码

向串口设备发送指令代码

为了通过python编程控制串口发送数据给单片机,编写此程序

使用serial模块完成串口的读取和数据的收发

重点掌握以下几个api的使用方法:

  1. 读取串口设备列表:list(serial.tools.list_ports.comports())
  2. 初始化串口对象:ser=serial.Serial()
  3. 打开串口:ser.isOpen()
  4. 发送数据:ser.write()
  5. 读取数据:ser.read()
  6. 关闭串口:ser.close()

完整代码如下:

  1. # !/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. # ============================================================
  5. # @Date : 2022/05/16 21:50:12
  6. # @Author : miles
  7. # @Email : lishan@st.xatu.edu.cn
  8. # @File : serial_demo.py
  9. # @IDE : PyCharm
  10. # @Func : Describes the function of the file
  11. # @Note : pip install pyserial
  12. # ============================================================
  13. """
  14. import time
  15. import serial.tools.list_ports
  16. if __name__ == '__main__':
  17. # 读取串口列表
  18. ports_list = list(serial.tools.list_ports.comports())
  19. if len(ports_list) <= 0:
  20. print("无串口设备")
  21. else:
  22. print("可用的串口设备如下: ")
  23. print("%-10s %-30s %-10s" % ("num", "name", "number"))
  24. for i in range(len(ports_list)):
  25. comport = list(ports_list[i])
  26. comport_number, comport_name = comport[0], comport[1]
  27. print("%-10s %-30s %-10s" % (i, comport_name, comport_number))
  28. # 打开串口
  29. port_num = ports_list[0][0]
  30. print("默认选择串口: %s" % port_num)
  31. # 串口号: port_num, 波特率: 115200, 数据位: 7, 停止位: 2, 超时时间: 0.5秒
  32. ser = serial.Serial(port=port_num, baudrate=115200, bytesize=serial.SEVENBITS, stopbits=serial.STOPBITS_TWO,
  33. timeout=0.5)
  34. if not ser.isOpen():
  35. print("打开串口失败")
  36. else:
  37. print("打开串口成功, 串口号: %s" % ser.name)
  38. # 串口发送字符串数据
  39. data = "%d:%d" % (130, 1)
  40. print("发送数据: %s" % data)
  41. write_len = ser.write(data.encode('utf-8'))
  42. print("串口发出{}个字节".format(write_len))
  43. # 串口发送十六进制数据
  44. # data = 0xAB
  45. # print("发送数据: %X" % data)
  46. # write_len = ser.write(bytearray([data]))
  47. # print("串口发出{}个字节".format(write_len))
  48. # 等待串口返回信息并输出
  49. t0 = time.time()
  50. while True:
  51. com_input = ser.read(10)
  52. t1 = time.time()
  53. t = t1 - t0
  54. print("\r等待串口接收数据, %.2f 秒" % t, end="")
  55. if com_input or t >= 3:
  56. if com_input:
  57. print("\n%s" % com_input)
  58. else:
  59. print("\n%s" % "没有接收到任何数据")
  60. break
  61. # 关闭串口
  62. ser.close()
  63. if ser.isOpen():
  64. print("串口未关闭")
  65. else:
  66. print("串口已关闭")

在电脑上插入USB转串口模块连接到单片机,运行结果如下:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/211141
推荐阅读
相关标签
  

闽ICP备14008679号