这是我的代码
import os
import sys
import serial
import datetime
string = datetime.datetime.now()
print(string)
ser = serial.Serial('COM4', 9600)
print(ser.name)
ser.write(string)
ser.close
我收到此错误
Traceback (most recent call last):
File "C:\Users\Михаил\Desktop\SW\Python 3.5\COM.py", line 9, in <module>
ser.write(string)
File "C:\Users\Михаил\AppData\Local\Programs\Python\Python35\lib\site-packages\serial\serialwin32.py", line 301, in write
data = to_bytes(data)
File "C:\Users\Михаил\AppData\Local\Programs\Python\Python35\lib\site-packages\serial\serialutil.py", line 61, in to_bytes
for item in seq:
TypeError: 'datetime.datetime' object is not iterable
答案 0 :(得分:1)
您应该将bytes
对象传递给ser.write()
,但您使用的是datetime.datetime.now()
datetime
对象。
您可以使用str()
将datetime对象强制转换为字符串。由于您使用的是Python 3,因此在将字符串写入串行设备之前,还需要将字符串转换为字节。
date_string = str(datetime.datetime.now())
dates_bytes = date_string.encode('ascii')
ser.write(date_bytes)
或者,如果您需要自定义格式,则可以使用strftime
date_string = datetime.datetime.now().strftime("%d/%m/%y")
date_bytes = date_string.encode('ascii')
ser.write(date_bytes)
答案 1 :(得分:0)
now()
返回DateTime对象而不是字符串。即使您可以打印它,也不能将其写入串行直接。在编写时使用str(string)
显式转换它。