当前位置:   article > 正文

如何用python实现串口通信_python串口通信上位机

python串口通信上位机

前言
    公司写界面的小伙伴离职了,下一个项目不得不承担起来,公司需要什么就要补上。
**

目录

1、准备工作

**1.1 上位机和下位机的概念

1.2 串口是什么?

1.3 环境搭建

2、程序

2.1 上位机代码

2.2 下位机代码


1、准备工作

**
1.1 上位机和下位机的概念


        简单来说,上位机是发出命令的计算机,承担主要命令的发布;下位机是执行命名的计算机,承担功能实现和错误信息返回。简而言之,一个是领导(上位机),一个是员工(下位机)。
        接下来为官方概念,可跳过。上位机和下位机是分布式系统中的两个重要概念。
        上位机通常指的是更高级别的计算机设备,如桌面计算机、服务器或嵌入式计算机等。它们在系统中负责控制和管理整个系统,收集并处理数据,执行复杂的算法和逻辑操作。上位机通常运行着高级语言编写的软件程序,提供用户友好的图形界面,以便用户可以与系统进行交互。
        下位机通常指的是更低级别的计算机设备,如微控制器、单片机、传感器等。它们在系统中负责执行简单的控制任务,收集传感器数据并将其传递给上位机,或执行上位机发送的指令。下位机通常使用低级语言编写的程序,可以直接与硬件交互。
        在分布式系统中,上位机和下位机之间通过通信协议进行通信。例如,可以使用不同的通讯协议(如RS232的串口通讯或者RS485串行通讯)实现上位机和下位机之间的远程控制和监控,以及实时数据和状态信息的获取。


1.2 串口是什么?


        既然双方已经准备好了,那上位机如何将命令传输为下位机,这就涉及到数据传输的通道,也就是串口通信接口,或者COM接口。
        我用的是232转USB的通信方式,需要先安装驱动;电脑上相对应的COM口自然就出现啦!win键点击右键,选择设备管理器。![在这里插入图片描述](https://img-blog.csdnimg.cn/487064b5a4854151914f62bdeb13cf84.png)


1.3 环境搭建


        因为我的上位机和下位机都是计算机,所以在两个设备上分别装上了驱动以及串口通信工具。
        备注:用串口通信工具主要为了排查是连接以及设备硬件出现了问题,否则python通信代码写错了再归为硬件的问题。

2、程序

2.1 上位机代码


        上位机主要是发指令。

  1. ```python
  2. import serial #导入模块
  3. import time
  4. # 端口号,根据自己实际情况输入,可以在设备管理器查看
  5. port = "COM1"
  6. # 串口波特率,根据自己实际情况输入(232的都是9600
  7. bps = 9600
  8. # 超时时间,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
  9. # 打开串口,并返回串口对象
  10. ser = serial.Serial(port, bps, timeout=0.1)
  11. # 发送数据的代码
  12. def receive_command():
  13. data = ser.readline().hex().strip()
  14. if data != '':
  15. print('Received:', data)
  16. def send_command(hex_command):
  17. try:
  18. # 串口发送一个字符串
  19. # len = ser.write("hello world".encode('utf-8'))
  20. command = bytes.fromhex(hex_command)
  21. len = ser.write(command)
  22. print("send len: ", len)
  23. receive_command()
  24. # 关闭串口
  25. # ser.close()
  26. except Exception as result:
  27. print("******error******:", result)
  28. def main():
  29. while True:
  30. # 定时发送数据
  31. # 关机指令,16进制编码
  32. hex_command = '24 00 00 00 00 00 00 00 00 00 00 00 00 01 00 01 03 06 66 2A'
  33. send_command(hex_command)
  34. # print("send len: ", len)
  35. time.sleep(10)
  36. main()
  37. ```

2.2 下位机代码


        下位机主要是收指令。

  1. ```python
  2. import serial #导入模块
  3. import time
  4. # 端口号,根据自己实际情况输入,可以在设备管理器查看
  5. port = "COM1"
  6. # 串口波特率,根据自己实际情况输入
  7. bps = 9600
  8. # 超时时间,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
  9. # 打开串口,并返回串口对象
  10. ser = serial.Serial(port, bps, timeout=0.1)
  11. # 发送数据的代码
  12. def receive_command():
  13.     data = ser.readline().hex().strip()
  14.     if data != '':
  15.         print('Received:', data)
  16. def main():
  17.     while True:
  18.             receive_command()
  19. main()
  20. ```


3、结束
        当上位机和下位机通信正常后,剩下就是基于指令信息完成相应功能,那我开发新功能去了呀!!
        
 

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

闽ICP备14008679号