python中Pyserial如何实现RS485串口通讯

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中Pyserial如何实现RS485串口通讯相关的知识,希望对你有一定的参考价值。

官网demo使用了一下 串口发什么能收到一样的并没有 485解析 有大神帮忙看看嘛??

RS485 的数据线要交叉才能通讯,如果你是两台电脑通讯测试,另外一台要有返回才行。就好像你给人家说话,人家听到了重复一遍你才能听到。不然就是单向传输,收不到任何回应。追问

能收到 就是发的是什么收的是什么 并没有解析RS485信息

追答

你想看到什么呢?RS485发送的原始数据?都是ASCII码,要转码才行呀。

追问

参考技术A 楼主说的485解析 是什么?
发什么能收到一样的 就是 无协议嘛
那你就按 modbus 协议来呀

Python PySerial,如何打开串口?

【中文标题】Python PySerial,如何打开串口?【英文标题】:Python PySerial, How to Open Serial Ports? 【发布时间】:2015-01-02 21:52:34 【问题描述】:

我正在尝试从 PySerial 文档中运行此示例程序以打开串行端口。来源:http://pyserial.sourceforge.net/shortintro.html 我尝试在 python 版本 2.7 和 3.4 中运行代码,但仍然出现相同的错误。

>>> import serial
>>> ser = serial.Serial(0)  # open first serial port
>>> print ser.name          # check which port was really used
>>> ser.write("hello")      # write a string
>>> ser.close()             # close port

运行第二行代码后出现如下错误:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    ser = serial.Serial(0)
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 38, in __init__
    SerialBase.__init__(self, *args, **kwargs)
  File "C:\Python27\lib\site-packages\serial\serialutil.py", line 282, in __init__
    self.open()
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 66, in open
    raise SerialException("could not open port %r: %r" % (self.portstr,     ctypes.WinError()))
SerialException: could not open port 'COM1': WindowsError(2, 'The system cannot find the file specified.')

【问题讨论】:

您是否尝试过使用其他程序(例如 HyperTerminal 或随附的 MiniTerm)连接到串行端口以确保它们可用?您使用的是什么操作系统? 你的系统真的有 COM1 端口吗? 如何确定我的系统是否有 COM1 端口? 如何使用 MiniTerm? 您可以使用here 提到的代码来检查您的注册表中定义的串行端口 【参考方案1】:

听起来 COM1 不可用(它不存在或已被使用)。 我制作了这个小脚本来列出可用的 COM 端口。

import serial
ser=serial.Serial()
for ns in xrange(101): 
    try:
        ser.port=ns
        ser.open()
        print "COM"+str(ns+1)+" available"
        ser.close()

    except serial.SerialException:
        print "COM"+str(ns+1)+" NOT available"

请记住,COM 端口号是您传递给串口 +1 的数字(serial.Serial(0) 打开 COM1,serial.Serial(1) 打开 COM2,等等)

【讨论】:

您可以通过使用“for ns in xrange(101):”代替“while True:”使循环更加pythonic,并消除需要手动初始化、递增和测试/中断的行在你的循环中。

以上是关于python中Pyserial如何实现RS485串口通讯的主要内容,如果未能解决你的问题,请参考以下文章

RS485串口继电器modbus RTU读写通信调试软件工具和python源码

知易行难RS485组网连接示意图

JSON数据采集网关,Modbus RTU转httpmqtt协议串IO口RS485转4~20mA边缘计算智能终端

用电脑串口如何跟485口通信?

pyserial:如何正确接收来自电源的 rs232 答案

如何对RS485设备进行地址的设置?