python打开串口失败_无法打开串行端口,或使用pyseri从串行端口读取数据

背景:当PXE获得一个IP地址时,我试图自动重启服务器。这是为了重新生成一个问题,唯一的方法是在每次重新启动的同时冷启动它。我已经厌倦了手工操作,到目前为止,我已经花了10个小时在这个脚本和故障排除上了。

我试图从服务器上的串行控制台读取行,同时查找某个字符串,然后发出重新启动命令。在

现在,我能让这个脚本响应串行控制台上的内容的唯一方法是关闭服务器电源,启动minicom,打开服务器电源,当文本启动时,我可以不重置就退出minicom,然后启动我的脚本。在

第一次运行时,脚本运行良好,甚至最后的iLO命令也能正常工作,然后它重新启动while循环,但之后我再也没有从控制台获得任何输出。在

似乎我没有正确地打开串行端口,但是我打印了get_设置,波特率、停止位等都是正确的。在

我搜索并使用了来自许多不同地方的代码片段来拼凑这个脚本,我真的很沮丧,因为我不能独立运行这个脚本。在[root@localhost ~]# python2 bootorder.py

{'parity': 'N', 'baudrate': 115200, 'bytesize': 8, 'xonxoff': False, 'rtscts': False, 'timeout': None, 'inter_byte_timeout': None, 'stopbits': 1, 'dsrdtr': False, 'write_timeout': None}

正如您在上面看到的,当我运行它时,我打印出串行端口设置,它们与minicom和服务器端的串行控制台相匹配。在

那么minicom在做什么来打开我在脚本中没有做的端口呢?我已经从很多网站上看到了一些例子,而且它有时也会起作用,我只是不知道如何让它自己起作用。在

这是我的剧本:

^{pr2}$

感谢您的投入和帮助!在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这里有一个示例代码可以参考: import serial import MySQLdb # 打开串口 ser = serial.Serial("/dev/ttyUSB0", 9600) # 连接MySQL数据库 db = MySQLdb.connect("localhost", "username", "password", "database") cursor = db.cursor() while True: # 读取串口数据 data = ser.readline() # 将数据写入MySQL cursor.execute("INSERT INTO table_name (data) VALUES (%s)", (data)) # 提交数据 db.commit() ### 回答2: 要用Python代码连接Arduino UNO R3并将数据写入MySQL数据库,你需要进行以下步骤: 1. 首先,你需要确保已经连接好了Arduino UNO R3到计算机上,并且已安装好了Arduino IDE。 2. 在Arduino IDE中,编写一个简单的程序来读取传感器数据(假设我们使用的是温度传感器)。该程序将数据通过串口发送给计算机。 3. 在Python中,你需要安装pyserial库来与Arduino进行串口通信。你可以在终端中运行以下命令来安装pyserial: ```python pip install pyserial ``` 4. 在Python代码中,导入pyserial库并连接到Arduino的串口。你需要确定Arduino连接到计算机的串口号,并将其作为参数传递给Serial函数。例如,如果串口号为COM3,代码如下所示: ```python import serial arduino = serial.Serial('COM3', 9600) ``` 5. 接下来,你可以使用arduino.readline()函数来读取来自Arduino的数据,并将其存储在变量中。例如,将温度数据存储在变量temperature中: ```python temperature = arduino.readline().decode('utf-8').rstrip() ``` 6. 确保你已经安装了MySQL Connector库,你可以在终端中运行以下命令来安装MySQL Connector: ```python pip install mysql-connector-python ``` 7. 在Python代码中,导入MySQL Connector库并连接到你的MySQL数据库。你需要提供数据库的主机地址、用户名、密码和数据库名称。例如: ```python import mysql.connector mydb = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" ) ``` 8. 创建一个游标对象,并使用execute()方法执行插入语句,将读取到的温度数据写入数据库中。例如: ```python mycursor = mydb.cursor() sql = "INSERT INTO temperature (value) VALUES (%s)" val = (temperature,) mycursor.execute(sql, val) mydb.commit() ``` 9. 最后,关闭数据库连接和串口连接。代码如下所示: ```python mycursor.close() mydb.close() arduino.close() ``` 以上是一个简单的Python代码示例,连接到Arduino UNO R3并将数据写入MySQL数据库。当你运行该代码时,你将能够读取到Arduino传感器的数据并将其存储在数据库中。请确保在代码中使用正确的串口号、主机地址、用户名、密码和数据库名称。 ### 回答3: 要使用Python代码连接Arduino UNO R3读取数据并将其写入MySQL数据库,您可以遵循以下步骤: 1. 确保您的Arduino UNO R3正确连接到计算机上,并且您已经安装了Arduino IDE来编程控制它。 2. 在Arduino IDE中,编写一个简单的程序来读取传感器数据并将其发送给计算机。例如,您可以使用Serial.println()函数将数据发送到串行端口。确保程序正常运行,并记下Arduino连接的串行端口号。 3. 在计算机上,确保您已经安装了Python和适当的MySQL连接库,比如mysql-connector-python使用pip install mysql-connector-python命令安装)。 4. 在Python代码中,导入所需的库和模块。例如:import serial(用于与Arduino通信)和import mysql.connector(用于与MySQL数据库通信)。 5. 建立与数据库的连接。使用mysql.connector.connect()函数,并提供数据库的用户名、密码、主机和数据库名称等详细信息。 6. 使用serial.Serial()函数在Python中创建一个串行对象,并传入串行端口号、波特率等参数来与Arduino通信。 7. 在一个无限循环中,使用serial.readline()函数从串行端口读取Arduino发送的数据。将数据转换为适当的格式(例如字符串或数字)。 8. 将读取的数据插入到MySQL数据库中。使用mysql.connector的insert语句,将数据插入到数据库中的适当表中。 9. 如果需要,确保及时地提交数据库更改。使用connection.commit()函数提交更改。 10. 关闭与串行端口和数据库的连接。使用serial.close()函数关闭与Arduino的连接,并使用connection.close()函数关闭与MySQL数据库的连接。 这些步骤是一个基本的指导,您可以根据您的需求进一步自定义和优化代码。也可以使用其他Python库和模块来实现此功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值